如何将列表框中的选定项添加到表中?

时间:2016-03-01 09:35:18

标签: vba listbox access-vba

我还是VBA的新手,非常感谢一些帮助。 我需要将列表框中的选定项添加到表中,但每次我尝试显示的表都没有值。 这是代码:

Private Sub BefehlX_Click()

    Dim db As Database
    Dim rs As Recordset
    Dim qdf As QueryDef
    Dim varItem As Variant
    Dim strCriteria As String
    Dim strSQL As String
    Dim lstBox As ListBox`

    DoCmd.SetWarnings (False)

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("T_Auswertung", dbOpenDynaset)
    Set qdf = db.QueryDefs("Abfrage4")
    Set lstBox = Me!ListField1       

    For Each varItem In lstBox.ItemsSelected
        strCriteria = strCriteria & ",'" & lstBox.ItemData(varItem) & "'"
        rs.AddNew

        'what should be placed here?`

        rs.Update
    Next varItem
    Set rs = Nothing

    If Len(strCriteria) = 0 Then
       MsgBox "Sie haben keine Queues gewählt!" _
             , vbExclamation, "Nichts zu finden!"
       Exit Sub
    End If
    strCriteria = Right(strCriteria, Len(strCriteria) - 1)

    DoCmd.SetWarnings (True)

End Sub

1 个答案:

答案 0 :(得分:0)

如果要将所有值存储在由“,”拆分的单个字符串中,请将recorset.Add移动到For循环外部:

For Each varItem In lstBox.ItemsSelected
    strCriteria = strCriteria & ",'" & lstBox.ItemData(varItem) & "'"
Next varItem

'removes first ","
strCriteria = Right(strCriteria , Len(strCriteria ) - 1)

rs.AddNew
rs!NAME_OF_FIELD = strCriteria 
rs.Update

如果要将所有值存储在单独的注册表中(因此ID = 1已选中item,而ID = 2具有下一个,依此类推)将add添加到For循环中:

For Each varItem In lstBox.ItemsSelected
    strCriteria =  lstBox.ItemData(varItem)
    rs.AddNew
    rs!NAME_OF_FIELD = strCriteria 
    rs.Update
Next varItem