Daten aus anderen Tabellen in Formularen anzeigen
Moderator: Moderatoren
-
- ***
- Beiträge: 56
- Registriert: Mi, 20.08.2008 17:44
Daten aus anderen Tabellen in Formularen anzeigen
Hallo!
Ich nutze erst seit kurzem OOo Base (hab bislang immer nur PHP/MySQL genutzt) und stehe nun vor zwei Problemen, für die ich irgendwie keine Lösung finde.
Konkret geht es um eine Firmendatenbank bestehend aus folgenden Tabellen: Firmen, Orte und Ansprechpartner.
Ich möchte mir im Formular "Firmen" (basierend auf der Tabelle als Datenquelle) nun folgendes anzeigen lassen: Ortsname und Daten aus Ansprechpartner. Anscheinend ist es aber so, dass ich nur Listenfelder mit anderen Tabellen verknüpfen kann und keine der sonstigen Steuerelemente. Wie lasse ich verknüpfte Inhalte aus anderen Tabellen anzeigen?
Außerdem möchte ich, dass beim Löschen einer Firma auch die dazugehörigen Ansprechpartner gelöscht werden (falls vorhanden). Es schwant mir, dies geht nur mittels eines Makros, das ich an eine Schaltfläche anbinde. Gibt es irgendwelche Bibliotheken oder Tutorials, die mir - speziell mit Blick auf OOo Base - den Einstieg erleichtern?
Danke schonmal für euren Input,
Frank
Ich nutze erst seit kurzem OOo Base (hab bislang immer nur PHP/MySQL genutzt) und stehe nun vor zwei Problemen, für die ich irgendwie keine Lösung finde.
Konkret geht es um eine Firmendatenbank bestehend aus folgenden Tabellen: Firmen, Orte und Ansprechpartner.
Ich möchte mir im Formular "Firmen" (basierend auf der Tabelle als Datenquelle) nun folgendes anzeigen lassen: Ortsname und Daten aus Ansprechpartner. Anscheinend ist es aber so, dass ich nur Listenfelder mit anderen Tabellen verknüpfen kann und keine der sonstigen Steuerelemente. Wie lasse ich verknüpfte Inhalte aus anderen Tabellen anzeigen?
Außerdem möchte ich, dass beim Löschen einer Firma auch die dazugehörigen Ansprechpartner gelöscht werden (falls vorhanden). Es schwant mir, dies geht nur mittels eines Makros, das ich an eine Schaltfläche anbinde. Gibt es irgendwelche Bibliotheken oder Tutorials, die mir - speziell mit Blick auf OOo Base - den Einstieg erleichtern?
Danke schonmal für euren Input,
Frank
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo !
Ich bin zwar nicht der Datenbankpapst, aber hast du die Tabellen untereinander verknüpft? Das solltest du ggfs. machen. Ich geh mal davon aus, dass die Tabelle Firmen deine Haupttabelle ist. In der Haupttabelle hast du einen Primärschlüssel, vielleicht Firmen.ID. in den anderen Tabellen sind sicherlich auch Perimärschlüssel vorhanden, oder? Dann solltest du in der Haupttabelle die Namen der Primärschlüssel der anderen Dateien einfügen, diese aber nicht zum Primärschlüssel machen, das geht nicht. Feldtyp ist jeweils Integer und unten Autowert = nein und Eingabe = nein.
Danach speicherst du es ab und gehst über Extras und stellst ein Beziehung vom Primärschlüssel der Untertabelle zu dem gleich lautenden Namen der Haupttabelle her. Ob es jetzt ein 1:1 oder 1:n Verknüpfung werden muss, weiß ich jetzt auch nicht, probiere es aus.
Danach solltest du ein neues Formular erstellen.
Ich hoffe, ich liege da jetzt nicht falsch.
Gruß Andy
Ich bin zwar nicht der Datenbankpapst, aber hast du die Tabellen untereinander verknüpft? Das solltest du ggfs. machen. Ich geh mal davon aus, dass die Tabelle Firmen deine Haupttabelle ist. In der Haupttabelle hast du einen Primärschlüssel, vielleicht Firmen.ID. in den anderen Tabellen sind sicherlich auch Perimärschlüssel vorhanden, oder? Dann solltest du in der Haupttabelle die Namen der Primärschlüssel der anderen Dateien einfügen, diese aber nicht zum Primärschlüssel machen, das geht nicht. Feldtyp ist jeweils Integer und unten Autowert = nein und Eingabe = nein.
Danach speicherst du es ab und gehst über Extras und stellst ein Beziehung vom Primärschlüssel der Untertabelle zu dem gleich lautenden Namen der Haupttabelle her. Ob es jetzt ein 1:1 oder 1:n Verknüpfung werden muss, weiß ich jetzt auch nicht, probiere es aus.
Danach solltest du ein neues Formular erstellen.
Ich hoffe, ich liege da jetzt nicht falsch.
Gruß Andy
-
- ***
- Beiträge: 56
- Registriert: Mi, 20.08.2008 17:44
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo Andy!
Ich klicke mich da jetzt mal durch und melde mich dann wieder mit den bestimmt auftauchenden neuen Fragen.
Schönen Dank soweit,
Frank
Nein, dass man in der Tabellenübersicht unter "Extras" die Beziehungen festlegen kann, hat sich mir bislang nicht erschlossen. Die Möglichkeit zum Verknüpfen habe ich nur in den Abfragen gefunden, die daraus entstehenden Tabellen lassen sich aber (verständlicherweise) nicht bearbeiten. Mal wieder ein Indiz dafür, dass die Oberfläche von OOo tatsächlich einer "Renaissance" bedarf...schane65 hat geschrieben: Ich bin zwar nicht der Datenbankpapst, aber hast du die Tabellen untereinander verknüpft?
Ich klicke mich da jetzt mal durch und melde mich dann wieder mit den bestimmt auftauchenden neuen Fragen.
Schönen Dank soweit,
Frank
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo Frank,
wenn ich Dich richtig verstehe hat Du also eine DB mit 3 Tabellen (Firmen, Orte und Ansprechpartner),
deren Inhalte Du mehr oder weniger vollständig in einem gemeinsamen Formular anzeigen willst?
Vorausgesetzt, Du hast inzwischen lt. schane65 Beziehungen zwischen den Tabellen gesetzt, bringt dich der Formularassistent ein wenig weiter.
Formularassistent, dann in der Feldauswahl "Tabellen und Abfragen" Deine Haupttabelle (hier: Firmen) anwählen, (alle) Felder ins Formular übertragen
Weiter Subformular (hier: Orte) basierend auf bestehender Beziehung hinzufügen. > Weiter
Subformularfelder auswählen, Design bestimmen etc. (z.B. Tabellenform)
Weitere Subformulare sind nicht ganz so einfach hinzuzufügen:
Hierzu zuerst sicherstellen, dass die Kontrollelemente für "Formular-Entwurf" angeschaltet sind.
(Ansicht > Symbolleisten > Formular-Entwurf)
Ist diese Ansicht geschaltet, gibt es auch einen Formular-Navigator, über den Du nun auch schon eine gewisse Sub-Struktur zwischen Firmen und Orten sehen kannst, wenn Du o.a. Punkte korrekt durchführen konntest.
Weitere Formulare in der Hierarchie einfügen und an entsprechender Stelle aus den "Formular-Steuerelementen" Komponenten einfügen.
Denen können dann in Ihren Eigenschaften entsprechend verknüpfte Tabellenfelder zugeordnet werden. (Inhalt) sowie (Zuordnen von) und (zuordnen nach)
Hoffe, dass hat schon mal weitergeholfen
Marco
wenn ich Dich richtig verstehe hat Du also eine DB mit 3 Tabellen (Firmen, Orte und Ansprechpartner),
deren Inhalte Du mehr oder weniger vollständig in einem gemeinsamen Formular anzeigen willst?
Vorausgesetzt, Du hast inzwischen lt. schane65 Beziehungen zwischen den Tabellen gesetzt, bringt dich der Formularassistent ein wenig weiter.
Formularassistent, dann in der Feldauswahl "Tabellen und Abfragen" Deine Haupttabelle (hier: Firmen) anwählen, (alle) Felder ins Formular übertragen
Weiter Subformular (hier: Orte) basierend auf bestehender Beziehung hinzufügen. > Weiter
Subformularfelder auswählen, Design bestimmen etc. (z.B. Tabellenform)
Weitere Subformulare sind nicht ganz so einfach hinzuzufügen:
Hierzu zuerst sicherstellen, dass die Kontrollelemente für "Formular-Entwurf" angeschaltet sind.
(Ansicht > Symbolleisten > Formular-Entwurf)
Ist diese Ansicht geschaltet, gibt es auch einen Formular-Navigator, über den Du nun auch schon eine gewisse Sub-Struktur zwischen Firmen und Orten sehen kannst, wenn Du o.a. Punkte korrekt durchführen konntest.
Weitere Formulare in der Hierarchie einfügen und an entsprechender Stelle aus den "Formular-Steuerelementen" Komponenten einfügen.
Denen können dann in Ihren Eigenschaften entsprechend verknüpfte Tabellenfelder zugeordnet werden. (Inhalt) sowie (Zuordnen von) und (zuordnen nach)
Hoffe, dass hat schon mal weitergeholfen
Marco
-
- ***
- Beiträge: 56
- Registriert: Mi, 20.08.2008 17:44
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo Marco,

