我尝试编写VBA脚本来限制Access 2010中表单上的列表框中显示的内容。
我已经将情况归结为减少问题机会的数量,所以这是我正在做的事情的简化版本
strMedicaid = "[MCO] = 'Amerigroup' AND [DateAssigned] Is Null"
Me.lstMedicaid.RowSource = "SELECT DISTINCT tblSamples.MedicaidNumber " & _
"FROM tblSamples " & _
"WHERE " & strMedicaid & _
"ORDER BY tblSamples.MedicaidNumber;"
DateAssigned是一个日期字段。代码什么都不返回。没有结果。
如果我只是" [MCO] =' Amerigroup'"我得到了预期的结果,这不是问题所在。
我已经尝试过Null'。我已经尝试过“Null'。没有区别。
如果我进入Access Query构建器并在下面构建SQL:
SELECT tblSamples.MCO, tblSamples.DateAssigned
FROM tblSamples
WHERE (((tblSamples.MCO)="Amerigroup") AND ((tblSamples.DateAssigned) Is Null));
有效。我得到了我想要/期望的结果。
请帮助我让VBA返回我通过查询构建器获得的相同结果。提前谢谢。
答案 0 :(得分:2)
如上所述,您的代码将生成以下字符串:
...WHERE [MCO] = 'Amerigroup' AND [DateAssigned] Is NullORDER BY...
请注意,Null
和ORDER BY
这个词之间没有空格。在连接字符串和使用行连续时,这是一个容易犯的错误。避免错误的一种方法是在每行的开头放置一个前导空格:
Me.lstMedicaid.RowSource = " SELECT DISTINCT tblSamples.MedicaidNumber " & _
" FROM tblSamples " & _
" WHERE " & strMedicaid & _
" ORDER BY tblSamples.MedicaidNumber;"
答案 1 :(得分:0)
我认为这会奏效。
strMedicaid = "[MCO] = 'Amerigroup' AND [DateAssigned] <> ''"