Ms access 尝试查询多选列表框时出现错误3131

Ms access 尝试查询多选列表框时出现错误3131,ms-access,vba,Ms Access,Vba,我有一个多选列表框,我正试图将其用作查询中的条件。我很好,直到代码行“qdf.SQL=strSQL”时才收到错误代码3131。如果我在“strSQL=”命令后面放置一个消息框,它似乎填充了正确的数据 我从表单上的类别列表中提取(表单(“frmMain”).listCat1) 我做错了什么?先谢谢你 Private Sub CAT1_Criteria() Dim varItem As Variant Dim strCAT1 As String Dim ctl As Control Dim str

我有一个多选列表框,我正试图将其用作查询中的条件。我很好,直到代码行“qdf.SQL=strSQL”时才收到错误代码3131。如果我在“strSQL=”命令后面放置一个消息框,它似乎填充了正确的数据

我从表单上的类别列表中提取(表单(“frmMain”).listCat1)

我做错了什么?先谢谢你

Private Sub CAT1_Criteria()

Dim varItem As Variant
Dim strCAT1 As String
Dim ctl As Control
Dim strSQL As String

Dim db As Database
Dim qdf As QueryDef

Set ctl = Forms("frmMain").listCat1

For Each varItem In ctl.ItemsSelected
strCAT1 = strCAT1 & ",'" & ctl.ItemData(varItem) _
& "'"
Next varItem

If Len(strCAT1) = 0 Then
strCAT1 = "Like '*'"
Else
strCAT1 = Right(strCAT1, Len(strCAT1) - 1)
strCAT1 = "IN(" & strCAT1 & ")"
End If

strSQL = "SELECT dbo_CATEGORY1.* FROM dbo_CATEGORY1" & _
      "WHERE dbo_CATEGORY1.[LEVEL1] " & strCAT1 & ";"

Set db = CurrentDb
Set qdf = db.QueryDefs("qryCAT1_Sel")
qdf.SQL = strSQL

'Set qdf = Nothing
'Set db = Nothing

DoCmd.OpenQuery "qryCAT1_Sel"

End Sub

这个问题已经解决了。我把这个:strSQL=“SELECT dbo_CATEGORY1.*从dbo_CATEGORY1.[LEVEL1]”和strCAT1&“;”改为:strSQL=“SELECT dbo_CATEGORY1.*从dbo_CATEGORY1.&Chr(13)&“WHERE dbo_CATEGORY1.[LEVEL1]”和strCAT1&“;”很高兴你解决了这个问题,但从外观上看,你所需要的只是一个空间<代码>“选择dbo_类别1.*.FROM dbo_类别1”&“WHERE dbo_类别1.[LEVEL1]”&strCAT1&“;”读作“选择dbo_类别1.*.FROM dbo_类别1.[LEVEL1]WHERE dbo_类别1.[LEVEL1]类似“*”。因此,除非您的表被称为
dbo_categoritywhere
,否则您将遇到问题。只要将此部分从dbo_CATEGORY1和更改为dbo_CATEGORY1和就可以解决问题。是的。那也行。谢谢你的意见。