Da die Ansprechpartner selbst aus mehreren Tabellen bestehen (AP, Geschlecht und Funktion - ich hab's gern kompliziert), lasse ich die AP als Subformular in Tabellenform anzeigen und beziehe mich dabei auf eine Abfrage, die die drei o.g. zusammenführt. Soweit so gut.
Die AP müssen nicht zwingend im selben Formular bearbeitet werden können (geht ja wegen der Abfrage auch nicht). Komfortabel wäre nun, wenn ich aus dem Kunden-Formular heraus das AP-Formular aufrufe und dabei die Kunden-ID übergebe. Ist so etwas mit Bordmitteln möglich? Ist es darüber hinaus möglich, eine Suchefeld in ein Formular einzubauen?
Danke und schönen Gruß,
Frank
herzlichen Dank für Deine Ausführungen, die mich enorm weitergebracht haben. Jetzt wo ich die Beziehungen gesetzt habe ergeben Subformulare zum ersten Mal einen SinnMEcki hat geschrieben: Ist diese Ansicht geschaltet, gibt es auch einen Formular-Navigator, über den Du nun auch schon eine gewisse Sub-Struktur zwischen Firmen und Orten sehen kannst, wenn Du o.a. Punkte korrekt durchführen konntest.
Weitere Formulare in der Hierarchie einfügen und an entsprechender Stelle aus den "Formular-Steuerelementen" Komponenten einfügen.
Denen können dann in Ihren Eigenschaften entsprechend verknüpfte Tabellenfelder zugeordnet werden. (Inhalt) sowie (Zuordnen von) und (zuordnen nach)

Da die Ansprechpartner selbst aus mehreren Tabellen bestehen (AP, Geschlecht und Funktion - ich hab's gern kompliziert), lasse ich die AP als Subformular in Tabellenform anzeigen und beziehe mich dabei auf eine Abfrage, die die drei o.g. zusammenführt. Soweit so gut.
Die AP müssen nicht zwingend im selben Formular bearbeitet werden können (geht ja wegen der Abfrage auch nicht). Komfortabel wäre nun, wenn ich aus dem Kunden-Formular heraus das AP-Formular aufrufe und dabei die Kunden-ID übergebe. Ist so etwas mit Bordmitteln möglich? Ist es darüber hinaus möglich, eine Suchefeld in ein Formular einzubauen?
Danke und schönen Gruß,
Frank
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo Frank,
wenn ich Deine Frage richtig verstehe, meinst Du, dass beim Eintrag eines neuen AP automatisch die verknüpfende ID aus der Kunden-Tabelle gezogen und in die AP-Tabelle eingetragen wird.
Guck mal, ob das Formular "Mitglieder" in der angehängten ODB (Teilnachbau meiner Vereinsverwaltung, weil ich gerade ein SQL-Problem hatte) das leistet, was Du haben willst.
Jedes Mitglied hat N Kinder. Diese Kinder können nun an Essen und Übermittagsbetreuung teilnehmen.
Geh mal auf ein Kind (z.B. das mit der ID_Kinder = 207) und trage dann einen neuen Datensatz in die Tabelle unten links ein (die mit Anzahl Essen).
Trag hierbei nur eine Zahl für Anzahl Essen und ein noch nicht vorhandenes Datum ein. die id_Kinder wird automatisch eingetragen.
Wie gesagt, war eine DB um ein anderes Problem anzugehen.
Vielleicht hilft es Dir bzw. wenn das genau das ist, was Du brauchst, kann ich evtl. beschreiben, wie es geht.
Gruß
Marco
wenn ich Deine Frage richtig verstehe, meinst Du, dass beim Eintrag eines neuen AP automatisch die verknüpfende ID aus der Kunden-Tabelle gezogen und in die AP-Tabelle eingetragen wird.
Guck mal, ob das Formular "Mitglieder" in der angehängten ODB (Teilnachbau meiner Vereinsverwaltung, weil ich gerade ein SQL-Problem hatte) das leistet, was Du haben willst.
Jedes Mitglied hat N Kinder. Diese Kinder können nun an Essen und Übermittagsbetreuung teilnehmen.
Geh mal auf ein Kind (z.B. das mit der ID_Kinder = 207) und trage dann einen neuen Datensatz in die Tabelle unten links ein (die mit Anzahl Essen).
Trag hierbei nur eine Zahl für Anzahl Essen und ein noch nicht vorhandenes Datum ein. die id_Kinder wird automatisch eingetragen.
Wie gesagt, war eine DB um ein anderes Problem anzugehen.
Vielleicht hilft es Dir bzw. wenn das genau das ist, was Du brauchst, kann ich evtl. beschreiben, wie es geht.
Gruß
Marco
- Dateianhänge
-
- BeispielDB_FGGM.odb
- (18.46 KiB) 111-mal heruntergeladen
-
- ***
- Beiträge: 56
- Registriert: Mi, 20.08.2008 17:44
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo Marco,
ja, das automatische Eintragen der Kunden-ID beim Anlegen eines neuen AP würde die Sache schon erheblich erleichtern.
Ich vermute, dass Tabellenansichten in Deinem Formular eine Rolle spielen, komme aber nicht dahinter, wie genau der automatische Eintrag erfolgt. Wäre nett, wenn Du mich erhellen würdest
Danke,
Frank
ja, das automatische Eintragen der Kunden-ID beim Anlegen eines neuen AP würde die Sache schon erheblich erleichtern.
Ich vermute, dass Tabellenansichten in Deinem Formular eine Rolle spielen, komme aber nicht dahinter, wie genau der automatische Eintrag erfolgt. Wäre nett, wenn Du mich erhellen würdest

Danke,
Frank
Re: Daten aus anderen Tabellen in Formularen anzeigen
Hallo Frank, ich will's mal versuchen.
Also, ich geh' mal davon aus, dass Deine Tabellen_ID jeweils über AUTO-Wert = Ja gefüllt wird, also
Kunde_ID: Integer, Auto-Wert=Ja;
AP_ID: Integer, Auto-Wert=Ja;
In der Tabelle AP gibt es ebenfalls ein Feld Kunde_ID: Interger, Auto-Wert= Nein
Von Tabelle Kunde, Feld: Kunde_ID zu Tabelle AP, Feld: Kunde_ID gibt es eine 1:N Beziehung (Einfach die Beziehung von Tabelle Kunde, Feld: Kunde_ID zu Tabelle AP, Feld: Kunde_ID ziehen)
Jetzt zu den Formularen, diesmal automatisch:
Formular > Formular unter Verwendung des Assistenten erstellen > Feldauswahl > Tabelle: Kunde> alle Felder im Formular > weiter > Subformular hinzufügen > > basiert auf bestehender Beziehung>
AP auswählen > weiter > alle Felder ins Formular > Weiter bis Formularname >Formularname: Kundenformular > Fertigstellen
Das ganze sollte jetzt eigentlich schon so, wie Du es willst, funktionieren, d.h. gebe einen neuen Kunden im Formular, dort obere Tabelle Kunde ein bzw. wähle einen bestehenden aus und gebe in der unteren Tabelle (AP) mehrere AP ein. Die jeweiligen Kunde_ID in der Tabelle werden automatisch eingetragen.
Das gleiche jetzt mal manuell, ist natürlich etwas aufwändiger, dafür kannst Du aber weitere Hierarchien einfügen.
Ob das jetzt Sinn macht, oder nicht, gehe ich nun mal von einer weiteren Tabelle: Geschlecht aus. (siehe Dein Eintrag vom 19.08.2010)
Die hat wieder ein Feld: Geschlecht_ID, Integer, Auto-Wert=Ja;
und ein Feld AP_ID, Integer, Auto-Wert: Nein.
Die gilt es nun auch noch anzuzeigen.
Schließe das noch angezeigte Formular.
Gehe die Formularseite auf das Formular > Rechte Maustaste > bearbeiten.
Ansicht > Symbolleisten > Formular-Entwurf muss aktiviert sein.
Den Formular-Navigator (aus Formular-Entwurf) öffnen (fünfte Schaltfläche im Formular-Entwurf)
Hier siehst Du nun schon die Struktur aus dem Assistenten. Klick mal auf "Main-Form", das ist die Kunden Tabelle
dann auf SubForm, das ist die AP Tabelle.
Jetzt ein neues Formular:
Rechte Maustaste auf SubForm > Neu > Formular. Das kannst Du meinetwegen in GeschlechtForm umbenennen (oder wie auch immer sprechend benennen)
GeschlechtForm bleibt aktiviert.
Wenn nicht schon aktiviert, dann jetzt "Weitere Steuerelemente" aktivieren" (Ansicht > Symbolleisten > Formular-Steuerelemente muss aktiviert sein.
Hier gibt es den Schalter "Weitere Steuerelemente" (3. Schalter von unten)
Tabellen-Kontrollfeld auswählen und bei gedrückter linker Maustaste auf dem Formularhintergrund ein Feld aufziehen.
Im "Tabellen-Assistent-Daten" die Tabelle Geschlecht auswählen. > weiter > alles auswählen
Rechte Maustaste auf GeschlechtForm im Formular Navigator > Reiter Daten > Inhalt: Geschlecht (die Geschlecht-Tabelle)
Verknüpfen von (...) Tabelle AP: AP_ID Tabelle Geschlecht: AP_ID > Formular-Eigenschaften schließen.
Das ganze Formular schließen und dann wieder öffnen. Sollte jetzt eigentlich funktionieren.
Tabellenspalten in Deiner Geschlecht Tabelle kannst Du auch manuell einfügen bzw. Ausblenden, indem Du mit der rechten Maustaste auf die jeweilige Tabellenüberschrift klickst (Im Bearbeiten Modus)
z.B. Spalte einfügen > Textfeld
Auf dem Textfeld > rechte Maustaste > Spalte > Daten > Datenfeld ....usw.
Solange es so hierarchich bleibt, mit den 1:N Beziehungen, sollte es funktionieren.
Ich hab das ganze mal für M:N Beziehungen machen müssen, da war es aber ne gehörige Portion aufwändiger. Hoffe, dass ich dass nicht beschreiben soll, da wüsste ich momentan auch nicht mehr, wie das ging
Gruß
Marco
Also, ich geh' mal davon aus, dass Deine Tabellen_ID jeweils über AUTO-Wert = Ja gefüllt wird, also
Kunde_ID: Integer, Auto-Wert=Ja;
AP_ID: Integer, Auto-Wert=Ja;
In der Tabelle AP gibt es ebenfalls ein Feld Kunde_ID: Interger, Auto-Wert= Nein
Von Tabelle Kunde, Feld: Kunde_ID zu Tabelle AP, Feld: Kunde_ID gibt es eine 1:N Beziehung (Einfach die Beziehung von Tabelle Kunde, Feld: Kunde_ID zu Tabelle AP, Feld: Kunde_ID ziehen)
Jetzt zu den Formularen, diesmal automatisch:
Formular > Formular unter Verwendung des Assistenten erstellen > Feldauswahl > Tabelle: Kunde> alle Felder im Formular > weiter > Subformular hinzufügen > > basiert auf bestehender Beziehung>
AP auswählen > weiter > alle Felder ins Formular > Weiter bis Formularname >Formularname: Kundenformular > Fertigstellen
Das ganze sollte jetzt eigentlich schon so, wie Du es willst, funktionieren, d.h. gebe einen neuen Kunden im Formular, dort obere Tabelle Kunde ein bzw. wähle einen bestehenden aus und gebe in der unteren Tabelle (AP) mehrere AP ein. Die jeweiligen Kunde_ID in der Tabelle werden automatisch eingetragen.
Das gleiche jetzt mal manuell, ist natürlich etwas aufwändiger, dafür kannst Du aber weitere Hierarchien einfügen.
Ob das jetzt Sinn macht, oder nicht, gehe ich nun mal von einer weiteren Tabelle: Geschlecht aus. (siehe Dein Eintrag vom 19.08.2010)
Die hat wieder ein Feld: Geschlecht_ID, Integer, Auto-Wert=Ja;
und ein Feld AP_ID, Integer, Auto-Wert: Nein.
Die gilt es nun auch noch anzuzeigen.
Schließe das noch angezeigte Formular.
Gehe die Formularseite auf das Formular > Rechte Maustaste > bearbeiten.
Ansicht > Symbolleisten > Formular-Entwurf muss aktiviert sein.
Den Formular-Navigator (aus Formular-Entwurf) öffnen (fünfte Schaltfläche im Formular-Entwurf)
Hier siehst Du nun schon die Struktur aus dem Assistenten. Klick mal auf "Main-Form", das ist die Kunden Tabelle
dann auf SubForm, das ist die AP Tabelle.
Jetzt ein neues Formular:
Rechte Maustaste auf SubForm > Neu > Formular. Das kannst Du meinetwegen in GeschlechtForm umbenennen (oder wie auch immer sprechend benennen)
GeschlechtForm bleibt aktiviert.
Wenn nicht schon aktiviert, dann jetzt "Weitere Steuerelemente" aktivieren" (Ansicht > Symbolleisten > Formular-Steuerelemente muss aktiviert sein.
Hier gibt es den Schalter "Weitere Steuerelemente" (3. Schalter von unten)
Tabellen-Kontrollfeld auswählen und bei gedrückter linker Maustaste auf dem Formularhintergrund ein Feld aufziehen.
Im "Tabellen-Assistent-Daten" die Tabelle Geschlecht auswählen. > weiter > alles auswählen
Rechte Maustaste auf GeschlechtForm im Formular Navigator > Reiter Daten > Inhalt: Geschlecht (die Geschlecht-Tabelle)
Verknüpfen von (...) Tabelle AP: AP_ID Tabelle Geschlecht: AP_ID > Formular-Eigenschaften schließen.
Das ganze Formular schließen und dann wieder öffnen. Sollte jetzt eigentlich funktionieren.
Tabellenspalten in Deiner Geschlecht Tabelle kannst Du auch manuell einfügen bzw. Ausblenden, indem Du mit der rechten Maustaste auf die jeweilige Tabellenüberschrift klickst (Im Bearbeiten Modus)
z.B. Spalte einfügen > Textfeld
Auf dem Textfeld > rechte Maustaste > Spalte > Daten > Datenfeld ....usw.
Solange es so hierarchich bleibt, mit den 1:N Beziehungen, sollte es funktionieren.
Ich hab das ganze mal für M:N Beziehungen machen müssen, da war es aber ne gehörige Portion aufwändiger. Hoffe, dass ich dass nicht beschreiben soll, da wüsste ich momentan auch nicht mehr, wie das ging

Gruß
Marco