![]() |
Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Hallo,
ich soll für einen Kunden eine Zeiterfassung: -> Welcher Mitarbeiter hat wie lange an etwas gearbeitet erstellen, diese erfassten Zeiten sollen dann in einer Rechnungserstellung münden. Meine Frage an euch: Das ganze sollte netzwerkfähig sein, dass heißt es gibt eine Datenbank, die die Datensätze abspeichert. Diese liegt dann auf dem Server, bis hier hin alles klar, nun sollen die Mitarbeiter ihre Daten erfassen können, diese Datensätze müssten dann in der DB gespeichert werden. Aus diesen Datensätzen sollte das Controlling dann die Möglichkeit haben die Rechnung als Word-Dokument zu generieren. Ist dort Delphi + DB die beste Wahl, wenn ja welche Datenbank würde hier gut passen? MySQL / Access / Paradox?? Und falls nein, welche Technologie ist die bessere Wahl? Access (als DB + Frontend) Danke schonmal für eure (hoffentlich reichliche) Kommentare und Hilfestellungen... Gruß DelphiManiac |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zitat:
Zitat:
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zitat:
Die "großen" wie Oracle und IBM stellen ihre Datenbanken in freien Versionen zur Verfügung, die recht geringen Beschränkungen (so in der Richtung <= 4 GByte RAM und nur 1 CPU) zur Verfügung. Hier hast Du den Vorteil, dass Du sehr einfach skalieren kannst (kaufst einfach das vollwertige System) und wirklich ein Produkt bekommst, dass den aktuellem Standard entspricht (gilt nicht nur für die!). Firebird oder PostgreSQL sind gleich ganz frei und bieten auch einiges (Firebird dabei ein wenig mehr). Was Delphi+DB und vielleicht auch ganz generell die Wahl der DB betrifft, so gibt es einen ganz wichtigen Punkt, den Du berücksichtigen solltest, um die Frage der "besten Wahl" zu beantworten. An sich lautet die klare Antwort, dass es keine objektiv beste Wahl gibt. Der Punkt den Du berücksichtigen musst ist, was für Wissen steht Dir überhaupt zur Verfügung. Wenn ich jetzt sage Java + DB ist die allerbeste Wahl ever!!!! Dann würdest Dein Produkt dass nicht bestätigen, wenn Du gar kein Java beherrscht. Selbst wenn Du Dich einarbeitest dürfte das Produkt (wenn es das erste in Java ist) dann eher hinter den Möglichkeiten der Sprache bleiben. Das gleiche gilt für die DB. Wichtig ist die Frage, was es für Anforderungen gibt. Verwendet die Firma schon ein DBMS? Dann haben die sicher auch Leute die sich mit dem auskennen und das hat dann Vorteile (dann sollte ganz klar dieses DBMS bevorzugt werden). Ist dies nicht der Fall, solltest Du das DBMS nehmen, mit dem Du erwartest am Besten klar zu kommen. Wenn ein DBMS Dir immens viele tolle Feature bietet, die Du alle nicht nutzen kannst und Du wegen der Komplexität ein sehr schlechtes System erstellst, hängt das jeder (theoretisch) schlechteren DB auf einem anderen System, das Du optimieren kannst hinterher. Das gleiche gilt halt auch für die verwendete Programmierung. Bist Du ein Crack in VBA, muss das nicht schlechter sein als Delphi (ok, schlechtes Beispiel was?! :mrgreen:). Jedenfalls reicht es hier aus, dass Du eine Sprache und die richtigen Konzepte beherrscht um eine gute Lösung zu erstellen. Dabei muss es nicht die Beste sein (wäre schwer möglich das dann auch zu zeigen) und selbst dann gäbe es andere die genauso gut sind. Deshalb einfach auf eine machbare Lösung konzentrieren, mit der der Kunde zufrieden ist, das reicht doch für's Erste. Gruß Der Unwissende |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
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
Delphi-Quellcode:
Als Tabellen würd ich Dir vorschlagen:
DB.Connect(user, 'DHz!64&'+pass+'vzFg');
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. |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Danke mkinzler, Der_Unwissende:
Dass heißt, ich erstelle eine Clientsoftware und eine Mastersoftware, die jeweils auf die Datenbank zugreifen. Gut, also fange ich mal vorne an. 1x Firebird DB 1x Clientsoftware (für Zeiterfassungseingaben) 1x Mastersoftware für die Rechnungserstellung Gibt es speziell für den Fall Delphi + Firebird entsprechende Tutorials? Mit Delphi bin ich jetzt sol langsam warm geworden, deswegen wollte ich es auch gerne in Delphi realisieren. Gut mit Datenbanken habe ich zurzeit nur mit Access (grässlich) und MySql im Zusammhang mit PHP gearbeitet. Ist denn der Ansatz mit Client und Mastersoftware sinnvoll? Gruß DelphiManiac |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zitat:
![]() ![]() ![]() Zitat:
Jedenfalls solltest Du trotzdem die beiden Programme nicht ganz isoliert betrachten. So sind bestimmte Klassen/Strukturen/Problemlösungen sicherlich für beide gleich wichtig. Hier wäre zum Beispiel die Anbindung an das DBMS zu nennen. Zwar greifen sie unterschiedlich darauf zu, trotzdem gibt es auch viele Gemeinsamkeiten. Mit einer eigenen Schicht zwischen den Programmen und dem DBMS kannst Du auch gleich dein Programm von einem speziellen DBMS entkoppeln (die Programme verwenden deine Abstraktionsschicht, zwischen welchem DBMS und der Anwendung die vermittelt bleibt transparent). |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Man könnte aber durchaus alles in einem Programm machen, welches dann benutzerbezogen Funktionen freischaltet.
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
@mkinzler:
Ja das hast du Recht, werde es wohl auch in einem Programm abbilden. Mit Zugriffsrechten/beschränkungen. Ist eine Firebird Datenbank eine einzelne Datei, oder ist es wie bei MySQL aufgesplittet? |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zitat:
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
@alle:
Nutzt jemand von euch das Admin Tool 'Marathon'? Falls ja vielleicht könnt ihr mir ja erklären warum ich keine DB anlegen kann. Ich gehe auf -->Create Database gebe alle wichtigen Informationen an. Und sage -->Create Dann kommt folgender Fehler (Screenshot im Anhang), dass Passwort und Benutzername fehlen, dies habe ich aber angegeben, trotzdem kann ich keine DB anlegen :-( Danke euch |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Ich würde dir
![]() |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Hab den Fehler gefunden:
Ich musste meiner DBMS ja vorher ein Passwort vergeben (bzw. den Standard-Login nutzen):=> USER:=> SYSDBA PASS:=> masterkey dann geht es... |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Marathon ? Mir unbekannt. Datenbanken anzulegen und zwar einfach und sicher geht IMHO immer noch am besten mit IBExpert.
P.S.: siehe auch mkinzler. :mrgreen: P.S.2: egal ob Fehler schnell weg. Guck dir mal trotzdem noch IBExpert an. Immerhin auch aus Deutschland. Das hat gewisse Vorteile. Z.B. kann in 4 Wochen mit dem Hersteller selbst gesprochen werden. In Paderborn. |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Ich muss da auch mal ne Lanze für Holger und sein IBExpert brechen.
Ist das beste Tool für die Arbeit mit Firebird/Interbase, das ich kenne. Du findest ihn hier im Forum übrigens auch als IBExpert. Holger steht einem auch immer mit Rat und Tat bei Seite. Neben der von Hansa erwähnten Möglichkeit, Holger auf den Delphitagen zu treffen, bietet er auch in unregelmäßigen Abständen kostenlose Roadshows an. Auf diesen Roadshows vermittelt er Basiswissen zu Firebird/Interbase. Auch spezielleren Fragen gegenüber war er bisher immer aufgeschlossen. Gruß Thomas |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zudem ist er auch hier im Forum (ibexpert) und beantwortet direkt hier.
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
OK :-)
Das erleichert meine Entscheidung. Nehme das IBExpert Tool, habe mir gerade ein Passwort zuschicken lassen... |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Hallo DelphiManiac,
ich habe für meine Rechnungsstellung auch ein solches Tool geschrieben. Es gibt dabei nur einen MA :stupid:. Das Tool basiert auf FB und die Rechnung erstelle ich mit Rave (stelle aber gerade auf FastReport um). Über Rave speichere ich dann die Rechnung direkt im PDF Format ab, in dem ich die Rechnung dann an den Kunden schicke. Wenn du also Hilfe brauchst, helfe ich gerne auch bei der Beantwortung von Fragen mit. |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
@MrSpock
Hi Danke für dein Angebot, werde sehr wahrscheinlich darauf zurückgreifen, dich mit Fragen zu löchern. Ich wollte meine Software auch die Rechnungen mit Fastreport erstellen lassen. Müsste aber eventuell statt direkt auf den Drucker oder (PDF-Export) den Zwischenschritt über MS-Word gehen, da eventuell noch ein paar Sachen direkt im Dokument geändert werden müssten (vor dem Ausdrucken). Also wie gesagt, ich habe mit Fastreport schon ein wenig (in 2 Projekten kam es zum Einsatz) herum gespielt, evtl. könnte ich dir da auch ein bisschen helfen. Also Danke schonmal |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Die Übergabe in Word sollte auch kein Problem darstellen (COM-Automation)
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Ja mittels COM könnte ich dann die Daten nach Word bekommen,
aber soweit bin ich ja noch nicht :lol: :lol: Wenn ich soweit bin, werde ich das hier (falls es Probleme gibt nochmal aufgreifen) Aber nunja bin jetzt dabei mal die ersten Schritte mit Firebird zu wagen.. |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Wenn ein Report in Word erstellt werden soll, kann ich immer wieder nur die Delphi Shareware Komponente
![]() EDIT: Link verbessert |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
@jelly
Danke für den Link, ich probiere die Shareware mal aus... |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
z.B.
![]() |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
@Jelly
:thumb: ja gefällt mir sehr gut, kann durchaus sein, dass ich dich bezüglich ein paar Fragen zu dem Tool mal anspreche... :-) Gruß DelphiManiac |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Hallo,
ich habe mir jetzt eine Datenbank angelegt, diese nennt sich dbcontrolling: sie hat jetzt ersteinmal 2 Tabellen ganz einfach gehalten für den Anfang: tblMitarbeiter -MitarbNr -Name -Vorname -GebDatum tblKunden -KundenNr -Name -Vorname -GebDatum habe auch schon einmal ein paar Daten über IBExpert eingepflegt, das Tool gefällt mir gut, komme immer besser damit zurecht :-) So in meiner Anwendung habe ich nun eine TZConnection auf meine Form gezogen. Soweit so gut. über
Delphi-Quellcode:
kann ich mich ja mit der Datenbank verbinden.
connDatabase.Connect;
Aber wie kann ich mir jetzt am einfachsten die Daten einmal im Programm anzeigen lassen? Mit der Komponente DBGrid?? Weiß aber nicht genau wie ich nun vorgehen muss. Danke euch |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zur Tabellenstruktur:
Ich würde künstliche Schlüssel verwenden. Welche Zugriffskomponeneten? Im Allgemeinen Grid mit DataSource verbinden und diese mit dem DataSet (T..Table bzw. T..Query) |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Ok,
könnte natürlich auch ID's benutzen für den Primary_Key. Nur mal kurz zum Verständnis: TZConnection ist für den Verbindungsaufbau TZTable hält eine Tabelle lokal vor (also eine Art Dataset) TDatasource verknüpft ein Dataset(mit den Daten aus der DB) mit den Steuerelementen (hier in meinem Fall TDBGrid) Ist das ersteinmal so richtig interpretiert? |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Meine Frage ist nun, wie bekomme ich denn jetzt generell eine
Untermenge in mein Dataset. SELECT * FROM tblMitarbeiter ..... Wie kann ich die Daten (die mein SQL-Statement aufbereitet in ein Dataset leiten?) Danke |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zitat:
Zitat:
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
@mkinzler
Ersteinmal danke, dass du mir hilfst, habe eine TZQuery mit dem SQL Statement vereinbart. Als Connection Objekt habe ich meine TZConnection genommen. Aber wie komme ich (du sagst das das Query auch eine Art Dataset ist) an die Daten (Also meine Tabelleninhalte) ran? |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Entweder DataSource mit TZQuery verknüpfen und datasensitive Komponenten verwenden oder
Delphi-Quellcode:
bzw.
ZQuery.FieldByName('<Feldname'>.Value
Delphi-Quellcode:
ZQuery.FieldByName('<Feldname'>.as<Typ>
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Kann ich mir die Fieldnames auch irgendwie anzeigen lassen?
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Ok ich kann auch über den Index gehen habe ich gesehen:
Delphi-Quellcode:
Nur das Verknüpfen von Datasource und Query klappt nicht.
ShowMessage(ZQuery1.Fields[1].Value);
Bei Datasource ..>DataSet kann ich nur TZTable auswählen, aber nicht meine Query |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Stelle mal dein projekt hier ein oder sende es per PM. Dann werde ich es mir mal anschauen.
|
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Hallo,
ich habe es nun geschafft, meine Tabelle im DBGrid darzustellen, Es gibt ja die Möglichkeit die Tabelle zuverändern, neuen Datensatz einzufügen. Ich würde gerne die Änderungen auch in der DB wirksam machen, wie mache ich das im DBGrid? Muss ich dafür das TZUpdateSQL verwenden?` Danke euch! |
Re: Zeiterfassung + Rechnungserstellung (netzwerkfähig)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz