Base: Datenverknüpfung

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

2serve4

Base: Datenverknüpfung

Beitrag von 2serve4 » Di, 14.06.2016 11:36

Hallo zusammen,
ich erstelle gerade eine Klientendatenbank mit Base. Das klappt soweit ganz gut. Habe mehrere Relationen zur Haupttabelle "Klient" schon angelegt und kann diese per Formular befüllen und abfragen.
Jetzt stehe ich aber auf dem Schlauch und drehe mich im Kreis. Vielleicht kann mir ja einer kurz auf die Sprünge helfen?
Folgendes Problem.
Zu den normalen Daten des Klienten (Geschlecht, Wohnsituation,etc) soll auch noch die Möglichkeit MEHRERE Kontaktaufnahmen zugefügt werden.
Ich habe also eine Tabelle mit: KontaktID - Datum- Infotext angelegt.
Die kann ich dann auch im Formular mit einbinden, aber die Zuweisung zu den verschiedenen Klienten klappt nicht.
Ich gehe mal davon aus, dass ich noch eine Verknüpfung zwischen KlientID und KontaktID hinkriegen muss, aber ich hab nun Knoten im Hirn...
Ich habe mir das so gedacht:

KLIENT-tabelle
KlientID(primschl.)
Vorname
Nachname
kontaktID (integer)

rel_Kontakt-tabelle
ID(primschl.)
KlientID (integer)
KontaktID (integer)

KONTAKT-tabelle
KontaktID (primschl.)
Datum
Infotext

Dann die Beziehungen:
KLIENT-tabelle kontaktID <-> rel_Kontakt-tabelle ID
rel_Kontakt-tabelle KlientID <-> KLIENT-tabelle KlientID
rel_Kontakt-tabelle KontaktID <-> KONTAKT-tabelle KontaktID

Wenn ich dann ein Formular/Abfrage anlege, geht aber alles drunter und drüber :-(

Wo liegt mein Denk/Umsetzfehler?

Dank im voraus!
Stefan

RobertG
*******
Beiträge: 1735
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base: Datenverknüpfung

Beitrag von RobertG » Di, 14.06.2016 12:45

Hallo Stefan,

Du konstruierst da etwas, was Du vermutlich gar nicht willst:
Einem Klienten werden zwar mehrere Kontakte zugewiesen, aber doch nicht einem Kontakt mehrere Klienten. Deine Tabelle müssten lauten:

KLIENT-tabelle
KlientID(primschl.)
Vorname
Nachname

KONTAKT-tabelle
KontaktID (primschl.)
Datum
Infotext
KlientID (integer)

Für das Formular kannst Du folgende Varianten auswählen:
Klient-Tabelle im Hauptformular, Kontakt-Tabelle im Unterformular oder
Kontakt-Tabelle im Formular, kein Unterformular, dafür die Klienten über ein Listenfeld auswählbar.
Einfacher ist die erste Variante - vor allem, wenn noch nicht alle Klienten in der Datenbank erhalten sind.

Gruß

Robert

2serve4

Re: Base: Datenverknüpfung

Beitrag von 2serve4 » Mi, 15.06.2016 13:35

Hallo Robert,
hat geklappt :-).
Ich hatte mir das iwann auch mal so gedacht, aber war noch der Ansicht, dass so ja nicht klar wird, welcher Klient welche Termine zugeordnet bekommt.
Bei der "Abfrage" steht das nun schön in einer Tabelle:
Vorname Nachname Geburtsdatum GeschlechtID PLZ Ort KontaktDatum KontaktInfo
Peter Paulsen 12.12.99 1 34523 Dorf 12.12.12 erster Kontakt
Peter Paulsen 12.12.99 1 34523 Dorf 14.12.12 zweiter
Ahmed Terkan 09.09.96 0 45678 Block 15.12.12 dritter
Cybell Vokan 01.04.88 0 56789 Drüppel 03.04.15 letzter Kontakt

ABER, es gibt immer ein aber :-(
Im Formular hakt es noch.
Ich habe das nach deinem Vorschlag mit Haupt und Subformular angelegt.
Jetzt zeigt er mir allerdings alle Kontaktdaten bei jedem Klienten. O.o
Jetzt hab ich doch wieder denn fehlenden Bezug zwischen den Tabellen, oder?
LG
Stefan

RobertG
*******
Beiträge: 1735
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base: Datenverknüpfung

Beitrag von RobertG » Mi, 15.06.2016 19:20

Hallo Stefan,

wenn die Verknüpfung vom Hauptformular zum Unterformular korrekt ist, dann dürfte das nicht der Fall sein. Wenn Du unter Extras > Beziehungen die Tabellen verknüpft hast, dann liest der Assistent automatisch diese Beziehungen für das Unterformular aus. Ansonsten musst Du in den Formulareigenschaften > Daten unter "Verknüpfen von" und "Verknüpfen nach" angeben.

Gruß

Robert

Antworten