数据库映射表的访问组合框 2-1 表关系

Posted

技术标签:

【中文标题】数据库映射表的访问组合框 2-1 表关系【英文标题】:Access combo box for DB mapping table 2-1 Table relation 【发布时间】:2019-02-21 16:09:29 【问题描述】:

我正在处理的一个项目遇到了一些障碍,而且我是 Access 的新手,我不知道如果没有 VBA,我想要做的事情是否可行。我环顾四周,但只能找到与显示多列相关的答案,而不是控制数据库中的多个字段。

为了绘制图片,我在数据库中设置了一个映射系统,以帮助我区分表中保存的数据的名称和类型。

设置如下: - 数据表是带有 ID 和行数据的“LineItems”(想想典型的 excel 格式) - 映射表是带有 LineItem_ID、DataType 和 Entity_ID 的“LineItem_Mapper” - 带有 ID 和名称的帮助表“Data_Type” - 两个具有不同属性的“实体”表都有 ID 和名称

拆分的原因在于数据类型是两种类型的数据行为不同。一种类型具有父子关系,另一种是独立行。我想在我的数据库中保留这个结构,并且觉得我已经通过这个映射做到了。

现在,谈谈我遇到的问题。在我的 Access 数据输入表单中,我想使用一个组合框,因为用户在输入时可以为每一行选择的选项是有限的。但是,此组合框会影响上面的映射表。我已经能够使用从我的 2 个实体表构建的自定义查询来使用我想要的列表填充该框,但我不知道如何让 Access 使用此框创建或更新映射表。

我想要发生的是,当我在框中选择某些内容时,会在映射表中创建(或更改)一行,并填充所有 3 列。首先是我要填充的行的 LineItem_ID,然后是 DataType 和 Entity ID 以反映正确的映射。

Access 可以自行执行此操作吗?还是我需要用 VBA 来做这件事?

【问题讨论】:

您需要 VBA。即使不知何故有办法在没有 VBA 的情况下做到这一点,它也会如此复杂且容易出错,因此学习简单的 VBA 比尝试任何其他方式更容易。使用 VBA 做到这一点并不难,特别是如果您知道作为组合框中的值选择的结果要执行的 SQL 语句。 感谢您的快速回答!我想知道我是不是在追逐一只兔子到一个黑洞……如果您将评论添加为答案,我会将其标记为这样。 【参考方案1】:

按照 OP 的要求,将我的推荐转换为答案(更详细一点):

到目前为止,您最好的选择是使用 VBA。我怀疑是否有另一种方法,即使有它会如此复杂,它会不可行且难以管理。

这应该让你开始:

在组合框属性中转到事件选项卡和After UpdateOn Change(查看两个事件之间的差异以查看您喜欢哪种行为)单击向下箭头并选择[Event Procedure],然后单击在 按钮上。这将为您创建一个 VBA 模块,其中包含在触发所选事件时运行的功能。

您可以使用DoCmd.RunSQL "[Access SQL INSERT statement]" 向表中添加记录。

您可以使用Me.[MyComboBoxName] 来获取组合框的当前值。同样,您的活动形式中其他任何东西的价值。

您可以使用DLookup 获取表中任何记录的值。

希望这些能给你一个相对快速的开始。

【讨论】:

以上是关于数据库映射表的访问组合框 2-1 表关系的主要内容,如果未能解决你的问题,请参考以下文章

使用组合框切换记录时访问显示第一条记录

通过 vba ms 访问将多值列的数据绑定到组合框中

访问 2007 表单组合框不接受列表中的项目

在子表单访问中绑定组合框

使用访问表名称填充组合框

从包含 ACCESS 2013 中的多个表的表单中查找带有组合框的记录