Probleme avec DataAdapter.Update

Résolu
cs_winni Messages postés 9 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 mai 2008 - 26 avril 2007 à 17:19
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012 - 24 avril 2008 à 18:23
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")

 

 

4 réponses

cs_winni Messages postés 9 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 mai 2008
27 avril 2007 à 00:38
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.
surfeurX Messages postés 30 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 26 septembre 2008
26 avril 2007 à 22:45
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
cs_winni Messages postés 9 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 mai 2008
26 avril 2007 à 22:58
Comment ça ?
Je ne suis pas un pro de ces commandes.
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
24 avril 2008 à 18:23
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.
Rejoignez-nous