Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何引用查找表的外键?_Vba_Ms Access - Fatal编程技术网

Vba 如何引用查找表的外键?

Vba 如何引用查找表的外键?,vba,ms-access,Vba,Ms Access,我的Access数据库有MainTable,其中包括事件描述等字段 我从另一个表EventTable获得事件描述,该表有两个字段EventID和EventDescription 我的表单有一个组合框,允许用户选择事件描述,并且可以正常工作。但是在我的VBA代码中,我必须能够捕获EventID本身 有没有一种不在表单上放置EventID控件的方法?即使是不可见的列?也只需在组合框上使用一个隐藏列,您可以通过控件向导进行设置。但是,具体的设计步骤包括: 在属性表的“数据”选项卡下,使用EventID

我的Access数据库有MainTable,其中包括事件描述等字段

我从另一个表EventTable获得事件描述,该表有两个字段EventID和EventDescription

我的表单有一个组合框,允许用户选择事件描述,并且可以正常工作。但是在我的VBA代码中,我必须能够捕获EventID本身


有没有一种不在表单上放置EventID控件的方法?即使是不可见的列?

也只需在组合框上使用一个隐藏列,您可以通过控件向导进行设置。但是,具体的设计步骤包括:

在属性表的“数据”选项卡下,使用EventID作为组合框的控制源。这假定窗体绑定到记录源

在属性表的“数据”选项卡下,使用两列SQL查询,其中包括EventID隐藏列和EventDescription显示列作为行源,行源类型为Table/query。您可以添加更多列,并对下面的3进行相应的调整。确保1用于绑定列或与EventID对齐的任何列位置

选择EventID、EventDescription 从事件中 在属性表的“格式”选项卡下,对于列计数查询中的每一列,使用2或更多;对于列宽中的第一项,使用0;对于第二项或更多项,使用非零,例如,0;2.理想情况下,宽度加起来等于组合框的总宽度


总之,上面将在combobox中隐藏EventID,但向用户显示EventDescription,并且选择的任何选项都将返回相应的EventID值。

这很容易,特别是因为我已经用这种方式设置了combobox。您已经告诉我,me.cboEvent返回EventId,即使组合框显示EventDescription。谢谢那么,如果我真的想返回EventDescription,我该怎么办呢?如果EventID与EventDescription绑定,为什么要返回它?注意:在关系模型中使用PK/FK是为了避免数据冗余。避免在子表中保存查找表中的重复信息。使用查询将数据拉到一起。可更新表单可以绑定到SQL查询。事件描述更便于用户阅读,因此我希望在表单上显示它。此解决方案正是这样做的。用户将看到事件描述,但隐藏相应的事件ID,此ID将是保存的值。在VBA中,您可以使用属性访问多列的值。否则,使用DLookUp检索相应的查找值,甚至检索在这些PK/FK处联接的SQL查询。快乐编码!