我有一个表单,我用它来收集将插入到Access 2016中的数据库表中的信息。我的表单有一个多值组合框(称为cmbContacts),它从Contacts表中提取值( ID和名称)。用户可以从组合框中选择0个或更多个联系人。当用户单击提交按钮时,button_click事件会触发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
一些问题:
答案 0 :(得分:0)
如果组合框中选择/填充了多个项目,那么您可以使用Ubound()来查找多少项。
IF UBound(Me.cmbContacts.OldValue) > 0
For i = LBound(Me.cmbContacts.OldValue) To UBound(Me.cmbContacts.OldValue)
SQL = "INSERT INTO Breweries ([Contact Names].[Value]) VALUES (" + Me.cmbContacts.OldValue(i) + ") WHERE ID=" + Max
CurrentDb.Execute (SQL)
Next i
END IF
请记住,如果只选择一个或没有值,则会出现类型不匹配错误,您将不得不以某种方式处理此问题。
希望这会有所帮助..