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