Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Personaldatenbank (https://www.delphipraxis.net/1142-personaldatenbank.html)

Jan 23. Okt 2002 15:01


Personaldatenbank
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag allerseits!
Ich hab mein Projekt jetzt auch fertiggestellt, nix aufwenidiges, aber vielleicht kannd as ja jemand von euch gebrauchen, wenn nicht ist auch nicht schlimm, derjenige für den ich es geschrieben hat braucht es auf jeden Fall. :] Es handelt sich um ein Personalverwaltungsprogramm mit Verwaltung von Ausfällen (Kranktage, Urlaubstage), Suchoption, Bequemer Navigation, und wenigen zusätzlichen Dateien sowie keinem umständlichen Installationsprogramm. Tips sind ABSOLUT erwünscht. Wenn Interresse am Quelltext besteht, bitte bescheidsagen, dann adde ich den zur open source Abteilung.
Naja, viel Spass noch damit.
Gruss
Jan

P.S.: Habe vergessen zu erwähnen, dass das DP Team sehr hilfreich bei der Programmierung war, insbesondere MrSpock, thx nochmal!

//edit: Neue ver. mit korrekten Tablulatoren hochgeladen.

m-werk 23. Okt 2002 15:40

Hallo Jan, habe mir gerade mal dein Programm angesehen. Nicht schlecht. Sehr leicht.

3 Sachen sind mir dabei aufgefallen.
Wenn man das Programm startet, steht der Cursor im Feld "Straße". Wäre sicherlich besser, wenn er gleich bei Vorname sein würde.

Wenn mann dann mit dem Tabulator weitergeht, dann ist nach dem Feld "Stadt" der Button "Speichern" Aktiv.

Und nach der PLZ soll nicht die Telefonnummer sondern der Ort sein. Ist übersichtlicher.

Könntest du mir bitte den Code geben, wo du eine Datei erstellst? Ich würde diesen benötigen. Wäre nett von dir.

Weiters, welches Datenbankformat ist das eigentlich (ddp) und wie arbeitet diese, wenn viele Daten drinn stehen?

Jan 23. Okt 2002 16:20

Hi Mwerk,
das format ist *.ddb und das ist einfach nur die Dateiendung die ich ausgesucht habe, soweit ich weiss ist die vollkommen gleichgültig, die Datenbank ist einfach eine Typisierte Datei in die ich nichts weiter mache, als Variablen als record zu speichern, und für jede variable einen fest definierten Platz zu reservieren. Die Records werden dann auch genau so wieder ausgelesen. Das ist alles. Wenn das flasch/zu oberflächlich war dann bitte ich um Entschuldigung, mehr weiss ich nicht *schäm*. Bin halt noch ein relativer noob, programmiere erst seit wenigen Monaten und nur unregelmässig in Delphi, da ich viel als Webdesigner zu arbeiten habe im Moment.
Das Verhalten bei vielen Datenmengen kenne ich nicht aus Erfahrung, denn wie du siehst beansprucht meine Datenbank nur wenig Daten, aber ich nehme an, dass die Grösse der Datenbank dann sehr schnell in die Höhe geht, da ja, wie ich bereits vorher erwähnte immer ein fester Speicherplatz für jede Variable reserviert wird, egal wie gross diese nun ist, aber für meine Zwecke reichte diese Art Datenbank vollkommen aus. Der Quelltext zum schreiben einer datei ist ganz einfach:

Code:
function tDatenobjekt.DateiEnde:integer;
var f:File of tUrlaub;
begin
        Datei:='Dateiname';
        assign(f,Datei);
        if not fileexists('Dateiname') then begin
        rewrite(f);
        close(f);
        end;
        reset(f);
        Dateiende:=filesize(f);
        close(f);
end;
Dies ist ein Ausschnitt aus meinem Programm, in dem ich das Ende der Datei ermittle, gleichzeitig erstelle ich die Datei, falls sie noch nicht existiert. Um einen Datensatz zu schreiben:

Code:
procedure tdatenobjekt.schreiben;
var f : file of tUrlaub;
begin
        ps:=DateiEnde;
        Datei:='Dateiname';
        assign(f,Datei);
        reset(f);
        seek(f,ps);
        write(f,Karte);
        close(f);
