postgresql - 在 Libreoffice Base 中用下拉列表替换数字外键

标签 postgresql libreoffice-base

我正在构建一个用于输入信用卡/借记交易的表单,因此我在 PostgreSQL 中有两个表

accounts
    id      INTEGER PRIMARY KEY
    name    VARCHAR(128)

ledger
    id      INTEGER PRIMARY KEY
    credit  INTEGER NOT NULL REFERENCES accounts
    debit   INTEGER NOT NULL REFERENCES accounts
    date    DATE NOT NULL
    amount  NUMERIC(8,2)
    text    VARCHAR(128)

我已经构建了一个带有单个表控件的表单,其中列出了accounts.name,以及一个引用该控件进行选择的子表单。

在子表单内,还有另一个表格控件,显示datecredittextamount借记与主数据中选定的条目相匹配。

到目前为止,这是有效的,但是 credit 列在数字字段内包含数字外键数据。我想要一个下拉字段,让我可以在其位置选择一个帐户。

这可能吗,或者我应该采用后备解决方案,其中包含一个由查询填充的只读表,并在子子表单中单独编辑字段?

最佳答案

LibreOffice 中可用的功能是列表框。棘手的是网格/表控件上的各个字段不会显示在表单导航器中。但是,您可以通过进入编辑模式并用鼠标右键单击网格的标题行/列选择器,将网格上的字段类型转换为列表框。在下拉菜单中,选择“替换为”和“列表框”。现在网格中的字段/列是一个列表框。

然后打开“控制”对话框,再次单击网格中相应的标题/列选择器(您刚刚将其更改为列表框)。转到“数据”选项卡。在“列表内容类型”下选择“表”,然后在“列表内容”中选择外键表。当“绑定(bind)字段”的值为“1”时,下拉列表将显示列表源的第一列,并使用第二列的值填充列表框控件中显示的数据源。

为了更好的美观,在控制框的“常规”选项卡中,“下拉”选项选择"is"。

上述步骤将提供的功能在 UI 中与熟悉的组合框几乎没有区别。您还可以直接在 LO 中尝试“组合框”功能,但对该字段类型的支持并不那么强。

关于postgresql - 在 Libreoffice Base 中用下拉列表替换数字外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22212055/

相关文章:

ms-access - LibreOffice Base 无法编辑 MS Access 数据

postgresql - 可以使用 LibreOffice Base 更改 PostgreSQL 表设计吗?

mysql - 如何从两个表中获取数据

postgresql - Postgres 子查询限制

postgresql - 过滤 Postgres Json 数组是使用 JsonPath 的数组的子集

sql - 如何使用 libreoffice base 中的表单以多对多关系添加/修改数据?

mysql - 评分作业 [Zaption] 数据库

postgresql - 在 Visual Studio 中连接 DevExpress XtraReports 和 PostgreSQL

javascript - java.Statement.executeQuery() 创建一个不应该的准备好的语句