访问VBA:将多选列表框的值放入表中

时间:2014-10-10 18:00:20

标签: 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.Selected)
''dateWeek = lstDateWeek.Value

db.Execute " INSERT INTO tblContacts (DateDay, DateWeek)Values" & "('" & dateDay & "', '" & dateWeek & "');"
db.Close

End Sub

正如你所看到的,我一直在尝试很多不同的事情。我的问题是获取列表框的值;即使已选择数据,它仍会显示为null。我得到的确切错误是:"无效使用Null。"

让我知道你的想法。

谢谢, 沙拉

编辑:

       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

dateDay和dateWeek是tblContacts中的列。

1 个答案:

答案 0 :(得分:0)

您需要使用ItemsSelected集合来获取“多选”列表框中所选项的索引,然后迭代它们并使用索引来引用存储在ItemData集合中的行。作为此迭代的一部分,只需创建一个记录集并添加字段并进行更新。有不同的方法来处理这个部分,但我喜欢这个如下所示。

要使用我的示例,只需创建一个名为tblTest的表和两列Description(文本)和Day作为数字。 创建一个表单并添加名为DaysOfWeek的多选列表框。将它作为ValueList填入星期几,然后添加一个我标记为Store的按钮。

将以下代码粘贴到按钮点击事件中并尝试

Dim db As Database
   Dim rs As Recordset

   Set db = CurrentDb()
   Set rs = db.OpenRecordset("tblTest")
   For Each itm In DaysOfWeek.ItemsSelected
        rs.AddNew
        rs!Description = DaysOfWeek.ItemData(itm)
        rs!Day = itm
        rs.Update
  Next
  rs.Close
  Set rs = Nothing
  Set db = Nothing

我的活动程序如下:

Private Sub Command19_Click()
   Dim db As Database
   Dim rs As Recordset

   Set db = CurrentDb()
   Set rs = db.OpenRecordset("tblTest")
   For Each itm In DaysOfWeek.ItemsSelected
        rs.AddNew
        rs!Description = DaysOfWeek.ItemData(itm)
        rs!Day = itm
        rs.Update
  Next
  rs.Close
  Set rs = Nothing
  Set db = Nothing
End Sub

这可以通过为INSERT语句构建SELECT字符串来完成ADO调用,但对我来说这很简单..如果您有任何问题,请告诉我。如果我能弄清楚如何附加我的示例数据库,我会。