end;
Wobei ps der Dateizeiger ist und Karte eine Variable von einem selber erstellten record-Objekts ist.
Ich hoffe ich konnte dir weiterhelfen.
Gruss
jan

Jan 23. Okt 2002 16:23

Axo, zu der tab-Reihenfolge: das war mir auch aufgefallen, aber wie korrigiere ich das? Die Reihenfolge entpricht im Moment ganz einfach der Erstellungsreihenfolge während meines Arbeitsprozesses.
Wenn ich weiss wie das geht, werde ich das mal schnell beheben und neu uppen, ist nämlich echt ätzend, wenn ich schnell alle Felder füllen will und der Tabulator macht Mucken :]
gruss
Jan

RomanK 23. Okt 2002 16:28

Rechtsklick und dann gibts da einen Punkt ... Tabulatorreihenfolge

Jan 23. Okt 2002 16:39

*narf* war ja klar, dass das wieder so total einfach geht und ich das einfach nicht finde.. :? hab das also jetzt behoben.
Danke für Tipps und Tests!
Gruss
Jan

thebaer 31. Okt 2002 18:20

Hoi Jan.

Mir ist auch was aufgefallen:
Als ich die Datenbank gestartet hab, war das Fenster
ein ganz ganz ganz kleines Bisschen zu klein, sodass
ich rechts und unten Scrollbars hatte.

Tip:
ändere doch die eigenschaften von form1 (oder wie auch immer)
wie folgt:

AutoScroll: FALSE
AutoSize: FALSE (hast du wahrscheinlich)
BorderStyle: bsSingle (dann kann man die Größe nicht mehr ändern)

und so schönheitsmäßig würd ich noch

"Position: poDesktopCenter" einstellen.

Ansonsten alles OK

Jan 31. Okt 2002 23:03

Hallo thebaer,
danke für Deine Tips, das mit der resize-Sperre werde ich direkt mal einbauen, aber dass das Programm nicht in der mitte des Bildschirmes startet hat schon seinen Grund, nämlich, dass während der runtime ein weiterer Form geöffnet werden kann (geöffnet wird) der dann zusammen mit dem Hauptframe sozusagen zentriert sein soll.
cu
Jan

masters001 31. Jan 2003 12:11

Also wenn ich das jetzt richtig verstanden habe, hast du selber eine Datenbank Programmiert also nicht die BDE oder so genutzt!?
Könntest du mir den Code auch mal zuschicken?
Hab im moment das Problem das meine Progs mit der BDE bei den meisten nicht laufen, und da wärs nicht schlecht wenn ich mir meine eigene Datenbank prpoggen würd.
masters001

Jan 31. Jan 2003 16:20

Hallo masters001,
nein, ich habe keine datenbank programmiert, ich habe typisierte Dateien genutzt. Diese Dateien werden dann mit records gefüllt und ausgelesen, sind aber eigentlich nur zu gebrauchen, wenn man nicht allzuviele Daten braucht.
für Grosse Datensysteme also sehr unkomfortabel, da sehr viel Speicherplatz verloren geht.
Wenn du den code haben willst dann adde mich mal im icq.
oder besuch mich im qnet: #fusionweb.
bb
Jan

Luckie 31. Jan 2003 16:48

Das Info-Fenster läßt sich noch überflüssigerweise maximieren.

Die Tabreihenfolge ist immer noch nicht so ganz in Ordnung, find eich.

Pack das Stad-Edit mal Hinter die Postleitzahl und das telefon-Edit da drunter. dann hast du noch Platz für eien zweite Telefonnummer, denn viele Leute haben ja noch zusätzlich ein Handy. Ein Feld für eien E-mail-Adresse und Webseite wäre auczh noch schön.

Ich wollte den ersten datensatz anlegen und habe auf "Neu" gekjlickt, da wurde mir gesagt, ich müsse zu erst eine datenbank öffen. Also habe ich "Datenbank öffnen" gewählt und einen Namen angegeben, da ja noch keine existiert. Es kam dann die Abfrager - OK. dann wurde die Bestätigung der Abfrage mit "File not found" quitiert. Und beim Speichern dann das selbe. Im Moment kann man also nich nicht weiter testen.

