![使用表单上的组合/下拉菜单填充外键](https://linux22.com/image/1475804/%E4%BD%BF%E7%94%A8%E8%A1%A8%E5%8D%95%E4%B8%8A%E7%9A%84%E7%BB%84%E5%90%88%2F%E4%B8%8B%E6%8B%89%E8%8F%9C%E5%8D%95%E5%A1%AB%E5%85%85%E5%A4%96%E9%94%AE.png)
我想使用组合框/下拉菜单填充一个表中的外键字段,其中用户看到的值不是 ID,而是来自外部表的描述字段。
考虑以下设置:
create table people (
id int identity primary key,
name varchar(250),
job_id int
);
create table jobs (
id int identity primary key,
description varchar(250)
);
insert into jobs(description) values 'foo';
insert into jobs(description) values 'bar';
我已经在关系窗口中指定了外键关系:
我希望用户能够看到jobs.description
何时person
通过表单创建新内容。
但我不知道该怎么做。如果我基于连接两个表的查询创建表单,则无法创建新数据,如果我基于创建表单people
,则Subform based on existing relation
选项将变灰:
在 Access 中,使用表单向导可以轻松实现这一点:
我如何在 LibreOffice/OOo Base 中实现这一点?
答案1
这无法通过表单向导完成。链接表单内容只是一种障眼法。
但这是可以完成的相当很简单,如下。
- 使用表单向导尽可能地获取
people
仅包含表中字段的表单。 - 在设计模式下编辑表单(*提示:图标完全不直观,但看起来像这样:
)
- 向您的表单添加“列表框”控件(注意:不是组合框,在 Base 中它们是不同的)。这将打开一个向导,它将引导您完成其他所有操作。
- 在
Choose the table from which the data should be used as basis for the list content
,选择jobs
。 - 选择
description
作为Display field
。 - 在
Field from the Value Table
选择下job_id
和在Field from the List Table
选择下id
。
如果您不喜欢向导,您可以按如下方式手动编辑列表框控件:
- 添加列表框,然后关闭向导。单击“控制”图标,它是一个齿轮。(这也没有意义。)
- 输入以下信息,其中“列表内容”显示“从“作业”中选择“描述”、“ID”。请注意,您希望用户看到的字段必须首先出现,并且“绑定字段”是零索引,应该引用 ID 列。
就是这样!