组合/列表框中的控制源和绑定源有什么区别?

时间:2017-06-23 06:44:13

标签: ms-access access-vba

在Combo / List Box的属性表中,我们有Control Source,我们也有绑定列。

控制源与绑定列有何不同?

1 个答案:

答案 0 :(得分:1)

Control Source是您的组合框链接到的表中的字段,它也可以是查询或SQL语句。无论哪种方式,它都会显示该字段中的数据,并且您对组合框所做的任何更新都将反映在该字段中(除非它是不可更新的查询)。
https://support.office.com/en-gb/article/ControlSource-Property-994c3208-c4e5-431d-8ec8-dabd5f91c77e

Bound ColumnRow 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

实施例

我在我的数据库中设置了两个表:
enter image description here
tbl_List包含用于填充我们的组合框的四条记录。

Main_Field_A中的

tbl_Main将保留在组合框中选择的绑定列值(这将是链接到tbl_Lists主键的外键)。
组合框的Property Sheet设置如下:
enter image description here
请注意Row Source TypeTable/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厘米,因此它是隐藏的 enter image description here

在下面的示例中,我已将列宽更改为0cm;1cm,因此隐藏了绑定列 enter image description here
正如您所看到的,它将主键值输入到表中,而不是描述中。

返回记录的查询将是:

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