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嗎? –