Probleme de mise à jour dans base de données

Résolu
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009 - 28 mai 2009 à 10:23
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Derniè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

D'avance merci pour vos conseils.

2 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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.

@+ Mayzz
3
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009
28 mai 2009 à 10:36
Il y a une erreur dans le code que j'ai copié, mavar est en fait Element(0), mais ca ne change rien au probleme.
0
Rejoignez-nous