Ajouter ou modifier avec une requete

Frank19 Messages postés 65 Date d'inscription mardi 27 novembre 2001 Statut Membre Dernière intervention 24 juin 2010 - 15 nov. 2002 à 22:29
TheShAmAn Messages postés 148 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 1 février 2006 - 10 mars 2003 à 15:50
Bon jessaie de modifier un champs dans ma base de donnée et sa marche pas ben ben voici mon code

Query_connection.SQL.Clear;Query_connection.SQL.Add('UPDATE personne.db set Actif "oui" where (nom_usager edit_nom_usager.Text) and (mot_de_passe = edit_mot_de_passe.Text');
Query_connection.ExecSQL;

la jpense que c'est le edit_nom_usager.Text et edit_mot_de_passe.Text que la requete SQL n'aime pas ... est-ce que jdevrais utilisé les DBEdit ?! si comme y marche ?
Merci !

7 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
15 nov. 2002 à 22:57
Si c'est écrit tel que, je comprend que ton PC n'aime pas !! Les Edit n'ont rien à voir avec ton problème, tu inséres "edit_nom_usager.text" dans la chaine et non pas le contenu du Edit. Il faut écrire :Query_connection.SQL.Add('UPDATE personne.db set Actif "oui" where (nom_usager "'+edit_nom_usager.Text+'") and (mot_de_passe = "'+edit_mot_de_passe.Text+'"');

( attention aux guillement simple et double )
Dans ce genre de requète, utilise des paramètres :Query_connection.SQL.Add('UPDATE personne.db set Actif "oui" where (nom_usager :Usager and (mot_de_passe = :MotPasse');
Query_connection.ParamByName('Usager').AsString:=edit_nom_usager.Text;
Query_connection.ParamByName('MotPasse').AsString:=edit_mot_de_passe.Text;

--- :sleepy) Nono du Moulin :sleepy) ---
0
Frank19 Messages postés 65 Date d'inscription mardi 27 novembre 2001 Statut Membre Dernière intervention 24 juin 2010
16 nov. 2002 à 05:06
Un gros Merci :) Tout fonctionne maintenant :)
0
Frank19 Messages postés 65 Date d'inscription mardi 27 novembre 2001 Statut Membre Dernière intervention 24 juin 2010
16 nov. 2002 à 05:18
hum pour ajouter .. est-ce que tu procede de la meme facon .. en déclarant des params ?!
si oui la syntaxe ressemble a quoi ?
Merci !
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 nov. 2002 à 09:28
Attention aux guillemets qui pouraient être introduits dans les valeurs passées à la chaine de requête !
Pour éviter ces désagréments, je recommande l'emploi de la fonction QuotedStr qui analyse la chaine reçue en paramètre et renvoie une chaîne correctement délimitée.
Supposons que edit_nom_usager.text = 'Franck"19',
alors, ta requête plante à coup sûr.

Pour info :
Query.Sql.Clear + Query.Add('requete') peut être avantageusement remplacé par :
Query.Text := 'requete';

May Delphi be with you
0

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

Posez votre question
Frank19 Messages postés 65 Date d'inscription mardi 27 novembre 2001 Statut Membre Dernière intervention 24 juin 2010
16 nov. 2002 à 19:34
Delphiprog, jen arrache pas mal présentement avec les Query dans Delphi... tout ce que jai réussi a date c faire des select simple et un Update.

jai des edit.text et c edit.text contienne des valeur que je veux ajouter dans ma base de donnée.
Comment jm'y prends ? Avec des parametres ? Directement dans ma requête ?

autre trouble :
et ya aussi le fait que je fais comme un LOGIN ... jdois vérifier si le user existe dans la base et que son mot de passe est correct. Si oui je change la valeur Actif pour "oui" qui est une string au lieu de "non"
autrement si le user existe pas ou que le mot de passe n'est pas bon, jaffiche un message.

as tu une facon de faire ?
merci de m'aider dans cette nouvelle matière pour moi !
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 nov. 2002 à 20:08
Pour passer des valeurs à une requête, il y a plusieurs façons de procéder :
-> Soit en concaténant des chaînes comme tu as commencé à le faire
-> soit en utilisant des paramètres variables comme l'a expliqué Nono40
-> soit en utilisant une chaine formatée :
ex. : QueryString = 'update personne set actif="oui" where nom_usager = %s and mot_de_passe = %s';
Query_connection.Text := Format(QueryString, [QuotedStr(edit_nom_usager.Text), QuotedStr(edit_mot_de_passe.Text)]);

Pour ajouter des enregistrements à ta table (ici, une seule table à mettre à jour), tu utilises la commande Insert :
INSERT INTO nomDeTable [(nomChamp1 [,nomChamp2]...)] VALUES (valeur1[, valeur2]..)

Remarques :
-> les noms indiqués entre crochets sont facultatifs
-> si tu mets les noms des champs, alors il doit y avoir autant de valeurs que de noms de champs
-> de même que pour toutes les autres requêtes, les valeurs chaînes doivent être délimitées.

Le LOGIN : question mise en attente (faut que je mange de temps en temps :big) ). A tout à l'heure.
May Delphi be with you
0
TheShAmAn Messages postés 148 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 1 février 2006
10 mars 2003 à 15:50
Pr les Edit.text, tu les mets ds ta requete :
ex : ... nom = ''' + Edit1.text + '''... etc

Sinon, pr ton Login, il ne serait po plus imple d'utiliser un BOOLEEN??? Je pense ke oui ;)

"La programmation c bien,
En abuser ca craind..."
(faites le en rythme, ca donne :p )

-------------------------------
0
Rejoignez-nous