Bonjour,
le Locate n'est pas fait pour ça, du moins sous cette forme car telle qu'écrite il s'agit de deux recherches différentes et non la recherche du couple utilisateur/mot de passe. De plus pour ce faire vous ouvrez la table entière ce qui n'est pas vraiment une bonne chose il vaut mieux comme le dit Retwas passer par une requête.
Ne sachant pas quel set de composants d'accès à la base est utilisé, ni la version de Delphi, ni encore si le motdepasse est crypté je propose quelque chose de générique
comme il y a un appel vers une autre forme (ce qui n'est pas très joli) je propose même une version plus "propre" en utilisant une fonction déclarée dans l'évènement. Bien sur il faudra remplacer le TQuery par le bon composant et faire le nécessaire pour que celui-ci soit connecté à la base , c'est donc un code plus que générique que je propose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| procedure ValiderOnClick(Sender : TObject);
function CheckUser : Boolean
var AQuery : TQuery
begin
AQuery:=TQuery.Create(nil);
try
AQuery.Connexion:=Database1; // à modifier en fonction du type de composant
AQuery.SQL.Text:='SELECT USER_NAME,MOTDEPASSE FROM USERS WHERE USER_NAME=:U AND MOTDEPASSE=:MDP';
AQuery.ParamByName('U').asString:=Edit1.Text; // à modifier en fonction du type de composant
AQuery.ParamByName('MDP').asString:=Edit2.Text; // à modifier en fonction du type de composant
AQuery.Active:=True;
result:=not AQuery.FieldByName('USER_NAME').isNull; // @retwas pas besoin du count ;)
AQuery.Close;
finally
AQuery.Free;
end;
end;
begin
if not CheckUser then showmessage('mot de passe incorrect')
else Form2.show;
end; |
J'ai délibérément mis un SQL explicite, deux colonnes récupérées mais un SQL de ce genre
SELECT 1 FROM USERS WHERE USER_NAME=:U AND MOTDEPASSE=:MDP
aurait pu fonctionner
petit ps. Attention à l'orthographe, sans être tatillon, il y a des mots et de la grammaire qui choquent !
mot de passe incorrecte
base de données
de ce bouton
etc...
c'est peut être pas grand chose que l'orthographe et la grammaire mais dans une application pro cela choquera le client final , prenez donc de bonnes habitudes
Partager