您需要在 vba 中构建一个 sql 语句,然后使用记录集运行它,以获取结果。
显然我不知道您需要获取的数据是什么,或者从表中获取数据,但是需要按如下方式构建 where 子句:
dim wc as string
wc = wc & iif(lst_costcenter.ItemsSelected.Count = 0, "", " AND " & InClause(lst_costcenter, "tablename.columnname", false))
wc = wc & iif(lst_itemnumber.ItemsSelected.Count = 0, "", " AND " & InClause( ...
最后,在构建 sql 语句时,您需要将 wc 中的第一个“AND”切掉并替换为“WHERE”
wc = iif(wc <> "", " WHERE " & mid(trim(wc), 5), "")
InClause 是您需要在模块中或在查询表单本身中添加的功能:
它使用 3 个参数:
1. 为其构建 in 子句的列表框控件,
2. 一个包含 tablename-dot-columnname 的字符串,该字符串是要为列表框中选择的值过滤的表/列,&
3.根据列的数据类型是字符串(true)还是数字(false)判断为真/假
Public Function InClause(lst as ListBox, tblcol as string, isAlpha as boolean)
Dim si As String
Dim vv As Variant
For Each vv In lstBox.ItemsSelected
If isAlpha Then
si = si & "," & Chr(34) & lstBox.Column(0, vv) & Chr(34)
Else
si = si & "," & lstBox.Column(0, vv)
End If
Next vv
If si <> "" Then
si = "(" & tblcol & " IN (" & mid(si, 2) & "))"
End If
InClause = si
End Function
希望对你有帮助