使用表单上的组合/下拉菜单填充外键

使用表单上的组合/下拉菜单填充外键

我想使用组合框/下拉菜单填充一个表中的外键字段,其中用户看到的值不是 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

这无法通过表单向导完成。链接表单内容只是一种障眼法。

但这是可以完成的相当很简单,如下。

  1. 使用表单向导尽可能地获取people仅包含表中字段的表单。
  2. 在设计模式下编辑表单(*提示:图标完全不直观,但看起来像这样: 设计模式图标
  3. 向您的表单添加“列表框”控件(注意:不是组合框,在 Base 中它们是不同的)。这将打开一个向导,它将引导您完成其他所有操作。
  4. Choose the table from which the data should be used as basis for the list content,选择jobs
  5. 选择description作为Display field
  6. Field from the Value Table选择下job_id和在Field from the List Table选择下id

就是这样!下拉框现在将完全按预期工作: 职位下拉菜单

如果您不喜欢向导,您可以按如下方式手动编辑列表框控件:

  1. 添加列表框,然后关闭向导。单击“控制”图标,它是一个齿轮。(这也没有意义。)
  2. 输入以下信息,其中“列表内容”显示“从“作业”中选择“描述”、“ID”。请注意,您希望用户看到的字段必须首先出现,并且“绑定字段”是零索引,应该引用 ID 列。

控件属性窗口

就是这样!

相关内容