Datenbank ''''Archiv''''

Hallo,
ich hab da nun ne Frage zu meiner DB.
Bei uns ist es so, dass die Fahrzeuge im Fuhrpark im Laufe der Zeit unter den Mitarbeitern getauscht werden. Aus irgendwelchen Gründen, soll das ganze „archiviert“ werden, also von wann bis wann wlecher Mitarbeiter das jeweilige Fahrzeug gefahren hat. Außerdem soll auf einen Blick zu sehen sein, wer der aktuelle Fahrer des Fahrzeugs ist.
Wie realisiere ich das am besten ?
Kann ich in einem Formular ein Auswahlfeld erstellen, wo man den aktuellen Fahrer auswählt, und wenn das Fahrzeug zu einem anderen Fahrer wechselt klickt man auf einen Button und in einer Liste darunter erscheint dann der ehemalige Fahrer mit dem von-bis Zeitraum.
Wenn das so geht wie realisiere ich das ? Oder hat jemand eine einfacherere Lösung ?

Hallo.

ich hab da nun ne Frage zu meiner DB.

Du hast in Wirklichkeit deren mehrere :wink:

Also : Ein Mitarbeiter kann kein, ein oder mehrere Fahrzeuge haben. Ein Fahrzeug kann zu mehreren Mitarbeitern gehören. Das schreit geradezu nach einer Relation n:m. Sprich, Du benötigst zunächst mal drei Tabellen.

tbl_Mitarbeiter : Name, Vorname, Schuhgröße, Geschlecht der Mutter, was weiß ich, und natürlich einen Primärschlüssel.

tbl_Fahrzeug : Typ, Farbe, Pe-esse, pipapo, Primärschlüssel.

tbl_MA_FZ : Der Primärschlüssel besteht aus dem Fremdschlüssel MA und dem Fremdschlüssel FZ. In dieser Tabelle legst Du zusätzlich zwei Datumsfelder an : „Fahrzeug übernommen am“ und „Fahrzeug abgegeben am“. Jetzt hängt es von der konkreten Anwendungssituation ab, ob diese Tabelle Deine Anforderungen erfüllt : Wenn ein Mitarbeiter das Fahrzeug, das er einmal hatte, nie wieder bekommt, dann ja; erhält er aber seine alte Nu*PIEP* irgendwann evtl. wieder, dann nein. Im zweiten Falle kannst Du den Primärschlüssel aus FZ und MA nicht gebrauchen und darfst auch keinen Unique Index auf die beiden Fremdschlüsselfelder legen. Der Primärschlüssel der Zwischentabelle muss dann zusätzlich noch die Datumsfelder enthalten (am zweckmäßigsten als Long Integer), bzw. der Unique Index muss sich aus MA, FZ und den beiden Datümmern zusammensetzen.

Ich nehme mal den einfacheren Fall des „aus dem Auge, aus dem Sinn“ an. Die aktuelle Zuordnung Mitarbeiter zu Fahrzeug bekommst Du dann mit

SELECT Mitarbeiter\_bla, Fahrzeug\_blä, MAFZ\_blubb FROM tbl\_MAFZ, tbl\_Mitarbeiter, tbl\_Fahrzeug INNER JOIN tbl\_MAFZ ON tbl\_MAFZ.fky\_Mitarbeiter = tbl\_Mitarbeiter.pky\_Mitarbeiter ON tbl\_MAFZ.fky\_Fahrzeug = tbl\_Fahrzeug.pky\_Fahrzeug WHERE dat\_Fahrzeug\_übernommen = Date());

Analog kannst Du vorgehen, um die Historie abzubilden, nur nimmst Du dann nicht das aktuelle Datum Date() als Vergleichsparameter, sondern einen Datumsterm der Form #yyyy/dd/mm# …

Achtung : Das SQL-Beispiel ist ungetestet, kann also noch kleinere Syntaxmacken haben.

Nächste Frage im gleichen Brett.

Gruß kw

Hallo!
Als erstes mußt Du erst mal wissen, wonach gesucht werden soll: Fahrer oder Fahrzeug oder Zeitraum?
Oder Du machst auf der „Startseite“ mehrere buttons, die dann auf den jeweiligen Bericht verlinken, also einen Bericht für Suche nach Fahrer, einen Bericht für Suche nach Zeitraum und einen Bericht für Suche nach Fahrzeug. Dies wäre spontan mein erster Vorschlag. Vielleicht nicht der Beste, aber realisierbar.
Gruß
Florian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]