将多列选择插入列表框值到表中

时间:2014-10-16 13:33:13

标签: vba ms-access access-vba

所以我已经讨论了这个问题很长一段时间了。我已经得到了一些答案,没有给我完全正在寻找的东西。我有一个多选表,并希望将我选择的任何内容添加到我的访问数据库中的一个表中。现在,我希望这是可逆的,这意味着当我将数据拉回到表单即搜索功能时,用户将看到他/她经常选择的数据。

这是我的代码,我目前正在尝试不同类型的解决方案。

    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

1 个答案:

答案 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