У меня есть встроенная база данных в Libre Office. Я строю в нем форму и попал в проблему.
У меня есть таблица «Автор» и другая таблица «Публикация», связанная третьей таблицей «AuthorsAndPublications» (это отношение m: n). Я хочу создать форму, основанную вокруг таблицы «Публикация», но она должна показывать всех авторов текущей публикации в не редактируемом списке.
В качестве источника данных для списка, я написал запрос SQL
SELECT "Author"."Surname" FROM "Author", "AuthorsAndPublications" WHERE "AuthorsAndPublications"."FK_Author" = "Author"."ID" AND "AuthorsAndPublications"."FK_Publication" = :publicationid
Теперь я хочу, чтобы параметр editionid автоматически имел значение поля txtPublicationID, которое находится в той же форме, что и мой список. Таким образом, когда форма открыта и показывает публикацию с идентификатором 1, в списке должны отображаться авторы публикации 1, тогда при переходе к следующей публикации авторам должны быть показаны авторы следующей публикации.
После поиска документации и примеров я не смог найти хорошее описание объектной модели Libre Office. Я не нашел пример, касающийся моего случая, но, увидев похожие, лучшее, что я мог придумать, было:
SELECT "Author"."Surname" FROM "Author", "AuthorsAndPublications" WHERE "AuthorsAndPublications"."FK_Author" = "Author"."ID" AND "AuthorsAndPublications"."FK_Publication" = [ThisDatabaseDocument.FormDocuments.GetByName("PublicationForm").GetByName("txtPublicationID").currentvalue]
Но этот запрос не работает, я получаю только ошибку «Синтаксическая ошибка в выражении SQL».
Как правильно ссылаться на значение текстового поля в источнике данных для списка?
источник