Update à partire d'un dataset pour Update complexe

xerque Messages postés 43 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 20 avril 2007 - 21 mai 2004 à 19:18
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 25 mai 2004 à 08:43
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);

A voir également:

4 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
24 mai 2004 à 10:15
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..."
0
xerque Messages postés 43 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 20 avril 2007
24 mai 2004 à 21:18
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.
0
xerque Messages postés 43 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 20 avril 2007
24 mai 2004 à 22:41
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);
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
25 mai 2004 à 08:43
:) de rien...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
Rejoignez-nous