Tipps und Ratschlag

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

zillo
*
Beiträge: 18
Registriert: Fr, 04.03.2005 18:52
Wohnort: Ruhrgebiet

Tipps und Ratschlag

Beitrag von zillo »

Hallo zusammen!

Ich versuche mich gerade am Beispiel einer Musikdatenbank in Datenbanken einzuarbeiten!
Ich habe 3 Tabellen in OOo2.0 erstellt. Die erste Tabelle nimmt die CD-Titel auf und hat die Felder CD_Nr. und CD_Titel! Die zweite Tabelle nimmt den Interpreten auf , mit den Feldern Interpret_Nr. und Interpret_Name. In der dritten Tabelle werden die Songs gespeichert. Dort habe ich die Felder Song_Nr., Song, Interpret und CD.
Primärschlüssel wurden vergeben und die Felder Interpret und CD aus der Tabelle Song wurden sog. Fremdschlüssel!
Anschließend habe ich eine Beziehung zwischen den drei Tabellen hergestellt.

Abfragen bekomme ich hin!

Ich möchte nun durch ein (bzw. mehrere) Formulare die Eingabe erleichtern. Ich stelle mir das so vor, dass ich z.B. nach der Eingabe eines Songs über eine Drop/Down-Auswahl den Interpret auswählen kann. Falls dieser nicht in der Liste ist, würde ich gerne über einen Schalter innerhalb des Formulars ein weiteres Formular öffnen, mit dem ich dann einen Interpreten in die entsprechende Tabelle hinzufügen und anschließend übernehmen kann!

Hat jemand einen Tipp wie ich da vorgehen muß? Oder gibt es auch eventuell andere Lösungsansätze?

Ich sage schonmal Danke!


Gruß

Zillo
fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Teilweise gehts mit:

Beitrag von fichte.buche »

Hallo,

ich kann dir nur sagen:
Die Auswahl funktioniert über Listenfelder im Formular.

Allerdings wie man von einem Formular ein anderes in OOo1.9.xxx öffnen kann ist mir bisher nicht bekannt. (Würde mich auch interessieren)

Ich habs bisher bei einfachen Sachen immer so gemacht, daß ich in einem Formular 2 Tabellen auf jeweils eine Datentabelle verbunden ist.

Viele Grüße
Fichte.Buche
Mr.Ioes
******
Beiträge: 524
Registriert: Fr, 12.03.2004 10:02

Beitrag von Mr.Ioes »

Hallo zillo,

ich stehe vor ähnlichen Problemen. Letztlich musst Du wohl die Formularfelder mit ereignisgesteuerten Abfragen hinterlegen, doch ich krieg so was nicht hin.

Gruß - Mr.Ioes
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Re: Tipps und Ratschlag

Beitrag von Onkel Hatti »

zillo hat geschrieben:Hallo zusammen!

Ich versuche mich gerade am Beispiel einer Musikdatenbank in Datenbanken einzuarbeiten!
Ich habe 3 Tabellen in OOo2.0 erstellt. Die erste Tabelle nimmt die CD-Titel auf und hat die Felder CD_Nr. und CD_Titel! Die zweite Tabelle nimmt den Interpreten auf , mit den Feldern Interpret_Nr. und Interpret_Name. In der dritten Tabelle werden die Songs gespeichert. Dort habe ich die Felder Song_Nr., Song, Interpret und CD.
Primärschlüssel wurden vergeben und die Felder Interpret und CD aus der Tabelle Song wurden sog. Fremdschlüssel!
Anschließend habe ich eine Beziehung zwischen den drei Tabellen hergestellt.

Abfragen bekomme ich hin!

Ich möchte nun durch ein (bzw. mehrere) Formulare die Eingabe erleichtern. Ich stelle mir das so vor, dass ich z.B. nach der Eingabe eines Songs über eine Drop/Down-Auswahl den Interpret auswählen kann. Falls dieser nicht in der Liste ist, würde ich gerne über einen Schalter innerhalb des Formulars ein weiteres Formular öffnen, mit dem ich dann einen Interpreten in die entsprechende Tabelle hinzufügen und anschließend übernehmen kann!

Hat jemand einen Tipp wie ich da vorgehen muß? Oder gibt es auch eventuell andere Lösungsansätze?

Ich sage schonmal Danke!


Gruß

Zillo
Moinsen

Das Ganze ist nicht ganz trivial. Ich habe mir eine Mediendatenbank mit 6 oder 7 Tabellen erstellt, die ich ähnlich fülle.
Die Comboboxen fragen bei Erstellung ab, welche Tabelle sie darstellen sollen. Jetzt hab ich hinter den Listboxen ein Textfeld erstellt, daß die ID des in der Combobox gewählten Elementes darstellt. Dazu setzte ich eine "Dummy-Combobox" ein, dessen Inhalt ich dynamisch anpasse. Das Textfeld ist dann auch gleichzeitig der Eintrag in der "Haupttabelle".

Beispiel:

Haupttabelle: Nr, Titel, CD-ID, Interpret-ID

CD-Tabelle: CD-ID, CD Titel

Interpret-Tabelle: Interpret-ID, Name

In der Combobox gebe ich an, daß ich die Spalte "CD-Titel" aus der Tabelle CD-Tabelle sehen will. Mit dem Ereignis "modifiziert" verknüpfe ich ein Makro, das sinngemäß enthält:

Abfr="Select CD-ID from CD-Tabelle where CD-Titel=gewählter Eintrag aus der Combobox"
dummycombobox.listsource=Abfr

