所以我已经讨论了这个问题很长一段时间了。我已经得到了一些答案,没有给我完全正在寻找的东西。我有一个多选表,并希望将我选择的任何内容添加到我的访问数据库中的一个表中。现在,我希望这是可逆的,这意味着当我将数据拉回到表单即搜索功能时,用户将看到他/她经常选择的数据。
这是我的代码,我目前正在尝试不同类型的解决方案。
Private Sub Command499_Click()
' Set RstRecSet = Nothing
' Set db = CurrentDb
' Dim dateDay As String
' Dim dateWeek As String
' MsgBox (lstDateDay.Value)
' ''dateWeek = lstDateWeek.Value
'
' db.Execute " INSERT INTO tblContacts (DateDay, DateWeek)Values" & "('" & dateDay & "', '" & dateWeek & "');"
' db.Close
'
'Private Sub Command19_Click()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("tblContacts")
For Each itm In lstDateWeek.ItemsSelected
rs.AddNew
rs!dateWeek = lstDateWeek.ItemData(itm)
rs!dateDay = itm
rs.Update
Next
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
答案 0 :(得分:0)
我相信你的意思是MultiSelect ListBox - 而不是表?以下是如何记住所选项目,清除它们,然后打开列表框中的“已选择”属性的示例。
我在表单上有一个列表框,我MultiSelect一些组合,然后我点击'cmdClear'按钮。它会“记住”选定的项目并清除列表选择。稍后,我点击“cmdMark”按钮,然后选择之前的条目。我假设您在插入记录后可能会重新查询列表框?您需要修改代码以满足您的需要(即保存键值而不是位置)。
Dim iListBox(100) As Integer
Dim iListCount As Integer
Private Sub cmdClear_Click()
Dim i As Integer
Dim varItem As Variant
For i = 0 To 100
iListBox(i) = 0
Next i
For i = 0 To region_lst.ListCount - 1
If region_lst.Selected(i) Then
iListBox(i) = 1
region_lst.Selected(i) = False
End If
Next i
End Sub
Private Sub cmdMark_Click()
Dim i As Integer
Dim varItem As Variant
For i = 0 To region_lst.ListCount - 1
If iListBox(i) = 1 Then
region_lst.Selected(i) = True
End If
Next i
End Sub