Zuerst muss ich etwas ausholen, damit mein Problem verständlich wird.
Es gibt folgende Tabellen: Klassen (KLASSE_ID, KLASSENNAME), Fächer (Fach_ID, Fachname), Klassenundfächer (KUF_ID, KLASSE_ID, FACH_ID)
Gleich lautende Felder sind als 1:n Relation verknüpft.
Aus einer Gesamtliste von Fächern (in der Tabelle Fächer) sollen nun für jede Klasse extra die tatsächlich verwendeten / vorhandenen Fächer über ein Formular ausgewählt werden können.
Ich hatte mir das Formular so vorgestellt:
Ein Kombinationsfeld zur Auswahl der Klasse, die bearbeitet werden soll (Klassenname)
darunter eine Tabelle (Unterformular?), das die für diese Klasse bereits gewählten Fächer anzeigt und dann noch evtl. zusätzliche Fächer aus der Tabelle Fächer hinzufügen lässt. Löschen wäre auch noch gut.
Irgendwie gibt es keine sinnvolle Verbindung zwischen Hauptformular und Unterformular und entweder kann ich die Klasse über ein Textfeld anzeigen und leider auch verändern oder es ist gar keine Auswahl möglich.
Steckt der Fehler vielleicht schon im Aufbau der Tabellen. Bin zugegebenermaßen ein Laie, was Datenbanken betrifft.
Vielen Dank im Voraus.
Vorauswahl in Formular
Moderator: Moderatoren
Re: Vorauswahl in Formular
Ich habe jetzt selbst einen ersten Schritt zu einer Lösung gefunden, nachdem 53 User auch keine Idee hatten ... vielleicht war es die falsche Kategorie, weil für die Lösung ein Makro (Starbasic) notwendig ist. Aber vorab frage ich mich, warum so eine elementare Funktion in OpenOffice nicht drin ist und an wen man sich wenden kann, damit so etwas in Zukunft mit Assistenten gemacht werden kann.
Jetzt ist das Formular so aufgebaut: im Hauptformular ("Standard") ist eine Tabelle mit den Klassen und Fächern. Im Unterformular ("SubForm") gibt es ein Listenfeld, das die Klassen (und die IDs) enthält ... mit einem Kombinationsfeld hatte ich keinen Erfolg. Unterformular und Hauptformular sind nicht verknüpft. Ich hatte es mit einem Assistenten erstellt und danach die Verbindung im Unterformular wieder gelöscht. Dann noch im Listenfeld bei "modifiziert" dieses Makro ComTabSel aufrufen:
Dann wird bei jeder Änderung im Listenfeld, der Filter in der Tabelle neu gesetzt und nur noch die Fächer dieser Klasse angezeigt.
Die Bezeichnung oComboBoxModel kommt noch daher, weil ich es zuerst mit einem Kombinationsfeld versucht hatte.
Ich hoffe, es hat jemandem geholfen.
Jetzt ist das Formular so aufgebaut: im Hauptformular ("Standard") ist eine Tabelle mit den Klassen und Fächern. Im Unterformular ("SubForm") gibt es ein Listenfeld, das die Klassen (und die IDs) enthält ... mit einem Kombinationsfeld hatte ich keinen Erfolg. Unterformular und Hauptformular sind nicht verknüpft. Ich hatte es mit einem Assistenten erstellt und danach die Verbindung im Unterformular wieder gelöscht. Dann noch im Listenfeld bei "modifiziert" dieses Makro ComTabSel aufrufen:
Code: Alles auswählen
Sub Main
End Sub
Sub ComTabSel(oEvent)
Dim oEreignis, oFormular, oComboBox, oTable, oDoc, sFilter as String, n
oFormular = thisComponent.drawpage.forms.getbyindex(0)
oSubForm = oFormular.getByName("Subform")
oComboBoxModel = oEvent.Source.getModel()
sFilter = oComboBoxModel.StringItemList(oComboBoxModel.SelectedItems(0))
oFormular.filter = "Klasse = " & "'" & sFilter & "'"
oFormular.reload
End Sub
Die Bezeichnung oComboBoxModel kommt noch daher, weil ich es zuerst mit einem Kombinationsfeld versucht hatte.
Ich hoffe, es hat jemandem geholfen.