Einzelnen Beitrag anzeigen

SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#4

Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)

  Alt 2. Apr 2007, 10:02
Die Wahl der SQL-Datenbank ist hier wohl eher nebensächlich, da es sich wirklich nur um recht einfach gestrickte Daten handelt.

Wichtiger ist eigentlich da die Wahl der Zugriffsrechte, denn ein Mitarbeiter sollte doch wohl nur seine eigenen Daten sehen und ändern können und nicht die der anderen. Natürlich könntest Du das über die Programmlogik abfangen, aber dann nimmt man einfach einen SQL-Browser und verbindet sich direkt auf die DB.

Als sauberste Lösung bleibt hier eigentlich nur eine echte Server/Client-Anwendung und nur die Serversoftware hat Zugriff auf die DB.

Etwas aufwändiger, aber ohne Serversoftware: Du legst pro Mitarbeiter eine Tabelle "Entries_<userid>" an und gibst jedem Mitarbeiter nur auf diese Tabelle Schreibrechte, und auf alle anderen "Entries_*"-Tabellen gar keine Rechte. Erst der Controller darf auf alle Tabellen zugreifen und übernimmt dann am Ende des Monats die Werte in eine zentrale Tabelle "Entries".

Noch weniger aufwändig, aber gefuscht : Wenn Du im Client-Programm Username und Kennwort abfragst, vermurkst Du das Kennwort noch mit irgendeiner festen, zufälligen Kennung, bevor Du Dich an der DB anmeldest, also sowas wie
DB.Connect(user, 'DHz!64&'+pass+'vzFg'); Als Tabellen würd ich Dir vorschlagen:
  • Mitarbeiter - Eine Liste aller Mitarbeiter
  • Kunden - Eine Liste der Kunden
  • Projekte - Die Liste der Projekte, die abgerechnet werden sollen. Kurzname, Beschreibung, Kunde, Letzte Abrechnung erfolgt am, Genehmigte Stunden, Bereits verrechnete Stunden, (StartZeitpunkt des Projekts, EndZeitpunkt, ...)
  • Entries - MitarbeiterID, Datum, Startzeit, Endzeit, (Anzahl Minuten), Zuordnung zu Projekt, Abgerechnet Ja/Nein
  • Rechnungen - Kunde, Projekt, ZeitraumStart, ZeitraumEnde, versandt Ja/Nein, Leistungsnachweis akzeptiert ja/nein, bezahlt ja/nein

Dann machst Du zwei Programme: ein etwas kleineres für die Mitarbeiter, die brauchen dann nur ReadOnly-Zugriff auf Kunden, Projekte und vollen Zugriff auf Entries_<userid>. Und dann ein programm für die Controller, die vollen Zugriff auf alles haben, und insbesondere die Tabellen "Entries_<userid>" anlegen und löschen können und mit den passenden Zugriffsrechten versehen können.
  Mit Zitat antworten Zitat