我有一个表,其中有10个字段在microsoft access中,但我想筛选他们的最大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个变量和。。。。但我没有得到正确的结果或语法错误什么是解决办法???
1条答案
按热度按时间67up9zun1#
通常,星号()是access中的通配符。https://support.microsoft.com/en-us/office/access-wildcard-character-reference-af00c501-7972-40ee-8889-e18abaad12d1
日期/时间字段的参数需要#字符作为分隔符。
"([DateCutting]<=#" & p1 & "#) And
如果变量类型没有显式声明,则默认为variant。所以在变量声明中,只有p5是字符串类型,其他4个是variant。变量类型的默认值为空字符串。您的条件是这样构建的:即使是空的(null或空字符串),变量仍然在串联中被引用。结果可能是无效的条件字符串-例如,为日期/时间字段传递空字符串。即使标准工作正常,输出也可能不是所需的。
不要传递空字符串,而是对文本字段参数使用通配符(),并为日期/时间字段提供备用值。
或者,有条件地构建字符串so字段及其参数仅在有值且用户已为其选择时使用。