Mein Vorschlag: Nimm die Navigations-Buttons raus und nimm eine Toolbar. Zusätzlich ergänze das Menü noch um den Punkt "Navigation" und pack da die Navigation noch mal rein mit Shortcuts : F5 = erster Datensatz, F6 = vorheriger Ddatensatz, F7 = nächster datensatz, F8 = letzter Datensatz. Das gleiche würde ich mit den Button "Neu" machen.

Wie löscht man einen Datensatz?
Wie werden die datensätze angezeigt? Alphabetisch sortiert?

Als standard Such-Option würde ich Nachname angeben. Im gleichen Zuge würde ich die Felder Vorname und Nachname im Formular vertauschen.

Ein Listview mit einer Übersicht wäre auch nicht schlecht. Manchmal weiß man nicht nach was man suchen soll und dann ist das Durchblätter doch recht aufwendig, wenn um die 100 Datensätze drin sind. Kuck dir doch mal meine Adress-Datenbank von meiner Seite an.

Jan 31. Jan 2003 17:46

Hallo Luckie,
Lass mich gleich mal sagen: das ganze klappt ohne Probleme, es gibt da nur keine Hilfe dazu. Sollte ich vielleicht noch einbinden.

Zitat:

Zitat von Luckie
Das Info-Fenster läßt sich noch überflüssigerweise maximieren.

Stimmt, minor error, wird behoben.


Zitat:

Zitat von Luckie
Die Tabreihenfolge ist immer noch nicht so ganz in Ordnung, find eich.

Naja, ich hab die so gemacht, weil man das i.d.R. in der Reihenfolge eingibt, graphisch ist es dann allerdings etwas verwuselt, weil die Anordnung so vom Platz her besser gepasst hat.

Zitat:

Zitat von Luckie
Pack das Stad-Edit mal Hinter die Postleitzahl und das telefon-Edit da drunter. dann hast du noch Platz für eien zweite Telefonnummer, denn viele Leute haben ja noch zusätzlich ein Handy. Ein Feld für eien E-mail-Adresse und Webseite wäre auczh noch schön.

2. Telefonnummer muss eigentlich nicht, weil man die auch ganz einfach im Feld für die 1. Telefonnummer schreiben kann, da gibt es keine Schutzmechanismen.
Die Angabe einer website ist absolut nicht angebracht, weil es sich hier um eine Personaldatenbank handelt, die in einer Personalabteilung verwendet wird. Ich weiss nicht was die mit der Webseite ihrer Mitarbeiter wollen. Aber über E-mail sollte ich vielleicht mal nachdenken.


Zitat:

Zitat von Luckie
Ich wollte den ersten datensatz anlegen und habe auf "Neu" gekjlickt, da wurde mir gesagt, ich müsse zu erst eine datenbank öffen. Also habe ich "Datenbank öffnen" gewählt und einen Namen angegeben, da ja noch keine existiert. Es kam dann die Abfrager - OK. dann wurde die Bestätigung der Abfrage mit "File not found" quitiert. Und beim Speichern dann das selbe. Im Moment kann man also nich nicht weiter testen.

Klingt extrem nach DAU :mrgreen:

Da Du noch keine Datenbank angelegt hast kannst Du natürlich auch keine öffnen, Du musst dann eine neue Datenbank anlegen. Dieser Menüpunkt befindet sich direkt unter dem von "Datenbank öffnen".
Aber du hast schon recht, ich sollte vielleicht schreiben: "Öffnen oder erstellen sie eine neue Datenbank!".


Zitat:

Zitat von Luckie
Mein Vorschlag: Nimm die Navigations-Buttons raus und nimm eine Toolbar. Zusätzlich ergänze das Menü noch um den Punkt "Navigation" und pack da die Navigation noch mal rein mit Shortcuts : F5 = erster Datensatz, F6 = vorheriger Ddatensatz, F7 = nächster datensatz, F8 = letzter Datensatz. Das gleiche würde ich mit den Button "Neu" machen.

Navigation rausnehmen? Wie sieht eine Toolbar aus? Man muss auf jeden Fall eine Aufschrift zu jeden Button haben, weil ich es *** finde wenn man erstmal mit dem Mauszeiger über jedem Button/Toolbaricon warten muss ehe man den tooltip angezeigt bekommt.
Shortcuts finde ich eine gute Idee!

Zitat:

