Pb de mise a jour de base de donnée

shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004 - 3 août 2004 à 11:07
senpiet Messages postés 15 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 10 mars 2005 - 11 août 2004 à 21:24
mon pb ce que je veux faire une mise a jour de ma base mias j ai une erreur ds le code ja i beau essayer je ne trouve pas.
je sais juste que l erreur ce trouve au moment ou je rempli ma dataset mais je ne comprend pas pkoi.

OleDbDataAdapter catDA = new OleDbDataAdapter("SELECT ack_level4_status, maj_date, maj_userid, pk_societe FROM pli", conn);
catDA.UpdateCommand new OleDbCommand("UPDATE pli SET ack_level4_status 1" +
"WHERE non_fichier_pdf = " + pli.Tables["pliss"].Rows[0][5].ToString() , conn);

catDA.UpdateCommand.Parameters.Add("@ack_level4_status", OleDbType.VarChar, 15, "ack_level4_status");

OleDbParameter workParm = catDA.UpdateCommand.Parameters.Add("@pk_societe", OleDbType.Integer);
workParm.SourceColumn = "pk_societe";
workParm.SourceVersion = DataRowVersion.Original;

DataSet catDS = new DataSet();
catDA.Fill(catDS, "pliss");
//
// DataRow cRow = catDS.Tables["pli"].Rows[0];
// cRow["ack_level4_status"] = "1";
// catDA.Update(catDS);

16 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 12:04
pour remplir ton data set ce code devrait suffir :

try
{
OleDbDataAdapter catDA = new OleDbDataAdapter("SELECT ack_level4_status, maj_date, maj_userid, pk_societe FROM pli", conn); 
DataSet catDS = new DataSet();
catDA.Fill(catDS, "pliss"); 
}
catch(Exception xcp)
{
MessageBox.Show(xcp.Message.ToString());
}


a condition que ton objet conn existe bien...

sinon c quoi ton message d'erreur ???

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 12:15
le pb c pas de remplir une dtaset sa je le sais j en est deja rempli deux autre ds mon code enfaite lorsque j arrive au moment ou je doit faire l update de ma base j essai de le faire par l intermediaire d une autre dataset donc je pense que j ai une erreur ds mon code au niveau de la maniere que j update.

si tu ne vois pas l erreur sur mon code aurrais tu au moins un exemple de comment updater une base de donner access que se soit de maniere indirect ou direct sur la base.
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 13:52
Voila comment définir un parametre sur une commande et l'affecter a ton dataadapter :

OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status 1 WHERE non_fichier_pdf = @NOM_FICHIER"  , conn);
int Taille_du_champ = 10;

OleDbParameter nom_fichier = new OleDbParameter("@NOM_FICHIER", System.Data.OleDb.OleDbType.VarChar,Taille_du_champ, "pk_societe");

UpdateCmd.Parameters.Add(nom_fichier);

catDA.UpdateCommand = UpdateCmd ;



pour que la methode update du dataadapter fonctionne bien il faut aussi implementer les InserCommand et DeleteCommand de ton dataadapter (idem a ton UpdateCmd mais avec des parametre différent et requete differente...

apres une fois tout cela fait du peu lancer l'update sur ton dataset...

par contre tu dis que tes modifs sont stocker dans un autre dataset ????

le mieux c'est de charger ton dataset..modifier les données de ce dataset et lancer un update sur le même dataset...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 14:18
je suis obliger des crée des parametre insert et delete pour pouvoir faire un update je comprend pas trop pourquoi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 14:21
car je veux juste changer une valeur existante
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 14:23
bah si c juste pour faire un update alors oui ca devrait suffir mais si jamais tu fais un delete dans ton dataset et que le DeleteCommand est pas rempli.....gare aux exeptions...

:o))))

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 14:40
donc juste pour voir si j ai bien compris

si je veux mettre le champs ack_level4_status a 1

je fait :
OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status 1 WHERE non_fichier_pdf = @NOM_FICHIER" , conn);
int Taille_du_champ = 1;

OleDbParameter nom_fichier = new OleDbParameter("ack_level4_status", System.Data.OleDb.OleDbType.VarChar,Taille_du_champ, ????(la j ai du mal a voir ce qu il faut es ce le nom de la table ou du champs));

UpdateCmd.Parameters.Add(nom_fichier);

