Verification de données sur une bdd

Résolu
Signaler
Messages postés
6
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 février 2007
-
Messages postés
6
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 février 2007
-
slt tt le monde !
voila je suis debutant en delphi, je suis entrain de faire mon 1er programme, et je cherche comment veriffier 2 données a partir d'un maskedit sur une base de donnée oracle.
voici le resumé :
la table "user" contien :
nom_utilisateur  =====> le nom d'utilisateur
passe            =====> le mot de passe
code            =====> 1 pour admin, 2 pour invité


la fiche contien :
maskedit1  ====> nom d'utilisateur
maskedit2  ====> mot de passe
bouton    ====> bouton OK pour accedé a l'application


alors je veux :
1- verifier le nom d'utilisateur et le mot de passe
2- si le les données existe sur la table
3- avoire le code qui les precede (1 ou 2)


si 1 : form1.show
si 2 : form2.show


voila j'espere que g ete clair




merci d'avance a tous de m'aidé et bon courage pour vos programmes

5 réponses

Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut,

Pour t'expliquer, je vais supposer que ta fiche principale s'appelle Form1 et que tes composants TTable, TDataSource ont été placés sur cette fiche (ce qui n'est pas l'idéal pour entrer un mot de passe, mais enfin...). Idem pour les MaskEdit et les BitBtn.

Tu as une base de données avec comme nom de champs : 'nom_utilisateur', 'passe', 'code'.
ex : 'Albert', 'XKG23', '1'. Je suppose que ton champ 'code' est de type numérique entier.

Tu insères dans le code de Unit1 (l'unité de Form1) la fonction suivante :

function TForm1.CheckUser(UserName, UserPassWord: string): integer;
begin
  Result:= -1; // valeur renvoyée si nom non trouvé ou mot de passe incorrect
  TUser.First; // on se met sur le premier enreg de la table
  // on va rechercher dans la table le nom d'utilisateur.
  // on emploie pour cela la fonction Locate qui renvoie true si trouvé.
  if TUser.Locate('Nom_utilisateur', UserName, []) then // on a trouvé l'enregistrement
  begin
     // on regarde si le mot de passe est correct en consultant la valeur du champ 'passe'
    // FieldByName('passe').asStr renvoie en string la valeur du champ 'passe'
    if TUser.FieldByName('Passe').asString = UserPassWord then
      // le mot de passe est correct
      // la fonction renvoie alors la valeur du champ 'code' en valeur numérique(1,2,3...)
      Result:= TUser.FieldByName('Code').asInteger
    else
      // le nom est bon, mais pas le mot de passe
      ShowMessage('Mot de passe incorrect');
  end
  else
     // le nom utilisateur n'est pas trouvé
     ShowMessage('Nom utilisateur inconnu');
end;

Tu dois déclarer cette fonction dans la section private de Form1

type
  TForm1 = class(TForm)
   ...
  private
      function CheckUser(UserName, UserPassWord: string): integer;

Tu as créé un évenement OnClick pour ton BitBtn4 (bouton Ok)

procedure TForm1.BitBtn4Click(Sender: TObject);
var
  R: integer;
begin
     R:= CheckUser(MaskEdit1.Text, MaskEdit2.Text);
     case R of
          1 :  Form2.Show; // code administrateur
          2 : Form3.Show;  // code invité
      end;  
end;


Voilà, je ne peux pas être plus clair. Consulte l'aide Delphi sur TTable ou Locate... pour avoir des infos supplémentaires.

A +
Thierry
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut,

Voici une fonction qui recherche le nom et vérifie le mot de passe. Si tout est Ok, elle renvoie le code associé, sinon elle renvoie -1.

function TForm1.CheckUser(UserName, UserPassWord: string): integer;
begin
  Result:= -1;
  Table1.First;
  if Table1.Locate('Nom_utilisateur', UserName, []) then
  begin
    if Table1.FieldByName('Passe').asString = UserPassWord then
      Result:= Table1.FieldByName('Code').asInteger
    else
      ShowMessage('Mot de passe incorrect');
  end
  else
     ShowMessage('Nom utilisateur inconnu');
end;

exemple d'appel :

procedure TForm1.Button1Click(Sender: TObject);
var
  R: integer;
begin
     R:= CheckUser(MaskEdit1.Text, MaskEdit2.Text);
     case R of
          1 : ...
          2: ....
         -1: ....
     end;  
end;

A +
Thierry 
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut,

Je veux bien t'expliquer plus en détail, mais dis-moi d'abord si tu emploies un composant TTable (unit dbtables) pour te connecter à ta base de données et si la connection est ok.

A +
Thierry
Messages postés
6
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 février 2007

bonjours, tout dabord merci de m'aidé car t le seul a repondre a mon aide.
j'utilise un composant "Ttable" et un autre "Tdatasource" mon application se connecte tres bien a la base de donnees.
donc :
MaskEdit1: TMaskEdit  ===========> nom d'utilisateur
MaskEdit2: TMaskEdit  ===========> mot de passe
BitBtn4: TBitBtn             ===========>ok
BitBtn1: TBitBtn             ===========>Annuler
DataSuser: TDataSource
Tuser: TTable
voila tout.
et encore merci pour ton aide.
Messages postés
6
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 février 2007

salut, voila la fonction a tres tres bien fonctioné.
merci baucoup thierry pour ton merci.