jubourbon
Messages postés40Date d'inscriptionjeudi 6 mars 2008StatutMembreDernière intervention 3 juillet 2009
-
28 mai 2009 à 10:23
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
28 mai 2009 à 12:51
Bonjour,
J'essaye actuelement de réaliser un programme pour consulter, mettre à jour des informations dans une base de données SQL 2000.
Pour la consultation pas de pb, je recupere les infos, mais pour les mise à jour, j'ai un probleme, ca ne fonctionne pas et sa plante.
Voici l'erreur que Visual STudio me renvoi: La génération SQL dynamique de UpdateCommand n'est pas prise en charge pour un SelectCommand qui ne retourne pas des informations de colonne clé.
Je ne comprend pas bien ce qui ne va pas.
Voici mon code, en l'etat il ne sert à rien, c'est surtout pour tester les objet et leur fonction:
Dim
sConnectionStringed = "XXXXX"
Dim
Element As DataRow
Dim
queryString AsString = "SELECT * from Adaptors"
Using
Connection AsNew SqlClient.SqlConnection(sConnectionStringed)
Dim
Adapter AsNew SqlClient.SqlDataAdapter()
Dim
Marow As DataRow
Dim ObjetCommandBuilder As
SqlClient.SqlCommandBuilder
Adapter.SelectCommand =
New SqlClient.SqlCommand(queryString, Connection)
Adapter.Fill(DataSetInfo,
"Adapter")
For
Each Element In DataSetInfo.Tables("Adapter").Rows
ComboBox1.Items.Add(Element(0))
ComboBox3.Items.Add(Element(0))
If
mavar = "Adapter1"Then
Marow = Element
Element(0) =
"Adapter01"
ObjetCommandBuilder =
New SqlClient.SqlCommandBuilder(Adapter)
Adapter.Update(DataSetInfo,
"Adapter")
End
If
Next
DataSetInfo.Clear()
Adapter.Fill(DataSetInfo,
"Adapter")
Adapter =
Nothing
End
Using
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 mai 2009 à 12:51
Bonjour,
"La génération SQL dynamique de UpdateCommand n'est pas prise en charge pour un SelectCommand qui ne retourne pas des informations de colonne clé"
Je ne me suis pas bien penché sur ton code, mais au niveau du message d'erreur il semblerait que la commande UPDATE, ne soit pas prise en compte car la table retourné par ta commande SELECT ne comporte pas de clé primaire. de ce faite la mise à jour d'un ROW, ne peut pas se faire car le SqlDataAdapter ne peux pas identifié le ROW qu'il faut mettre à jour.
Exemple :
Si mon ROW1 possede les valeur suivantes :
ID = 0 ' Clé primaire
Nom = Taratara
et que je veux le remplacer par le ROW2:
ID = 1
Nom = Tartempion
La requêtre UPDATE va recherché dans la table le ROW à mettre à jour en identifiant celui ci par son ID. Or si la table ne compote pas de clé primaire, il faut présiser une clause WHERE, ainsi, la rêquête mettera à jour tous les ROW selon cette clause.
Après je pense que je peu me tromper mais je te conseille de définir une colonne de ta table en tant que clé primaire.