Listenfeld als Auswahlkriterium

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Listenfeld als Auswahlkriterium

Beitrag von jkl »

Hallo,

ich möchte ein SubFormular per Listenfeld steuern. Allerdings wird bei der Auswahl des Listenfelds der Datensatzzeiger nicht verschoben. Wo muss ich das anstoßen?

Mit freundlichen Grüßen

J. Kleis
Strat49
**
Beiträge: 40
Registriert: Fr, 15.09.2006 13:19
Wohnort: Bremen
Kontaktdaten:

Beitrag von Strat49 »

Hallo,

mir ist nicht ganz klar, was du machen möchtest? Wie soll das steuern des Subformulars aussehen? Wo befindet sich das Listenfeld, im Haupt- oder auch im Subformular? Bitte einmal genauer schildern.

Viele Grüße
Norbert
OOo 2.0.4 unter Suse Linux 10.0
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Beitrag von jkl »

Sorry, ich war wohl mal wieder zu kurz angebunden. Mittlerweile bin ich auch um andere Programmierprobleme reicher. Aber leider geschieden und habe mittlerweile nicht mal das Geld für ein Buch... Aber hier nun die Frage:

Ich möchte eine Datenbank mit Schülerdaten. Zu diesen Schüler möchte ich in einem ersten Schritt Kontaktdaten (Eltern, Jugendamt, Tageseinrichtungen, etc.) speichern.

Meine erste Idee war: Ich nehme einen zweite Tabelle mit Kontaktpersonen und einer KontaktID. In einer dritten Tabelle werden die Kontaktverbindungen gespeichert, in Form KontaktID SchülerID. So hätte ich jeweils nur eine 1:n-Relation. Allerdings bekomme ich es nicht hin, dass die Kontaktdaten dann in einem Subformular angezeigt werden.

Dabei habe ich dann per Listenfeld die Namen der Schüler ausgewählt um anschließend im Subformular die Kontakte zu sehen. Leider hat die Auswahl im Listenfeld nicht den Datensatzzeiger bewegt, so dass die Anzeige im Subformular nicht aktualisiert worden ist.

Außerdem habe ich dann auch festgestellt, dass nicht alle Kontakte die verknüpft waren, angezeigt werden.

In einer zweiten Idee habe ich nur eine Kontaktdatenbank eingerichtet. In der Kontaktverbindungstabelle habe ich jeweils nur KontaktID : KontaktID gespeichert und die Art des Kontaktes dazugeschrieben. Hiermit habe ich dann aber n:m-Relation und das funktioniert irgendwie auch nicht.

Leider habe ich - wie gesagt - nicht das Geld für das Base-Buch (Makro-Buch habe ich noch aus bessren Zeiten...). Sollte mir jemand helfen können und möchten, danke ich sehr.

jens
Strat49
**
Beiträge: 40
Registriert: Fr, 15.09.2006 13:19
Wohnort: Bremen
Kontaktdaten:

Beitrag von Strat49 »

Hallo Jens,

ich habe jetzt einmal rund zwei Stunden herumprobiert mit zwei Tabellen. Eine davon heißt Adressen mit den Feldern AdressID, Name (= Schülername), KontaktNr, die zweite heißt Kontakte mit den Feldern KontaktID, Kontakt (= Kontaktverbindung). Die Relation ist eine 1:n-Beziehung zwischen KontaktID und KontaktNr.

Auf der Basis der Tabelle Adressen habe ich ein Formular mit allen Feldern erstellt. Dann habe ich ein Listenfeld eingefügt. Im sich öffnenden Assistenten habe ich im Schritt 1 die Tabelle Kontakte ausgewählt, im Schritt 2 das Feld Kontakt ausgewählt, im Schritt 3 dann links das Feld KontaktNr und rechts das Feld KontaktID ausgewählt und Fertigstellen gedrückt.

Dies ist aufgrund einer Anleitung aus einem Basebuch geschehen und hat bisher (noch unter OOo 2.0.1) funktioniert. Jetzt werden unter OOo 2.0.3 allerdings nur die IDs angezeigt. Kann ich mir eigentlich nur mit einem Bug erklären. :? Ich weiß jedoch nicht, ob diese Vermutung stimmt.

Sorry, jetzt bin ich mit meinem Latein am Ende. Vielleicht weiß ein anderer Rat.

Gruß
Norbert
OOo 2.0.4 unter Suse Linux 10.0
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Beitrag von jkl »

Danke! Auch wenn es noch nicht geklappt hat.

Jens
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Beitrag von berndkli »

Hallo Jens
Allerdings wird bei der Auswahl des Listenfelds der Datensatzzeiger nicht verschoben. Wo muss ich das anstoßen?
Das geht nur per Makro oder so:

In der Formular-Navigation-Symbolleiste gibt es den Button "Formularbasierter Filter", da erst mal draufklicken; jetzt kannst du im Listenfeld den gewünschten Eintrag auswählen und dann in der Filter-Symbolleiste (öffnet sich wenn man auf "Formularbasierter Filter" klickt)auf den Button "Formularbasierten Filter anwenden" klicken; der entsprechende Datensatz im Subformular wird angezeigt.

Vorsicht mit der Filter-Symbolleiste!!! Dort keinesfalls auf "schliessen" klicken denn dann verschwindet sie auf nimmerwiedersehen und du bekommst sie nur wieder wenn du den User Ordner im Programmdatenordner löscht (ist wahrscheinlich ein Bug)

Du machst dir das Leben übrigens leichter wenn du statt eines Listenfeldes ein Tabellenkontrollfeld nimmst.
Mit dem Datensatzzeiger kannst du bequem durch deine Liste Navigieren, du kannst auch filtern und die angeschlossenen Subformulare springen (so sie richtig mit dem Hauptformular verbunden sind) automatisch zu den korrespondierenden Datensätzen.

Für dein Vorhaben brauchst du zunächst 2 Tabellen: Die Tabelle "Schueler" mit den Spalten SCHUELER_ID und NAME und die Tabelle
"Kontakte" mit den Spalten KONTAKTE_ID; SCHUELER_ID_KON und KONTAKT .

Im Formular musst du jetzt das Hauptformular mit der Schuelertabelle verbinden, und das Subformular mit der Kontakttabelle.
Das Unterformular verknüpfst du dann über die "SCHUELER_ID_KON" -Spalte der Kontakttabelle mit der SCHUELER_ID Spalte der Schuelertabelle mit dem Hauptformular.
Das war's auch schon.

Gruss Bernd
Ralf2
*
Beiträge: 12
Registriert: Mi, 25.10.2006 23:37

Beitrag von Ralf2 »

Allerdings wird bei der Auswahl des Listenfelds der Datensatzzeiger nicht verschoben. Wo muss ich das anstoßen?


Das geht nur per Makro oder so:
Genau danach suche ich schon mehrere Monate trotz Büchern und Internet vergeblich. Gibt es nicht eine einfache Idee, wie man den Datensatzzeiger durch Anklicken in einem Listenfeld auf den angeklickten Eintrag setzen kann? Die API ist ja nicht wirklich einfach..., und es steht ja alles in englisch drin ... *seufz*
Antworten