Probleme avec DataAdapter.Update [Résolu]

cs_winni 9 Messages postés dimanche 27 avril 2003Date d'inscription 26 mai 2008 Dernière intervention - 26 avril 2007 à 17:19 - Dernière réponse : l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention
- 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")

 

 
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_winni 9 Messages postés dimanche 27 avril 2003Date d'inscription 26 mai 2008 Dernière intervention - 27 avril 2007 à 00:38
3
Merci
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.

Merci cs_winni 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.