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

jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 28 mai 2009 à 10:23 - Dernière réponse : Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention
- 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 

Votre réponse

2 réponses

Meilleure réponse
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 mai 2009 à 12:51
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

Merci Mayzz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Mayzz
jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 28 mai 2009 à 10:36
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

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.