AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Arbeitszeitaufzeichnung - Ideen sind gefragt!
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeitszeitaufzeichnung - Ideen sind gefragt!

Ein Thema von m-werk · begonnen am 23. Okt 2002 · letzter Beitrag vom 18. Nov 2002
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

ein wichtiger Tip noch:

Dem Eingabefeld im Passwortdialog (oben im Code ePasswort) sollte im Objektinspektor ein PasswordChar (meist *) zugwiesen werden.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#22
  Alt 9. Nov 2002, 08:16
Hi, so nun steh ich ein bischen an.

Das mit dem 1. Code, habe ich erledigt.

beim 2. Code:
PasswortOK (erscheint auch beim 1. code), Welche zuordnung hat dieser?

In der Automatischen Erzeugung der Formulare habe ich jetzt nichts mehr drinn.

Ich habe beim Login Formular eine DBComboBox eingebaut. Ist das richtig so?

Ich habe die BDE Querys genommen und auch so beannt, wie du geschrieben hast. Ich habe auch bei den beiden Querys den SQL-Code eingetragen. Die beiden Querys habe ich auf das Loginformular plaziert.
Beim qryUser bin ich auf 'Alle Felder hinzufügen' gegangen und da habe ich 'Name' hinzugefügt.
Beim qryCheck wollte ich es auch so machen und da kam die Felher-Meldung:
qryCheck:Typ für Feld 'Name' unbekannt
Da muß was in der SQL-Anweisung was falsch sein, nur was?

Muß ich nicht die DBComboBox mit der Personen-DB verknüpfen? Wenn ja, wie?

Noch was habe ich bemerkt. Muss ich nicht in der Datenbank 'Arbeitszeit' auch den 'Monat' einfügen?
(FieldName: Monat, Type: S)?

Es tud mir leid, dass ich so viele Fragen stelle, aber ich möchte ja auch was lernen dabei, und so kann ich es dann.
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#23
  Alt 9. Nov 2002, 18:15
Hallo m-werk,

PasswortOK habe ich als Boolean im PUBLIC Bereich von frmLogin deklariert, damit andere Formulare darauf zugreifen können.

Das Login Formular soll das "2. Formular" sein. Das Hauptformular soll weiterhin in der automatischen Reihenfolge bleiben! Durch den Eingriff in den Projektquellcode haben wir aber verhindert, dass es tatsächlich erzeugt wird, solange der Benutzer kein korrektes Passwort eingibt.

Im Login Formular habe ich nur eine normale ComboBox (also keine datensensitive cbBox) benutzt. Die Daten für die Füllung hole ich über die entsprechende TQuery Komponente. Ich wollte nicht, dass das Programm an dieser Stelle direkt mit Daten aus der Datenbank verknüpft wird.

Bei qryCheck kannst du nach Eingabe des SQL Testes das Array Params über den Objektinspektor zugreifen. Dort steht (wie von Geisterhand ) der Parameter Name drin. Weise diesem den Typ String zu.

Ich habe nicht mit Monat gearbeitet, das wird komplizierter. Die Woche genügt ja, da jede Kalenderwoche eindeutig ist und du jedes Datum innerhalb der Kalenderwoche darstellen kannst.

Viele Fragen sind übrigens kein Problem, denn dafür sind wir ja da . Was sollte ich sonst mit der vielen Freizeit machen ?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#24
  Alt 10. Nov 2002, 16:49
Danke erstmals für die freundliche unterstützung.

Zitat:
Bei qryCheck kannst du nach Eingabe des SQL Testes das Array Params über den Objektinspektor zugreifen. Dort steht (wie von Geisterhand ) der Parameter Name drin. Weise diesem den Typ String zu.
Ich kapier das nicht so ganz. Was meinst du damit genau. Wie gehe ich vor?
Grüße, m-werk
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#25
  Alt 13. Nov 2002, 18:19
Hi, so nun hab ich ein bischen herumgedüftelt.

Ich habe bei qryCheck bei Params den Namen angeklickt und unter dem Punkt DataType 'ftString' ausgewählt. Ist das richtig so?

Weiters: Wenn ich jetzt das Login (Programm) starte, kommt beim Start eine Passwortaufforderung (Da muß ich nun das Passwort für die Passwort-Datenbank eingeben)
Wenn ich dann das Passwort eingegeben habe, kommt folgende Meldung:
Name not unique in this context.

