【发布时间】:2020-06-25 10:51:54
【问题描述】:
我在 Microsoft Access 中有一个包含 10 个字段的表, 但我想过滤他们最多 5 个字段 我留下了 5 个复选框,并为任何一次 1 个组合框选择 1 到 5 个选项进行过滤,换句话说,对 5 个字段进行动态报告。 我的代码:
my New code changes:
Dim p1 As Long
Dim p2 As String
Dim p3 As String
Dim p4 As String
Dim p5 As String
p2 = "*"
p3 = "*"
p4 = "*"
p5 = "*"
p1 = 20500101
If (chbeckbox1 = True) Then p1 = combobox1
If (chbeckbox2 = True) Then p2 = combobox2
If (chbeckbox3 = True) Then p3 = combobox3
If (chbeckbox4 = True) Then p4 = combobox4
If (chbeckbox5 = True) Then p5 = combobox5
strCriteria = "([DateCutting]<=" & p1 & ") And [SystemName]= '" & p2 & "' And [CenterName]='" & p3 & "' And [TypeCutting]='" & p4 & "' And [ReporterName]='" & p5 & "'"
task = "select * from Cutting where (" & strCriteria & ")"
DoCmd.ApplyFilter task
定义 5 个变量和 .... 但我没有得到正确的结果或语法错误 什么是解决方案???
【问题讨论】:
-
使用
combobox1.Value等。然后,声明Dim p1, p2, p3, p4, p5 As String它声明了除As Variant之外的所有变量。 VBA 需要Dim p1 As String, p2 As String....。无需以这种方式初始化变量。他们最初是nullString、nothing、""... -
尝试将
Debug.Print p1放在If (chbeckbox1 = True) Then p1 = combobox1行之后,看看它在Immediate Window中返回什么(在VBE 中为Ctrl + G)。 -
好的,但是当我选择两个选项时,它没有返回任何记录
-
我认为明星是一种价值。没有通配符
-
这 5 个组合框是 UNBOUND 吗?用于用户输入标准的控件应该是 UNBOUND,否则会更改记录中的数据。有条件地构建标准字符串 - 查看allenbrowne.com/ser-62.html