Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Arbeitszeitaufzeichnung - Ideen sind gefragt! (https://www.delphipraxis.net/1141-arbeitszeitaufzeichnung-ideen-sind-gefragt.html)

MrSpock 17. Nov 2002 16:22

Hallo m-werk,

da die Arbeitszeittabelle ja auch auf der Personalnummer basiert, würde ich noch zwei Änderungen im bisherigen Programm machen:

Delphi-Quellcode:
if UpperCase(Trim(qryCheckPasswort.Value)) =
            UpperCase(Trim(ePasswort.Text)) then
         begin
            PasswortOK := True;
            PNr := qryCheckpersonalnummer.Value;
         end
An der Stelle, an der das Passwort überprüft wird, solltest du die gleich die Personalnummer in der Variablen PNr merken, die im pulic Bereich des Formulars deklariert werden muss, damit das Hauptformular später darauf zugreifen kann. Damit die Personalnummer in der qryCheck - Datenmenge erscheint, muss der SQL Text wie folgt aussehen:

Code:
SELECT Passwort,personalnummer FROM passwoerter W
    WHERE W.personalnummer =
       (SELECT personalnummer, name FROM personen
          WHERE name = :name)
Außerdem musst du noch das neue Feld "Personalnummer" über den Feldeditor deiner Anwendung hinzufügen.

Jetzt kannst du dir überlegen, wie du die Eingabe auf dem Hauptformular realisierst. Bei speziellen Fragen helfe ich gerne weiter.

m-werk 17. Nov 2002 18:48

Hi, ich hab deinen rat befolgt und nun ein Problem.

Ich habe PNr im Public berech in der Loginform als Boolean deklariert:
Ist das richtig so?

Weiters habe ich auch die SQL-Anweisung in qryCheck geändert.

Aber bei folgenden Code, den ich auch so eingebaut habe kommt eine Fehlermeldung:

Code:
PNr := qryCheckPersonalnummer.Value;
[Fehler] Login.pas(67): Undefinierter Bezeichner: 'qryCheckPersonalnummer'

Was ist da nur falsch? ich habe doch alles befolgt!!

Weiters: Ich habe den Quelltext mir noch mal angesehen. Der ist so richtig, wie du mir auch beschrieben hast, aber wenn ich das Passwort richtig eingebe, dann öffnet sich aber das ArbeitszeitForm NICHT!

MrSpock 17. Nov 2002 19:31

Hallo m-werk,

Zitat:

Außerdem musst du noch das neue Feld "Personalnummer" über den Feldeditor deiner Anwendung hinzufügen.
Diesen Schritt hast du noch nicht ausgeführt. (Doppelklick auf die qryCheck Komponente und alle Felder hinzufügen.)

Poste doch bitte mal den Quelltext des Projektes. Wenn du meinen Code übernimmst (und den korrekten Namen des Hauptfensters überprüft hast), funktioniert es. Beachte bitte, dass das Passwort Groß-/Kleinschreibung unterscheidet!

m-werk 17. Nov 2002 19:41

Hi, das hab ich totall übersehen mit dem Alle Felder hinzufügen.
Das funktioniert jetzt. Ich habe PNr im Public-Teil als String deklariert.

So sieht der Quelltext aus:

Code:
program Arbeitszeitermittlung;

uses
  Forms,
  Login in 'Login.pas' {FrmLogin},
  Arbeitszeit in 'Arbeitszeit.pas' {ArbeitszeitForm};

{$R *.res}

begin
  Application.Initialize;
  frmLogin := TfrmLogin.Create(Application);
  if (frmLogin.ShowModal = 1) and frmLogin.PasswortOK then
  begin
     Application.CreateForm(TArbeitszeitForm, ArbeitszeitForm);
     Application.Run;
  end
  else
     Application.Terminate;
end.
Das ArbeitszeitForm öffnet sich noch immer nicht!

MrSpock 17. Nov 2002 21:12

Hallo m-werk,

es könnte noch an dem ModalResult des Schalters liegen, den der Benutzer im Login-Fenster Drucken kann. Dieser sollte mrOK sein (was der 1 entspricht). Öffne noch einmal frmLogin und stelle den ModalResult des "OK" Schalters auf 1 bzw. mrOK. Sollte das dann auch noch nicht klappen, teste das Programm mal im Einzelschrittmodus.

m-werk 18. Nov 2002 19:53

Hi, das mit mrOK hat funktioniert.

So, es war nun eine mühselige procedure aber nun gehts zur Hauptform.

Ich habe jetzt in der Hauptform eine BDE-Tabelle, DataSource und ein DBText eingefügt.

In der Tabelle habe ich jetzt die DB Personen ausgewählt und Alle Felder hinzugefügt. Weiters habe ich dann die DataSource mit der Tabelle verknüpft und den DBText mit der DataSource und dem Feldnamen verknüpft.

Was muß ich jetzt noch tun, damit mir auch der richtige Wert nach dem Login angezeigt bekomme. Ich bekomme nach dem Login, (egal womit ich mich anmelde) immer nur den ersten Datenbankwert ausgeliefert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz