如何在 Libre Office 基础中以表单形式表示 m:n 关系?

如何在 Libre Office 基础中以表单形式表示 m:n 关系?

我在 Libre Office 中有一个嵌入式数据库。我正在其中创建一个表单,但遇到了问题。

我有一个名为“Author”的表和另一个名为“Publication”的表,它们由第三个表“AuthorsAndPublications”连接(这是 m:n 关系)。我想创建一个基于“Publication”表的表单,但它应该在不可编辑的列表框中显示当前出版物的所有作者。

关系 形式

作为列表框的数据源,我编写了 SQL 查询

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

现在我希望参数 publicationid 自动具有字段 txtPublicationID 的值,该字段与我的列表框位于同一表单上。因此,当表单打开并显示 ID 为 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 表达式中的语法错误”。

如何正确引用列表框数据源中的文本框的值?

相关内容