catDA.UpdateCommand = UpdateCmd ;
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 14:48
nop c pas ca tu veux rendre quoi parametrable ton where ou ton set de l'update ...parcque la ta fais un melange des deux....
le code que je t'ai donner rendais parametrable le where (en l'occurrence le non_fichier_pdf...
le Taille_du_Champ doit correspondre a la taille du champ dans la base pour le champ non_fichier_pdf...

OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status 1 WHERE non_fichier_pdf =  LE NOM DE TON PARAMETRE " , conn);
int Taille_du_champ  = 10;

OleDbParameter nom_fichier =  new OleDbParameter(" LE NOM DE TON PARAMETRE ", System.Data.OleDb.OleDbType.VarChar,LE TAILLE DE TON CHAMP, "LE NOM DU CHAMP DE TON DATASET QUI DOIT REMPLIR LA VALEUR DE TON PARAMETRE");

UpdateCmd.Parameters.Add(nom_fichier);

catDA.UpdateCommand  = UpdateCmd ;


Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 14:52
moi ce que je veux updater c est la valeur de ack_level4_status par rapport au fichier que l on est entrain de traité
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 15:01
OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status @LEVEL_STATUS WHERE non_fichier_pdf = @NOM_FICHIER" , conn);

OleDbParameter nom_fichier = new OleDbParameter("@NOM_FICHIER", System.Data.OleDb.OleDbType.VarChar, 1, "SOURCE_COLUMN CORRESPONDANT A NOM_FICHIER");
OleDbParameter level_status= new OleDbParameter("@LEVEL_STATUS", System.Data.OleDb.OleDbType.VarChar, 1, "SOURCE_COLUMN CORRESPONDANT A LEVEL_STATUS");

UpdateCmd.Parameters.Add(nom_fichier);
UpdateCmd.Parameters.Add(level_status);

catDA.UpdateCommand = UpdateCmd ;


Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 15:19
voila ce que je fait mais il update rien la valeur ds ma base reste inchanger
OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status 1 WHERE non_fichier_pdf = 0332003364PLI000184.pdf" , conn);

OleDbParameter level_status= new OleDbParameter("1", System.Data.OleDb.OleDbType.VarChar, 1, "ack_level4_status");

UpdateCmd.Parameters.Add(level_status);

myDataAdapter.UpdateCommand = UpdateCmd ;
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 15:26
juste une question tu veux faire un update via un dataadapter ou tu veux juste mettre a jour ponctuellement ta base pacque sinon tu fais juste :

OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status 1 WHERE non_fichier_pdf = 0332003364PLI000184.pdf" , conn);

conn.Open();
UpdateCmd.ExecuteNonQuery();
conn.Close();


Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 15:34
lorsque j essais d executer directement la commande j ai le droit a ca :

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
3 août 2004 à 17:47
Y doit manquer des simples quotes...
(sous reserve que tes champs soit en varchar...)
peuetre que le level status est un numerique alors la ne met pas de ' autour du 1....

try
{OleDbCommand UpdateCmd new OleDbCommand("UPDATE pli SET ack_level4_status '1' WHERE non_fichier_pdf = '0332003364PLI000184.pdf'" , conn);

conn.Open();
UpdateCmd.ExecuteNonQuery();
conn.Close();
}
catch(Exception xcp)
{
MessageBox.Show(xcp.Message.ToString());
}


Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
senpiet Messages postés 15 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 10 mars 2005
11 août 2004 à 20:57
Salut,

j'ai eu le même problème mais en VB .Net. Ce n'est pas la même chose mais ma solution pourrait aider.

En fait, j'ai été très con (si, si) et j'ai oublié de passer l'ID (clé primaire) avec les infos à mettre à jour. Du coup, impossible pour le Update de savoir où changer quoi... dès lors, on a cette exception qui n'indique rien de plus:

'System.Data.OleDb.OleDbException'

voilà. Si c'est ça c'est beau, sinon, bonne merde ;-)
0
senpiet Messages postés 15 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 10 mars 2005
11 août 2004 à 21:24
mwouais... je reprends, connerie pure ... ne lis pas mon précédent message. J'étais sur que c'était la solution.

Chez moi ça replante après avoir fonctionné quelques fois... aaahhh l'info ! >:)
0
Rejoignez-nous