Passer en paramêtre d'une requête sql, une variable.

tifil Messages postés 55 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 31 mars 2013 - 25 févr. 2012 à 15:11
tifil Messages postés 55 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 31 mars 2013 - 28 févr. 2012 à 16:19
Bonjour,

Je cherche comment passer en paramètre d'une requête sql, une variable que je récupère d'un champ de texte situé sur ma fenêtre.
Dans ma fenêtre, j'ai un champ de saisie de texte, je créer donc une variable pour récupérer cette valeur.
Je créer donc une requête sql pour supprimer de ma table une personne en fonction de la valeur que j'ai rentrée, qui correspond a son nom.
Voici ma requête:

sprintf (query2, "DELETE FROM 'cadres' WHERE nom=%d",nom_suppr);


J'ai initialisé query2 en tant que char, char query2[255];

Donc, ma question est, comment passer en paramètre ma variable ?

nom_suppr étant le nom de ma variable que je saisie sur ma fenêtre.

Merci d'avance pour votre aide.

8 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
27 févr. 2012 à 13:37
Salut

si nom_suppr est une chaine alors il faut mettre %s et pas %d

de plus il manque les quotes :

sprintf (query2, "DELETE FROM \'cadres\' WHERE nom=\'%s\'", nom_suppr);


il faut aussi doubler les quotes si il y en a dans nom_suppr sinon cela va planter.
0
tifil Messages postés 55 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 31 mars 2013
27 févr. 2012 à 14:58
Je viens d'essayer mais ça n'efface malheureusement pas.

Dans mon code, j'affiche dans un message box, la requête sql, et il n'affiche pas la valeur après le nom=
J'affiche aussi la valeur de ma variable nom_suppr, qui doit contenir ce que j'ai saisie, mais il n'affiche rien dans le message box.

Donc, je ne vois pas du tout d'où peut venir l'erreur.
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
28 févr. 2012 à 14:00
Pourtant elle semble dans la question :

J'affiche aussi la valeur de ma variable nom_suppr, qui doit contenir ce que j'ai saisie, mais il n'affiche rien dans le message box.


regarder donc du côté de la fonction de saisie, non?
0
tifil Messages postés 55 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 31 mars 2013
28 févr. 2012 à 14:53
La fonction de saisie, il y en a pas, j'ai juste un champ sur ma fenêtre, et je récupère cette valeur via une variable.
0

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

Posez votre question
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
28 févr. 2012 à 15:07
j'ai juste un champ sur ma fenêtre, et je récupère cette valeur via une variable


comment? (si tu ne peux pas même afficher cette valeur c'est, je pense, qu'elle est mal -voire pas- lue...)
0
tifil Messages postés 55 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 31 mars 2013
28 févr. 2012 à 15:20
Il y a les contrôles DDX/DDV qui se font via ce code:

void SupprimerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1_SUPPR, nom_suppr);
}
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
28 févr. 2012 à 15:54
Bon je ne suis pas du tout calé en (GUI déjà) DDX
mais je vois qu'il y a bien une fonction qui va lire ta saisie...

Et donc as-tu contrôlé
que c'est bien appelé (UpdateData peut-être, quand tu appuies sur le bouton, s'il en est...)?
que nom_suppr est bien renseigné à ce moment là (via un message en console à côté par exemple)?
0
tifil Messages postés 55 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 31 mars 2013
28 févr. 2012 à 16:19
Merci beaucoup l'ami, j'ai effectivement mis le UpdateData=true, et maintenant ça marche.
Merci encore
0
Rejoignez-nous