Frank19
Messages postés65Date d'inscriptionmardi 27 novembre 2001StatutMembreDernière intervention24 juin 2010
-
15 nov. 2002 à 22:29
TheShAmAn
Messages postés148Date d'inscriptionlundi 3 février 2003StatutMembreDerniè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 !
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 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;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Frank19
Messages postés65Date d'inscriptionmardi 27 novembre 2001StatutMembreDernière intervention24 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 !
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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