Jetzt beinhaltet die "Dummy-Combobox" des Ergebnis dieses Select-Befehls. Meistens (bei mir immer) kann es nur ein einziges Element dieser Abfrage geben. Das hole ich (sinngemäß):

Textfeld.Text=Dummycombobox.getElement(0)

und schreibe es in das Textfeld. - Voila - befüllt.
Die Syntax, die ich oben gewählt habe, stimmt natürlich nicht, es soll nur den Weg verdeutlichen, wie ich es realisiert habe.
Den gleichen Weg dann für den Interpreten.

Wenn der nicht da ist (oder die CD), dann kann man im Formular einen Knopf definieren, der eine Aktion (erste Dalogseite) "Dokument/Webseite öffnen" enthält. Im darunterliegenden URL-Feld steht der Dateiname des Formulars. Damit kann ich aus dem Formular heraus andere Formulare aufrufen.
Ach ja, ich habe die Formulare extern abgespeichert, also nicht innerhalb der Datenbank. Wie man daraus die Formulare aufrufen kann, weiß ich auch nicht.

Gruß
Hatti
Mr.Ioes
******
Beiträge: 524
Registriert: Fr, 12.03.2004 10:02

Beitrag von Mr.Ioes »

Hallo,

könnt Ihr mir bitte erklären was eine Combo-, bzw. ein Listbox genau ist? Das verstehe ich nicht, insb. habe ich (fast) kein Basic-Verständnis.

Gruß - Mr.Ioes
zillo
*
Beiträge: 18
Registriert: Fr, 04.03.2005 18:52
Wohnort: Ruhrgebiet

Beitrag von zillo »

Moins!

Zunächst mal bin ich froh, dass ich wohl nicht der einzige bin, der die "Start-Schwierigkeiten" hat!

Ich hatte aber auch schon befürchtet, dass ich (wie von Onkel Hatti angedeutet) ohne Makro-Programmierung wohl nicht auskommen werde.
Ich hätte mir gewünscht, dass man bei der Feldeigenschaft einem Button eine Funktion zuweisen kann, wie ungefähr: öffnet Formular xy! Dies würde ja mein Problem lösen. Ich weiß, dass es diese Eigenschaft gibt. Allerdings kann ich damit nur Formulare öffnen, die ich zuvor ausserhalb der Datenbank abgespeichert habe. Und damit kann ich dann nicht mehr auf die dahinter liegende Tabelle zugreifen.

Und der Frage von Mr. Ioes schließe ich mich an! Ich habe zwar Listenfelder erstellt, die auch funktionieren, aber so ganz ist mir der Unterschied zwischen Combo- u. Listenbox nicht klar!
Onkel Hatti
***
Beiträge: 97
Registriert: So, 15.05.2005 15:44

Beitrag von Onkel Hatti »

zillo hat geschrieben:Moins!

Zunächst mal bin ich froh, dass ich wohl nicht der einzige bin, der die "Start-Schwierigkeiten" hat!

Ich hatte aber auch schon befürchtet, dass ich (wie von Onkel Hatti angedeutet) ohne Makro-Programmierung wohl nicht auskommen werde.
Ich hätte mir gewünscht, dass man bei der Feldeigenschaft einem Button eine Funktion zuweisen kann, wie ungefähr: öffnet Formular xy! Dies würde ja mein Problem lösen. Ich weiß, dass es diese Eigenschaft gibt. Allerdings kann ich damit nur Formulare öffnen, die ich zuvor ausserhalb der Datenbank abgespeichert habe. Und damit kann ich dann nicht mehr auf die dahinter liegende Tabelle zugreifen.

Und der Frage von Mr. Ioes schließe ich mich an! Ich habe zwar Listenfelder erstellt, die auch funktionieren, aber so ganz ist mir der Unterschied zwischen Combo- u. Listenbox nicht klar!
Moinsen nochmal

Ja, ohne Makroprogrammierung gehts nicht...
Ja, aber das eine Problem kann ich nicht nachvollziehen. Man kann einem Button die Funktion "öffne Formular xy" zuweisen. Das geht nur auf ausserhalb der Datenbank gespeicherte Dokumente, aber wieso sollte man dann nicht mehr auf die entsprechenden Tabellen zugreifen können?
Bei der Erstellung einer Datenbank kann man angeben, ob die Datenbank registriert werden soll. Wenn ja, dann wird die Datenbank unter "Extras-Optionen-OpenOffice.org Base-Datenbanken" angemeldet. Wenn man das bei der Erstellung nicht gemacht hat, kann man das hinterher auch noch machen. Und schon hat man auch von ausserhalb Zugriff auf die Daten. Unter F4 taucht die Datenbank dann auch auf...

Listbox ist eine Liste. Combobox ist eine Kombination aus Textfeld und Liste. Die Liste ist meistens klappbar, wenn ein Eintrag aus der Liste ausgewählt wird, dann wird der Eintrag in das Textfeld geschrieben. Man kann also auf den gewählten Inhalt der Combobox wie auf ein Textfeld zugreifen. Ich finde, das ist deutlich leichter zu programmieren :?

Gruß
Hatti
zillo
*
Beiträge: 18
Registriert: Fr, 04.03.2005 18:52
Wohnort: Ruhrgebiet

Beitrag von zillo »

Und wieder was gelernt!

War mir nicht ganz klar, was das mit der Registrierung der Datenbank auf sich hatte!

Werde mich dann wohl in die Makroprogrammierung einarbeiten dürfen!

Schönen Dank Onkel Hatti!
Antworten