Zitat von Luckie
Wie löscht man einen Datensatz?

Das ist eine gute Frage. Das weiss ich nämlich selber nicht, und deswegen ist es nicht eingebaut. Wie löscht man Einträge aus einer Typisierten Datei, außer sie jedesmal neu zu schreiben?

Zitat:

Zitat von Luckie
Wie werden die datensätze angezeigt? Alphabetisch sortiert?

Nein, Die Datensätze werden in ihrer Erstellungsreihenfolge Dargestellt.
Funktionen wie Sortieren habe ich nicht eingebaut, da ich nicht einen einzigen array verwende in dem ich irgendwas sortieren könnte, sondern ich lese alles aus records aus, und ich denke mir, dass sowas auch eine menge Arbeit mit sich bringen würde.

Zitat:

Zitat von Luckie
Als standard Such-Option würde ich Nachname angeben. Im gleichen Zuge würde ich die Felder Vorname und Nachname im Formular vertauschen.

Kann'sch machen.

Zitat:

Zitat von Luckie
Ein Listview mit einer Übersicht wäre auch nicht schlecht. Manchmal weiß man nicht nach was man suchen soll und dann ist das Durchblätter doch recht aufwendig, wenn um die 100 Datensätze drin sind. Kuck dir doch mal meine Adress-Datenbank von meiner Seite an.

:?:
Wie sieht sowas aus, und welchen Vorteil hätte das?
Meinst Du einfach nur eine Übersicht mit Nachnamen?, welche man dann doppelklicken könnte um direkt dahin zu kommen?
klingt logisch, könnte man als Menüpunkt einbinden.

So, jetzt kannst du das ja nochmal inklusive Datenbank testen und die weiteren features meiner DB testen, weil einige hat sie noch, die Du dann nicht gesehen hast.

Vielen Dank für die vielen Anregungen und die Zeit die Du fürs Ausprobieren geopfert hast.

BB
Jan

Jan 31. Jan 2003 18:18

Hallo Luckie,
hab' mir mal dein Tool angeguckt, das ist schon aller erste Sahne, aber was sind *.csv Dateien?
Und nen kleinen Bug hab ich auch gefunden :] :
Wenn ich das Programm ausführe und einfach in den leeren Body klicke, dass wird oben in der Leiste ein Button aktiv, und wenn ich den klicke (Kontakt löschen) dann kommt folgende message:
"Soll der Kontakt `+@ aus der Datenbank entfernt werden?"

Wobei das + aber ein Kreuz ist.
Naja, nix dolles, aber ein Bug *stolzsei*.

Aber im gegensatz zu meinem, war dein Programm mit Sicherheit nicht das erste das du programmiert hast. :bounce1:

Ab jetzt verwende ich dein Tool :]
Gruß
Jan

Luckie 31. Jan 2003 21:11

Hm, dann habe ich den Punkt wohl übersehen. Also das mit der neuen Datenbank. :oops:

Eine Toolbar benutze ich in meiner Adressdatenbank. Allerdings nicht zur Navigation. Als Symbole könntest du welche für einen CD-Player nehmen: |< << >> >>|. Selbsterklärend denke ich.

Das mit dem Löschen solltest du unbedingt noch lösen.
Eine Möglichkeit wäre alle Datensätze in ein Arry von TDatensatz zu lesen, dann kopierst du alle Elemente bis zu dem zu löschenden Datensatz in ein zweites Array, überspringst den zu löschenden Datensatz und kopierst den Rest auch in das neue Array.

Aber in einem Arry von TDatensatz mußt du doch schon haben oder? Ich kann mir nicht vorstellen, dass du jeden Datensatz einzeln bei Bedarf von der Platte liest.

csv Dateine sind Comma Separated Values. Also Dateien die durch ein fest definiertes Zeichne getrennte Werte enthalten. Also eigentlich kleine Datenbanken im Textformat.
Die erste Zeile enthält die Feldbezeichnungen und die folgendnen die Werte:
Code:
Naame,Vorname,Telefonnummer
Puff,Michael,1234567879
Maier,Fritz,123987456
Diese Datein kannst du in fast jede Datenbank importieren. Und meine kann diese erstellen (sollte sie, aber da kommt es gerade irgendwie zu einem Runitem Error :( ) und auch einlesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 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