AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Arbeitszeitaufzeichnung - Ideen sind gefragt!

Arbeitszeitaufzeichnung - Ideen sind gefragt!

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

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#11
  Alt 24. Okt 2002, 21:41
Übrigens: Sollten die Personaldaten oder die Arbeitszeiten kritisch sein, solltest du auch hier Paßwörter anlegen! Sonst könnte ein Nutzer die Daten sehr leicht darauf zugreifen. Sicherheit ist natürlich ein wichtiges Thema. Paradox kann hier wohl nicht mit SQL Datenbanken mithalten. Aber so einfach knackt man Paradox Tabellen nicht .

[Edit=MrSpock]Beitrag verschoben ...[/Edit]
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#12
  Alt 25. Okt 2002, 07:10
Danke für die Infos. Ich werd nur die Tabelle Passwörter schützen. Gibts da nen punkt im DBExplorer? Die anderen Tabellen sind nicht kritisch.
Das mit dem alias ist so eine sache, da ich die Abeitszeit nicht in der Firma wo ich jetzt arbeite programmiere, sondern wo anders. Dort existiert zwar auch ein Netzwerk aber nicht so eines wie in meiner Firma. Kanns da probleme geben?

Ich muß jetzt aber noch 3 Felder in der Personaltabelle eingeben.

1. Ueberstunden
2. Reststunden
3. Resturlaub

Ich muß ja den Resturlaub (entweder + oder -) eintragen, da ja das Programm von Jänner an starten soll.
Und das Gleiche ist bei den Reststunden.

Das Feld Überstunden brauche ich ja auch noch.
Das werd ich heute am frühen abend mal alles so machen.
Dann kanns ja schon an die Form ran gehen.

PS: Wenn du wilst, kann ich dir ja mal unsere Excel-Arbeitszeit schicken, damit du siehst, wie ich es im Excel gemacht habe.
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
 
#13
  Alt 25. Okt 2002, 07:19
Hallo m-werk,

diese drei Felder würde ich nicht in die Personaltabelle schreiben, weil sie sich ja ständig ändern. Lieber eine neue Tabelle mit Personalnummer als Schlüssel. Das Passwort legst du am besten gleich mit der Datenbankoberfläche an. Falls die Tabelle schon existiert wählst du Tools|Umstrukturieren und dann in den Tabelleneigenschaften Passwortschutz.

Ich meld mich wieder...
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#14
  Alt 25. Okt 2002, 17:31
Hi, ich habe jetzt eine Weitere Tabelle erstellt "Zusatz"
mit folgenden Feldern

Personalnummer A 10 *
Ueberstunden S
Reststunden S
Resturlaub ?

Bei Resturlaub weiß ich nicht, was ich da verwenden kann. Ich hab einmal A 2 eingegeben.

Die Tabelle Passwort habe ich auch schon mit einem Code geschützt.

Meiner Meinung nach sind wir mit der Tabelle nun fertig. Jetzt gehts sicherlich ans Formen ODER?
Erstelle ich eigentlich jetzt erst im Form die 1:n Beziehung?
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
 
#15
  Alt 25. Okt 2002, 21:53
Hallo m-werk,

ich gehe davon aus, dass du den Resturlaub in Tagen angeben willst, dann wäre S auch OK.

Ich würde vielleicht mit einem Login - Fenster anfangen. Die Idee dahinter: Jeder muss sich anmelden. Das Formular enthält den Login Namen und das Passwort. Willst du einen Login Namen zulassen, der nicht genau dem Namen entspricht, soltest du die Passworttabelle um ein Feld LoginName erweitern. Außerdem würde ich noch ein Feld "Fehlversuche S" hinzufügen. Wenn einer z.B. 3 Fehlversuche beim einloggen hat, wird sein Account gesperrt, bis du ihn wieder freischaltest. Das Login Formular solltest du einblenden, noch bevor das Hauptfenster erscheint. Das Hauptfenster sollte nur erscheinen, wenn das Passwort stimmt.

Ob du im Login Fenster alle Namen anzeigst, für die ein Login existiert (wie z.B. Linux) oder in einer Dropdownliste oder eben gar nicht, solltest du selbst entscheiden.

Wenn du das Formular fertig hast, solltest du direkt inn den Quelltext des Programms (Projekt|Quelltext anzeigen...) eingreifen und dort dein Login - Formular erstellen, anzeigen und entscheiden, ob du das Hauptformular erstellen lässt oder nicht.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#16
  Alt 30. Okt 2002, 08:27
Hi, so ich habe nun ein Loginfenster erstellt.
Das mit den 3 Versuchen, brauch ich hier nicht. Es soll so einfach wie möglich sein.
Sollte jemand sein PW vergessen, so werd ich sowieso kontaktiert. Weiters kann mann sein PW gar nicht vergessen, da ja jede Person jeden Tag in dieses Formular einsteigen muss.

Ich habe jetzt ein Edit feld, OK-button und Abbrechen-Button im Programm
Im Abbrechen Button habe ich jetzt "Applicatin.Terminate" stehen.

Theoretisch muß ich jetzt ja in der PW-Datenbank die Passwörter anlegen.
Dannach muß ich nun das andere Formular erstellen, wo ich dann die Arbeitszeit eintrage. ODER?

Im Formular, wo ich die AZ eintrage, gebe ich dann die anderen Buttons hinein, Mitarbeiterdaten usw.

Wie greife ich denn eigentlich auf die DB zu? Das was ich so gesehen habe, müsste ich aliase für die DB angeben. Oder gibts da nen anderen Weg?
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
 
#17
  Alt 30. Okt 2002, 09:11
Hallo m-werk,

auf die Fragen werde ich heute Abend eingehen. Nur ein kurzer Kommentar. Das mit den 3 Versuchen beim Login, war nur dazu gedacht, dass ein Mitarbeiter nicht versucht, sich als anderer Mitarbeiter einzuloggen und dessen Passwort hackt. Er hätte, in dem Konzept, das ich mir vorstelle, nach Eingabe des korrekten Passwortes, Zugriff auf die bisher eingegebenen Daten des Mitarbeiters, als der er/sie sich eingeloggt hat.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#18
  Alt 30. Okt 2002, 12:09
Mit der einsicht ist es nicht so bei uns. Es kann zur Zeit auch jeder in das Arbeitsverzeichnis des anderen zugreifen. Geändert wird da auch nichts. Es ist nur eine Übersicht für den Steuerberater (Dabei geht es hauptsächlich um die Urlaubs- und Krankheitstage, da unser Steuerber. dies auch verwaltet.) Wir müssen jedes Monat einen Ausdruck zu Ihm schicken.

Daher wird das mit dem 3. Versuch nicht in diesem Programm benötigt. Sollte es dennoch benötigt werden, dann kann ich das auch später nachholen.
Grüße, m-werk
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#19
  Alt 7. Nov 2002, 08:40
MrSpock, hättest du zeit und lust mir jetzt wieder weiterzuhelfen? Ich habe jetzt längere Zeit nichts weitergemacht (Zeitmangel) Ich habe nun ein Login erstellt.
Jetzt müsste ich die überprüfung machen, wenn das Login OK, dann soll das Hauptmenü gestartet werden mit der richtigen Person.
(NUR WIE?)

Weiters: Muß ich jetzt schon mal in die Passwort - DB die Personen mit den Passwörtern eingeben?
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
 
#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
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:58 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