Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#20
  Alt 7. Nov 2002, 10:51
Hallo m-werk,

zum Testen solltest du mindestens einen Eintrag in die Personentabelle und einen passenden Eintrag in die Passwoerter Tabelle schreiben.

Du solltest das Login Formular von der automatischen Erstellung ausnehmen (Projekt|Optionen...).

Im Projektquelltext solltest du dann so was ähnliches wie das hier machen:

Delphi-Quellcode:
  Application.Initialize;
  frmLogin := TfrmLogin.Create(Application);
  if (frmLogin.ShowModal = 1) and frmLogin.PasswortOK then
  begin
     Application.CreateForm(TForm1, Form1);
     Application.Run;
  end
  else
     Application.Terminate;
Das Programm startet damit nur, wenn der Benutzer OK im Login angeklickt hat und das Passwort stimmt.

Im Passwortdialog muss das natürlich überprüft werden. Das könnte z.B. so funktionieren:

Delphi-Quellcode:
procedure TfrmLogin.BitBtn1Click(Sender: TObject);
begin
   if Trim(ePasswort.Text) = 'then
   begin
      MessageDlg('Bitte gültiges Passwort eingeben.', mtInformation,
                 [mbOK], 0);
      ActiveControl := ePasswort;
      ModalResult := mrNone;
      EXIT
   end;
   PasswortOK := False;
   qryCheck.Close;
   if Trim(cbUser.Text) <> 'then
   begin
      qryCheck.ParamByName('name').AsString := cbUser.Text;
      try
         qryCheck.Open;
         if UpperCase(Trim(qryCheckPasswort.Value)) =
            UpperCase(Trim(ePasswort.Text)) then
            PasswortOK := True
         else begin
            PasswortOK := False;
            MessageDlg('Passwort stimmt nicht.', mtError, [mbOK], 0);
            ModalResult := mrNone;
         end;
      except
         on exception do
         begin
             MessageDlg('User nicht gefunden.', mtError, [mbOK], 0);
            PasswortOK := False;
         end
      end
   end
   else begin
      MessageDlg('Bitte gültigen User auswählen.', mtError, [mbOK], 0);
      PasswortOK := False;
   end;
   qryCheck.Close;
end;
Dabei hätte das Loginformular eine ComboBox mit den verfügbaren Usern und eine Query zum Überprüfen des Passwortes, die wie folgt aussehen würde:

Code:
SELECT Passwort FROM passwoerter W
    WHERE W.personalnummer =
       (SELECT personalnummer, name FROM personen
          WHERE name = :name)
So weit alles klar?

Ach ja, die ComboBox könntest du füllen über:

Delphi-Quellcode:
procedure TfrmLogin.FormActivate(Sender: TObject);
begin
   qryUser.Close;
    qryUser.Open;
   cbUser.Clear;
   if qryUser.RecordCount = 0 then
      cbUser.Items.Add('Kein User definiert.')
   else begin
      cbUser.Items.Add('Bitte User auswählen.');
      while not qryUser.EOF do
      begin
         cbUser.Items.Add(qryUserName.Value);
         qryUser.Next
      end
   end;
   cbUser.ItemIndex := 0;
end;
wobei die qryUser wie folgt definiert sein könnte:

Code:
SELECT Name FROM Personen P, Passwoerter W WHERE
   P.Personalnummer=W.Personalnummer
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat