cs_winni
Messages postés9Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 mai 2008
-
26 avril 2007 à 17:19
l0r3nz1
Messages postés218Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention17 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)
'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")
surfeurX
Messages postés30Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention26 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
l0r3nz1
Messages postés218Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention17 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.