microsoft access vba多选列表框插入查询

时间:2017-05-23 19:20:18

标签: sql vba ms-access

我正在Microsoft Access 2010中创建一个表单以上传到SharePoint网站(第一次这样做)。我有一个带有命令按钮的表单我想做两件事,将所有单值项目插入到一个表格中,并将列表框中的所有选项插入到单独的表格中。

我遇到的问题是,当我在顶部放置“DoCmd.OpenQuery'添加目标'”时,它会完美地添加单个值项目,但是当我把它放在底部时,代码不会做任何事情。在任何一种情况下,列表框项都不会添加到第二个表中。这是我的代码:

Private Sub cmdAddGoal_Click()
    On Error GoTo cmdAddGoal_Click_Err

    Dim strSQL As String
    Dim vItem As Variant

    If IsNull(lstIndAcc) Then
        Exit Sub
    End If

    With Me.lstIndAcc
        For Each vItem In .ItemsSelected
            If Not IsNull(vItem) Then
                strSQL = "INSERT INTO Individuals_Accountable (Goal_ID, Employee_ID)" _
                & "SELECT Goal_ID, Employee_ID FROM Goal, Employee WHERE Goal.Activites_And_Milestones = [Forms]![Add Goal]![txtActivities] AND" _
                & "Employee.Employee_Name = " & vItem
            End If
            DoCmd.OpenQuery strSQL
        Next
    End With
    DoCmd.OpenQuery "Add Goal"

    cmdAddGoal_Click_Exit:
    Exit Sub

    cmdAddGoal_Click_Err:
    MsgBox Error$
    Resume cmdAddGoal_Click_Exit

End Sub

1 个答案:

答案 0 :(得分:0)

抱歉,我应该在评论之前仔细查看代码。

OpenQuery用于打开查询对象,而不是运行在VBA中构造的SQL语句。

使用DoCmd.RunSQL strSQL或我更喜欢CurrentDb.Execute strSQL

第一个将生成警告弹出窗口,除非您还有禁用警告的代码。

DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True