Dann bin ich beim Login Formular und kann aber keinen Benutzer auswählen. (Es steht in der Combobox nichts drin)

Was ist da nur los?

Wenn das dann alles klappt, könnten wir ja schon zur eigentlichen Hauptform überspringen und diese dann gestallten.
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

ja, der Eintrag ftString als Typ des Parameters ist korrekt.

Nun zu der Passworteingabe für die Datenbank. Die musst du natürlich über das Programm eingeben, sonst müsstest du ja jedem Mitarbeiter das Paßwort nennen, damit er sich anmelden kann. Das Passwort fügst du vor dem Zugriff auf die Passwoerter Tabelle wie folgt der Session hinzu:

Code:
  Session.AddPassword('mwerk');
  {Jetzt kannst du auf die Tabelle zugreifen }
mwerk wäre natürlich ein schlechtest Paßwort .

Wenn du auf die Tabelle zugegriffen hast, solltest du das Paßwort wieder aus der Session entfernen, z.B. mit:

Code:
Session.RemoveAllPasswords;
Übrigens, wenn du das Passwort wie oben beschrieben hinzufügst, könnte ein Hacker den String 'mwerk' eventuell in deinem Executable finden und so das Passwort herausbekommen. Es wäre deshalb eventuell sinnvoll, den String irgendwie zusammenzubauen, falls du Hacker fürchten musst.

Die Fehlermeldung Name not unique könnte verschiedene Ursachen haben. Prüfe einmal, ob in der Personen und Passwoerter Tabelle alle Namen eindeutig sind und nicht z.B. ein Leereintrag existiert. Ansonsten lauf mal im Einzelschritt durch die Anwendung, um festzustellen, wo der Fehler erzeugt wird.

Wenn das alles funktioniert kann es ans Hauptformular gehen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#27
  Alt 14. Nov 2002, 18:49
Hi, das mit der Session kapier ich nicht ganz

Zitat:

Session.AddPassword('mwerk');
{Jetzt kannst du auf die Tabelle zugreifen }

Session.RemoveAllPasswords;
Wo muß ich denn diese Session eintragen?

Ich habe die Passwoerter-DB und die Personen DB überprüft. Ich hab keinen leeren Datensatz.
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#28
  Alt 14. Nov 2002, 19:09
Hallo m-werk,

immer wenn du auf die Passwoerter Tabelle zugreifen willst, also hier:

Delphi-Quellcode:
procedure TfrmLogin.FormActivate(Sender: TObject);
begin
   Session.AddPassword('mwerk');
   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;
   Session.RemoveAllPasswords;
end;
und natürlich hier:
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
         Session.AddPassword('mwerk');
         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;
         Session.RemoveAllPasswords;
      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;
Zu dem unique Name Problem müsstest du mal im Einzelschrittverfahren die Stelle lokalisieren, an der dieser Fehler auftritt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#29
  Alt 15. Nov 2002, 12:03
Hi, jetzt funktioniert das login. Ich habe einfach den Code nochmal übernommen. (Beim code war aber nichts falsch. Es ist wahrscheinlich beim Passwort der DB gehängt.)

Jetzt kann es ans Hauptformular gehen.
Wie gehe ich jetzt vor?

Ich habe schon ein Hauptformular erstellt. (Ist aber noch nichts drinn).
Dieses trägt den Namen 'ArbeitszeitForm'

Wenn ich auf LOGIN klicke, dann soll sich ja diese Hauptform öffnen. Das muss ja auch noch eingebaut werden (Loginform).
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#30
  Alt 15. Nov 2002, 12:22
Hallo m-werk,

dass das Hauptformular geöffnet wird, wenn der Login korrekt abgelaufen ist, haben wir ja schon durch den Zugriff auf den Projektquelltext erledigt:

Delphi-Quellcode:
  Application.Initialize;
  frmLogin := TfrmLogin.Create(Application);
  if (frmLogin.ShowModal = 1) and frmLogin.PasswortOK then
  begin
     Application.CreateForm([b]TArbeitszeitForm, ArbeitszeitForm[/b]);
     Application.Run;
  end
  else
     Application.Terminate;
Dabei sollte das CreateForm automatisch erscheinen, wenn du ArbeitsForm als Hauptformular auswählst. Nur den Rest solltest du drumherumstricken.

Dann sollte das Formular sich nach erfolgreichem Einloggen öffnen.
Zum Inhalt werde ich dir heute Abend ein paar Tips geben.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.
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