0
我有一个表单用于收集将在Access 2016中插入到数据库表中的信息。我的表单有一个多值组合框(称为cmbContacts)从联系人表(ID和名称)中提取值。用户可以从组合框中选择0个或更多联系人。当用户单击提交按钮时,button_click事件触发VBA代码来格式化信息并将其插入表中。从访问vba中的多值组合框中获取值
我需要做的是从组合框中获取每个选定联系人的ID。
这是我到目前为止有:
If Me.cmbContacts.ItemsSelected.Count > 0 Then 'Only run code if there are contacts selected'
'Select the most recently added entry (added right before this if statement)'
Dim rs As DAO.Recordset, Max As Integer
SQL = "SELECT MAX(ID) FROM Breweries"
Set rs = CurrentDb.OpenRecordset(SQL)
Max = rs.Fields(0)
'Insert each selected Contact ID into Breweries.[Contact Names].Value'
Dim itm As Variant
For Each itm In Me.cmbContacts.ItemsSelected
SQL = "INSERT INTO Breweries ([Contact Names].[Value]) VALUES (" + itm + ") WHERE ID=" + Max
CurrentDb.Execute (SQL)
Next itm
End If
的一些问题:
- Me.cmbContacts.ItemsSelected.Count总是等于0,无论有多少项目在组合框中 选择
- 因为cmbContacts.ItemsSelected不包含所选项目,所以for循环不运行。我不知道为什么它没有注册选定的项目
我不太清楚你为什么要用Max。您不需要SQL语句中的Where部分。 SQL =“INSERT INTO Breweries([Contact Names]。[Value])VALUES(”+ itm +“)”。 你为什么试着用txt作为后缀指向文本框的combobox? – INOPIAE
我确实需要最大值 - 它给了我最近添加到啤酒厂表中的条目的ID。然后,我将值添加到具有该ID的实体的“联系人姓名”字段中。 我可以更新我的代码,以便_prefix_更好地与对象对齐 – estoner
MSA16中的多选组合框必须是新的。或者你在使用Listbox吗? –