Update à partire d'un dataset pour Update complexe

Signaler
Messages postés
43
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
20 avril 2007
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Bonjour,

J'ai un problème sur l'update d'un dataSet car mon update est un peu complexe. Il faut alors construire la requete et l'intégrer dans le OdbcDataAdapter.
Pour cela j'ai fait une requete simple pour tester et ca ne marche pas : UPDATE Table SET TableId ValeurModifier WHERE TableId ValeurInit.

Qqn a une idée comment faire :question)

Voici mon code :

//déclaration des variables
OdbcConnection myConn;
OdbcDataAdapter myAdapter;
OdbcCommand com ;
DataSet myDs = new DataSet();

//connection et  remplissage du dataset par un select
com = new OdbcCommand(strRequeteP,myConn);
myAdapter.SelectCommand = com;
myAdapter.Fill(myDs);

//création de la requete UPDATEmyAdapter.UpdateCommand new OdbcCommand("UPDATE Table SET TableId ? " + "WHERE TableId = ?" , myConn);

myAdapter.UpdateCommand.Parameters.Add("@TableId ", OdbcType.VarChar, 200, "TableId");
OdbcParameter workParm = myAdapter.UpdateCommand.Parameters.Add("@TableId ", OdbcType.VarChar,200);

//exécution de l'UPDATE , MAIS CA PLANTE
myAdapter.Update(myDs);

4 réponses

Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
je pense qu'y faut mettre :

//création de la requete UPDATEmyAdapter.UpdateCommand new OdbcCommand("UPDATE Table SET TableId ? " + "WHERE TableId = @TableId" , myConn);


A la place de :

//création de la requete UPDATEmyAdapter.UpdateCommand new OdbcCommand("UPDATE Table SET TableId ? " + "WHERE TableId = ?" , myConn);


et oter les espaces apres le @tableid dans ton add parameter....

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
43
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
20 avril 2007

J'ai pas encore essayé ta modife.
Mais à quoi sert le "@" devant les noms de colonnes????
S'il est là c'est pas pour décorer!!

X.
Messages postés
43
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
20 avril 2007

Yahouuuuuu
j'ai trouvé un exemple dans MSDN. Je n'avais pas remarqué qu'il y avait l'exemple qui me fallait preque au mot près ?-) .

Je pense que ce qui est important c'est
Myparameter.SourceVersion = DataRowVersion.Original;
a mettre juste après le add de la contrainte.

dans MyCommande.Parameters.Add("ParametreName", OdbcType.Text, 100, "TableId"); , on peut apparemment mettre dans PrametreName ce que l'on veut.

Merci Arthenius d'avoir pris le temps de m'envoyer une réponse. C'est drole mais ca ma remotivé à chercher car j'allais abandonnner :) :)

code du msdn :

//déclaration variables
OdbcDataAdapter da  = new OdbcDataAdapter();
OdbcCommand cmd;
OdbcParameter parm;

//construction de la requete  cmd new OdbcCommand("UPDATE Customers SET CustomerID ?, CompanyName = ? " +
                       "WHERE CustomerID = ?", conn);

//ajout des parmètres
  cmd.Parameters.Add("@CustomerID", OdbcType.NChar, 5, "CustomerID");
  cmd.Parameters.Add("@CompanyName", OdbcType.NVarChar, 40, "CompanyName");

//pour la contrainte de la requete
  parm = cmd.Parameters.Add("@oldCustomerID", OdbcType.NChar, 5, "CustomerID");
   parm.SourceVersion = DataRowVersion.Original; 

 da.UpdateCommand  = cmd;
 da.Update(myDs);
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
:) de rien...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."