Postgresql 用Libreoffice Base中的下拉列表替换数字外键

Postgresql 用Libreoffice Base中的下拉列表替换数字外键,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

我正在构建一个用于输入信用/借记交易的表单,因此我在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和一个子表单,该子表单引用该控件进行选择

在子窗体内,还有另一个表控件,在与主窗体中选定的分录匹配后,显示
日期
贷方
文本
金额

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


这是可能的,还是我应该使用一个回退解决方案,使用一个从查询填充的只读表,并在子表单中使用单独的编辑字段?

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

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

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


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

credit INTEGER NOT NULL REFERENCES accounts
-->
credit INTEGER NOT NULL REFERENCES accounts(id)
,类似于debit.@wildplasser,它已经起作用了(如果没有指定列,至少Postgres会自动使用主键)。主要问题是在LibreOffice中执行适当的UI。