AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi verlinkte datenbank, ohne feste karteikartengröße
Thema durchsuchen
Ansicht
Themen-Optionen

verlinkte datenbank, ohne feste karteikartengröße

Ein Thema von Jan · begonnen am 24. Sep 2002 · letzter Beitrag vom 23. Okt 2002
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#1

verlinkte datenbank, ohne feste karteikartengröße

  Alt 24. Sep 2002, 20:00
Also nuja, ist nicht ganz leicht zu erklären für mich..
Ich will mal so anfangen: Ich habe eine Personaldatenbank programmiert (wie wahrscheinlich jeder delphi Anfänger) und nun will ich 2 weitere datenbanken anfügen, welchedie Kranktage/Urlaubstage speichert und gestattet, mit ihnen rumzurechnen.
Nun weiss ich aber nur, wie ich datenbanken mit fester Recordgröße erstelle, indem ich den record mit den festgelegten variabeln in eine Datei schreibe. Was aber, wenn ich beliebig viele neue einträge in eine einzige karte schreiben will? und die nicht nur als einen langen string, sondern als einzelne Werte, aus denen ich nachher die Gesamt-fehlzeit/urlaubszeit errechnen kann. Weiterhin soll diese db nicht zusätzliche komponenten benötigen, sondern mit einer einzigen datei auskommen, so wie die personaldatei, die ich angelegt habe.
Das Projekt soll also nachher aus 3 DBs bestehen, die jeweils 1 datei haben.
So, nachdem ich mir jetzt einen Knoten in die Zunge erklärt hab, hoffe ich mal, dass jemand meine Problematik erkennt und mir weiterhelfen kann :]
so far:
mfg
Jan
Angehängte Dateien
Dateityp: zip 238_1032894031.zip (3,3 KB, 13x aufgerufen)
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#2
  Alt 25. Sep 2002, 07:38
Hallo Jan, 8)

ich denke, dass sich hier bei Dir um eine tipische 1:n Beziehung handelt.

Nehmen wir an, dass Deine Tabelle mit der Karteien KARTEI heißt. Darüber hinaus werden alle Einträge (zu den Karteien) in der Tabelle KARTEIEINTRAG festgehalten.

Folgend jede Deine Tabelle die Du verwendest muss/sollte einen festen- Feld mit dem Namen ID Integer NOT NUL besitzen

Also wenn Deine einzelne Karte in der Tabelle KARTEI (z.B. für den Herr Maier) eine ID... sagen wir gleich 14 hat dann alle Einträge in der Tabelle KARTEIEINTRAG (die neben dem eigenem Feld ID auch ein verweis Feld (KARTEIINTRAG_ID Integer NOT NULL)
besitzt) die in dem Feld KARTEIEINTRAG_ID gleich 14 sind werden sich auf den
Namen Maier beziehen.

Somit kannst Du für eine Kartei (in der Tabelle KARTEI) beliebig viele Einträge erstellen in der Tabelle KARTEIEINTRAG


Gruß

Paul Jr.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 25. Sep 2002, 19:58
Hallo Paul Jr.,
also erstmal vielen dank, dass du auf meine Frage geantwortet hast, aber irgendwie ist mir das etwas zu sehr theoretisch, ich blick da nix und wieder nix, was wohl an mir liegt. Ich hab ja das Prog hinzugefügt, welches ich bisher gemacht hab. da kann man ja sehen, was ich bislang von Datenbanken verstehe. ich will ja eigentlich nichts anderes machen als nochmal genau so eine DB zu erstellen, nur dass ich während der Laufzeit weitere elemente in eine Karteikarte einfügen können will. Geht das?
Falls du genau das schon vorher beantwortet hast, und es nicht leichter zu erklären ist, dann muss ich wohl irgendwie erstmal noch ein bisschen Erfahrung sammeln.
Aber danke trotzdem für alle Antworten im Vorraus.
mfg
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4
  Alt 25. Sep 2002, 21:19
Hallo Jan,

mir ist nicht ganz klar, ob du wirklich über Datenbanken (z.B. eine Paradoxdatenbank) sprichst oder über eine typisierte Datei!?

Wenn du eine Datenbank meinst, dann musst du 2 zusätzliche Tabellen anlegen. Falls du typisierte Dateien meinst, ist das auch machbar.

Also was von den beiden Optionen meinst du? Oder hab ich jetzt gar nix kappiert ?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 25. Sep 2002, 21:35
Hallo MrSpock,
also ich glaub kaum dass du was nicht verstanden hast, sondern wenn dann wohl eher ich, ich weiss es selber nicht, was das genau ist, was ich meine, aber ich hab ja mein Prog oben angefügt, es dürfte wohl weniger lange dauern dir das so anzugucken, als wenn ich das erkläre :]
ich speichere einfach nur in eine datei per:
Code:
  assign(f,Dateipfad);
        reset(f);
        seek(f,pos);
        write(f,Karte);
        close(f);
