Wie kann ich m: n Beziehungen in einem Formular in der Libre Office-Basis darstellen?

1164
rumtscho

Ich habe eine eingebettete Datenbank in Libre Office. Ich baue ein Formular darin auf und bin in ein Problem geraten.

Ich habe eine Tabelle namens "Author" und eine andere Tabelle namens "Publication", die durch eine dritte Tabelle "AuthorsAndPublications" verbunden ist (es ist eine m: n-Beziehung). Ich möchte ein Formular erstellen, das auf der Tabelle "Publication" basiert, aber es sollte alle Autoren der aktuellen Publikation in einer nicht bearbeitbaren Listbox anzeigen.

Beziehungen Bilden

Als Datenquelle für das Listenfeld habe ich die SQL-Abfrage geschrieben

SELECT "Author"."Surname" FROM "Author", "AuthorsAndPublications" WHERE "AuthorsAndPublications"."FK_Author" = "Author"."ID" AND "AuthorsAndPublications"."FK_Publication" = :publicationid

Jetzt möchte ich, dass der Parameter Publicationid automatisch den Wert des Felds TxtPublicationID enthält, das sich auf demselben Formular wie mein Listenfeld befindet. Wenn also das Formular geöffnet ist und die Publikation mit der ID 1 angezeigt wird, sollte das Listenfeld die Autoren der Publikation 1 anzeigen. Wenn ich zur nächsten Publikation navigiere, sollten den Autoren die Autoren der nächsten Publikation angezeigt werden.

Nachdem ich nach Dokumentation und Beispielen gesucht hatte, konnte ich keine gute Beschreibung des Objektmodells von Libre Office finden. Ich habe kein Beispiel für meinen Fall gefunden, aber nachdem ich ähnliche gesehen hatte, war das Beste, was ich finden konnte:

SELECT "Author"."Surname" FROM "Author", "AuthorsAndPublications" WHERE "AuthorsAndPublications"."FK_Author" = "Author"."ID" AND "AuthorsAndPublications"."FK_Publication" = [ThisDatabaseDocument.FormDocuments.GetByName("PublicationForm").GetByName("txtPublicationID").currentvalue]

Diese Abfrage funktioniert aber nicht, ich bekomme nur den Fehler "Syntaxfehler im SQL-Ausdruck".

Wie verweise ich den Wert des Textfelds in der Datenquelle für das Listenfeld richtig?

3

0 Antworten auf die Frage