如何在 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 中将一个控件源与来自用户表单的多个组合框一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 vba(access) 中将变量设置为我的表单列表框之一?