Probleme de mise à jour dans base de données [Résolu]

Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009
- - Dernière réponse : Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
- 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.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
16
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mayzz
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009
0
Merci
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.
Commenter la réponse de jubourbon