在Combo / List Box的属性表中,我们有Control Source,我们也有绑定列。
控制源与绑定列有何不同?
答案 0 :(得分:1)
Control Source
是您的组合框链接到的表中的字段,它也可以是查询或SQL语句。无论哪种方式,它都会显示该字段中的数据,并且您对组合框所做的任何更新都将反映在该字段中(除非它是不可更新的查询)。
https://support.office.com/en-gb/article/ControlSource-Property-994c3208-c4e5-431d-8ec8-dabd5f91c77e
Bound Column
与Row Source
相关联。行源告诉组合框向组合框提供了哪些数据。通常,这将是列表的主键和该列表中项目的描述,例如PersonID和PersonName
https://msdn.microsoft.com/VBA/Access-VBA/articles/combobox-rowsource-property-access
Bound Column
告诉组合框Row Source
中哪个数据字段存储在Control Source
字段中。因此,当您选择PersonName时,将存储该记录的PersonID
https://msdn.microsoft.com/VBA/Access-VBA/articles/combobox-boundcolumn-property-access
我在我的数据库中设置了两个表:
tbl_List
包含用于填充我们的组合框的四条记录。
Main_Field_A
中的 tbl_Main
将保留在组合框中选择的绑定列值(这将是链接到tbl_Lists主键的外键)。
组合框的Property Sheet
设置如下:
请注意Row Source Type
为Table/Query
我们可以在SELECT Field_A, Field_B FROM tbl_List;
中输入Row Source
以获得相同的结果
我们还可以通过键入1;Item1;2;Item2;3;Item3;4;Item4
并将Row Source Type
更改为Value List
此外,Format
标签的Column Count
设置为2,Column Widths
设置为1cm;1cm
。通常,第一个或绑定列的宽度设置为0厘米,因此它是隐藏的
在下面的示例中,我已将列宽更改为0cm;1cm
,因此隐藏了绑定列
正如您所看到的,它将主键值输入到表中,而不是描述中。
返回记录的查询将是:
SELECT Main_Field_ID
, Field_B
, Main_Field_B
FROM tbl_Main INNER JOIN tbl_List ON tbl_Main.Main_Field_ID = tbl_List.Field_A
或者您可以使用Access中的Lookup Field
功能,但这会导致黑暗
http://access.mvps.org/access/lookupfields.htm