我一直在努力解决此问题的两个解决方案...
尝试#1
我在Access窗体中有一个组合框,其中有两个选项“ All”和“ All Sample”。样本是从我的表中选择的记录的一部分,这些记录标记为带有sample_record_id(文本字段)以供审阅,以标识非零的正数。 “所有”和“所有样本”在我的行源中。我的组合框名为myFilters。
更新后,此VBA运行:
Private Sub myFilters_AfterUpdate()
Debug.Print myFilters.Value
If myFilters.Value = "All Sample" Then
Me.FilterOn = True
DoCmd.ApplyFilter , "sample_record_id <> '0'"
Else
Me.FilterOn = False
End If
End Sub
所有记录都有一个sample_record_id条目。
我期望在选择“所有样本”时填充我的样本记录,否则将填充所有记录。实际上,当选择“全部”时,所有记录都会填充,但是当选择“所有样本”时,将出现“输入参数值”对话框,其中包含文本“ sample_record_id”,并带有用于输入文本的空间。
有趣的是,当我切换IF和ELSE时:
If myFilters.Value = "All" Then
Me.FilterOn = False
Else
Me.FilterOn = True
DoCmd.ApplyFilter , "sample_record_id <> '0'"
...两种选择均无法正常工作。
尝试#2
我还尝试了以下VBA:
Private Sub myFilters_AfterUpdate()
DoCmd.SetWarnings False
strSQL = "SELECT * FROM invoice_summary WHERE sample_record_id <> '0';"
Debug.Print strSQL
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
End Sub
我期望它能执行与先前代码相同的操作,但是无论我选择哪个选项,都会弹出一个调试错误,提示“ RunSQL操作需要一个由SQL语句组成的参数”。
strSQL的调试返回:SELECT * FROM invoice_summary WHERE sample_record_id <>'0';
我已经尝试过使用和不使用;
sql语句可在标准查询中使用。
有没有办法使这两种方法都能起作用?
答案 0 :(得分:0)
我花了两天零三十分钟的时间从事这项工作,所以我发现了。叹气。
使用我的第一次尝试,我只需要在字段名两边加上方括号:
Private Sub myFilters_AfterUpdate()
If myFilters.Value = "All Sample" Then
Me.FilterOn = True
DoCmd.ApplyFilter , "[sample_record_id] <> '0'"
Else
Me.FilterOn = False
End If
End Sub