das ist alles. und so soll das mit den 2 weiteren dateien auch gehen, nur dass ich halt oben erwähntes damit anstellen will.
besser so?
mfg
Jan[/code]
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6
  Alt 25. Sep 2002, 21:50
Hallo Jan,

das hilft ja schon weiter. Du willst also mit typisierten Dateien arbeiten. Das geht natürlich. Problematisch ist dabei tatsächlich die Verknüpfung der Informationen in den verschiedenen Dateien. Ich werde dir dazu morgen Abend mal einen Vorschlag machen. Da es aber etwas länger dauert, das zu erklären und Vulkanier so gegen 22:45 Uhr müde werden, müssen wir das auf morgen verschieben .
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 25. Sep 2002, 22:07
Hallo MrSpock,
*vorspannungfastausdemstuhlfall*
ich bin mal gespannt, ob das dann sogar für mich zu verstehen ist, ich werd in der zeit mal mein delphi Wissen vertiefen
so long..
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8
  Alt 26. Sep 2002, 19:18
Hallo Jan,

fangen wir mal an, ich gehe mal davon aus, dass zu einen Personenrecord erstellt hast, dieser könnte etwa so aussehen:

Code:
type
  Karte = record
    ID       : Integer;
    Nachname : String[30];
    Vorname  : String[30];
    PLZ      : String[10];
    Ort      : String[30];
    Strasse  : String[30];
   end;
Worauf ich hinaus will ist, du solltest wie Paul Jr schon angemerkt hat jeder Karteikarte (Person) eine ID zuordnen.

Die Daten speicherst du dann ja in einem:


Code:
var
  KarteiFile : File of Karte;
Nehmen wir jetzt mal die Urlaubsdatei, du solltest jetzt jedem Eintrag mitgeben, zu welcher Person er gehört.

Also z.B.:
Code:
type
  Urlaub = record
    Person   : Integer;
    Von      : TDate;
    Bis      : TDate;
  end;
Jetzt kannst du für jede Person beliebig viele Einträge in eine Datei : File of Urlaub schreiben. Diese werden nicht sortiert, sondern einfach hintereinander geschrieben.

Wird ein Eintrag später gelöscht, setzt du dessen ID z.B. auf -1, was eine Art Löschkennzeichen ist.

Soweit alles klar?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#9
  Alt 26. Sep 2002, 20:19
Hallo MrSpock,
Soweit schon, danke für die infos, ich hab das tatsächlich genau so gemacht, aber du sagst, dass ich jetzt beliebig viele eintrage für eine person schreiben kann, meinst du damit, dass ich für jede urlaubszeit einen neuen record speichern soll, und beim auslesen der urlaubstage für eine bestimmte person die typisierte datei komplett durchlaufen soll und alle tage , die zu einer person gehören ausgeben soll?
Ich kann mir das schon vorstellen. Werde ich mal ausprobieren, aber eigentlich ist das ja nur eine umgehung meines Problems, denn ich willte dass die beiden variabeln die du da angegeben hast ("von", "bis") beliebig hinzugefügt werden können, also dann "von1" "bis1" usw, ich also während der laufzeit neue vars der karteikarte hinzufüge, und wenn das nicht geht es irgendwie anders löse, dass der das halt in eine einzige karteikarte/person schreibt, so dass ich nachher in der Urlaubsdatei genausoviele Karten habe wie in der Personaldatei. Aber wenn das nicht geht, dann ist deine Lösung glaube ich gerade gut genug. Vielen Dank hast mir echt weitergeholfen.
gruss
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10
  Alt 27. Sep 2002, 16:47
@Daniel B: Ich hatte PLZ größer als 5 angenommen, damit man ggf. auch ein Länderkennzeichen davor setzen kann. Z.B. CS-1000 oder A-12345, etc.

@Jan: Grundsätzlich habe ich mir das genau so vorgestellt. Ich hätte dir nur noch ein bisschen was über Indices erklärt, mit denen man die Suche beschleunigen kann. Das macht aber nur Sinn, wenn du sehr viele Datensätze erwartest.

Was du auch machen kannst ist so genannte Comma Separated Values (CSV). Dabei werden die einzelnen Felder eines Datensatzes durch einen Trenner (z.B. ";") von einander getrennt. Die Sätze liest du dann in einem Rutsch als Text ein und zerlegst dann den Satz. Willst du dann später alle Datensätze um ein weiteres Feld erweitern, ist das kein Problem. Du musst dann nur einmalig das neue Feld an alle Datensätze anhängen. Die Namen der Felder könnten im ersten Datensatz abgelegt werden. Solche Dateien lassen sich übrigens sehr gut in Datenbanksysteme oder Tabellenkalkulationen importieren.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 01:45 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