Probleme avec DataAdapter.Update

Résolu
Signaler
Messages postés
9
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 mai 2008
-
Messages postés
218
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
17 mars 2012
-
Bonjour,
Je suis un peu sec , j'arrive pas a trouver pourquoi l'update ne passe pas.
Erreur : Erreur de syntaxe dans l'instruction INSERT INTO.
L'ecriture dans le dataset fonctionne bien ( vérifié en mode debug ).
Si une ame charitable pouvait me donner des pistes.
Merci

Mes déclarations ( dans un module declarations ) :

' ‚claration Objet Connexion
Public ObjetConnection
As OleDbConnection

' D‚claration Objet Commande
Public ObjetCommand
As OleDbCommand

' D‚claration Objet DataAdapter
Public ObjetDataAdapter
As OleDbDataAdapter

' D‚claration Objet DataSet
Public ObjetDataSet
As
New DataSet()

'String contenant la 'Requˆte SQL'
Public strSql
As
String
' D‚claration Objet DataTable
Public ObjetDataTable
As DataTable

' D‚claration Objet DataRow (ligne)
Public ObjetDataRow
As DataRow

'Num‚ro de la ligne en cours
Public RowNumber
As
Integer
'Num‚ro de l'enregistrement courant
'Paramˆtres de connexion … la DB
Public strConn AsString
'Pour recompiler les donn‚es modifi‚es avant de les remettre dans le '"DataAdapter"
Public ObjetCommandBuilder As OleDbCommandBuilder

La connexion :
PublicSub connection_DB(ByVal Table AsString)

'Initialisation de la chaŒne de paramŠtres pour la connexion
strConn =
"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source='" & AppPath(
True) &
"Ged.mdb" &
"'"
'Initialisation de la chaŒne contenant l'instruction SQL
strSql =
"SELECT " & Table &
".* FROM " & Table

'Instanciation d'un Objet Connexion
ObjetConnection = New
OleDbConnection()
'Donner … la propri‚t‚ ConnectionString les paramŠtres de connexion
ObjetConnection.ConnectionString = strConn

'Ouvrir la connexion
ObjetConnection.Open()

'Instancier un objet Commande
ObjetCommand = New
OleDbCommand(strSql)

'Instancier un objet Adapter
ObjetDataAdapter = New
OleDbDataAdapter(ObjetCommand)

'initialiser l'objet Command
ObjetCommand.Connection() = ObjetConnection

'Avec l'aide de la propri‚t‚ Fill du DataAdapter charger le DataSet
ObjetDataAdapter.Fill(ObjetDataSet, Table)

'Mettre dans un Objet DataTable une table du DataSet
ObjetDataTable = ObjetDataSet.Tables(Table)

End
Sub
Et enfin l'écriture avec la mise à jour :

' insertion dans la base T_Ged_Ana
ObjetDataRow = ObjetDataSet.Tables("T_Gedana"
).NewRow()
ObjetDataRow(
"xref") = T_Ged_Ana.xref
ObjetDataRow("tagco"
) = T_Ged_Ana.tagco
....

ObjetDataSet.Tables(
"T_Gedana").Rows.Add(ObjetDataRow) Tout es ok jusque là.

'Pour modifier les valeurs chang‚es dans le DataAdapter
ObjetCommandBuilder =
New OleDbCommandBuilder(ObjetDataAdapter)

'Mise … jour
ObjetDataAdapter.Update(ObjetDataSet,
"T_Gedana")     ---> Ici plantage

'On vide le DataSet et on le 'recharge' de nouveau.
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet,
"T_Gedana")
ObjetDataTable = ObjetDataSet.Tables(
"T_Gedana")

 

 
A voir également:

4 réponses

Messages postés
9
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 mai 2008

Probleme solutionné, je suis vert de rage !!!!!

En fait j'ai ceci dans mon code :
ObjetDataRow("level"
) = T_Ged_Ana.xref

J'ai remplacé level par niveau et le champ dans la base access et cela fonctionne.

C'est bizarre car d'habitude Access dit quand il n'aime pas le nom des champs comme Date par exemple.

Bon, je vais pouvoir me coucher , et m'amuser demain avec mes requetes SQL.
Messages postés
30
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
26 septembre 2008

l'update ne passe pa parce que l'objet commandBuilder ne la genere pa ... enfin c ce ki me parait logik tu peu essayer en ecrivant toi meme la command avec ton dataAdapter.insertCommand   bonne chance
Messages postés
9
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 mai 2008

Comment ça ?
Je ne suis pas un pro de ces commandes.
Messages postés
218
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
17 mars 2012

ce dataAdapter.insertCommand c'est plutot pour creer directement une commande insert, ce qui est plutôt dommage quand on peut utiliser des dataset et les mettre a jour ensuite ou alors tu parle de faire un truc du genre mondataadapter.InsertCommand = moncommanbuilder.GetInsertCommand
puis ( ca me genere des ereurs)
mondataadapter.DeleteCommand = moncommanbuilder.GetDeleteCommand
mondataadapter.UpdateCommand = moncommanbuilder.GetUpdateCommand
et ensuite

Try
If dst.HasChanges Then
dad.ContinueUpdateOnError = True
MsgBox(" maj : " & dad.Update(dst, table)) 'Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.
Else
MsgBox("aucun changement")
End If

Catch ex As Exception
MsgBox(ex.ToString)
End Try
cela dit c'est sur sql server et ca marche pas pour, je ne sais pas encore pourquoi mais ca va venir.