如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?

Posted

技术标签:

【中文标题】如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?【英文标题】:How do I use ONE control source with MULTIPLE combo boxes from a USER FORM, in Access? 【发布时间】:2016-12-13 19:56:30 【问题描述】:

我目前正在开发工作报价单,我有 21 个组合框,它们都由相同的行源填充。我遇到的问题是当我的所有组合框都设置为相同的控制源时,组合框中的所有列表值都会被过滤并设置为一个值。例如,选择组合框 1 并且现在选择了准备,其他 20 个组合框设置为准备,我无法选择其他选项。现在,如果我的组合框没有控制源,那么前面的示例就可以了。如果我选择组合框 1 并将其设置为 prep 那么我可以选择组合框 2、3、4... 并为每个组合框输入我想要的任何值。我希望能够让每个组合框都有自己的价值。

我希望组合框具有相同的控制源的原因是,当组合框具有选定值时,它将向我的表中添加一条新记录。因此,如果选择了 10 个组合框的值,那么当我单击添加记录按钮时,将有 10 个新行添加到我的表中。

我在想可能有一个循环来完成这项工作,但我不熟悉使用 vba 运行 sql??

【问题讨论】:

【参考方案1】:

您不能使用相同的控制源在同一个表单上生成多条记录。它们必须是未绑定的。至少,我不知道如何按照您设置的方式进行这项工作,但仍然可以提供帮助。

删除控制源但保留行源。

您需要一个查询来将值保存到您的表中:

INSERT INTO MyTableName ([MyFieldName]) VALUES ('[ComboboxValue]');

复制此代码并粘贴到查询生成器中。使用您希望保存单个组合框值的适当对象名称覆盖“MyTableName”和“MyFieldName”。它一次只添加一行。 [ComboboxValue] 将是我们用来将每个组合值传递给查询以执行的参数。

将查询命名为您想要的任何名称并保存。我将使用占位符“MyQuery”,确保您更新它!

在表单上创建一个命令按钮,并在其 On Click 事件中粘贴此 VBA 代码(您需要更新我使用 Me!ComboboxName 的组合框引用):

Dim qdf As DAO.QueryDef
Dim combo As String

Set qdf = CurrentDb.QueryDefs("MyQuery")

combo = Me!Combobox1Name
qdf!ComboboxValue = combo
qdf.Execute

combo = Me!Combobox2Name
qdf!ComboboxValue = combo
qdf.Execute

'Copy those three lines for each combobox, adjust your combobox references accordingly, 
'or use a loop

'End your procedure like this:
Set qdf = Nothing

如果您使用的是多列组合框,您可能需要将引用从Me!Combobox1Name 调整为Me!Combobox1Name.Column(1)

【讨论】:

以上是关于如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

访问表单控件闪烁控件是来自Class的setFocus

如何在 vba(access) 中将变量设置为我的表单列表框之一?

MS Access 中的 .Net 用户控件

如何从winform中将值传递给用户控件?

如何在 MS-Access 的表单上显示 Web 浏览器控件中的表格字段内容?

当用户在 MS Access 中修改表中的另一列时,如何在 SQL Server 中将列设置为今天的日期 [关闭]