Vba 使用Microsoft Access列表框进行多选
我正在尝试使用列表框过滤拆分表单,但我一直收到错误“3075” 我使用了调试工具,得到了: strearch=“52185A,515674B” Task=“从tOrder中选择*,其中((52185A,515674B)中的[OrderID]) 我很确定我遗漏了一些引文,但我似乎不知道在哪里。它们都是短文本格式Vba 使用Microsoft Access列表框进行多选,vba,list,ms-access,filter,Vba,List,Ms Access,Filter,我正在尝试使用列表框过滤拆分表单,但我一直收到错误“3075” 我使用了调试工具,得到了: strearch=“52185A,515674B” Task=“从tOrder中选择*,其中((52185A,515674B)中的[OrderID]) 我很确定我遗漏了一些引文,但我似乎不知道在哪里。它们都是短文本格式 Option Compare Database Private Sub cmdSearch_Click() Dim varltem As Variant Dim strSearch
Option Compare Database
Private Sub cmdSearch_Click()
Dim varltem As Variant
Dim strSearch As String
Dim Task As String
For Each varltem In Me!LstMatricule.ItemsSelected
strSearch = strSearch & "," & Me!LstMatricule.ItemData(varltem)
Next varltem
If Len(strSearch) = 0 Then
Task = "select * from tOrder"
Else
strSearch = Right(strSearch, Len(strSearch) - 1)
Task = "select * from tOrder where ((OrderID] in (" & strSearch & "))"
End If
DoCmd.ApplyFilter Task
End Sub
这很难看到,但基本上我在每个变量周围添加了单引号。您希望结果如下所示:
strSearch = "'52185A', '515674B'"
我个人会这样做:
strSearch = strSearch & IIf(Len(strSearch) = 0, "", ",") & "'" & Me!LstMatricule.ItemData(varltem) & "'"
如果要添加的ID超过2-3个,那么计算成本会稍微高一些,但要比以后在开始时删除起始逗号更干净
strSearch = strSearch & IIf(Len(strSearch) = 0, "", ",") & "'" & Me!LstMatricule.ItemData(varltem) & "'"