在日期字段中访问Null的VBA测试

时间:2014-08-19 20:07:07

标签: sql vba ms-access ms-access-2010

我尝试编写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返回我通过查询构建器获得的相同结果。提前谢谢。

2 个答案:

答案 0 :(得分:2)

如上所述,您的代码将生成以下字符串:

...WHERE [MCO] = 'Amerigroup' AND [DateAssigned] Is NullORDER BY...

请注意,NullORDER BY 这个词之间没有空格。在连接字符串和使用行连续时,这是一个容易犯的错误。避免错误的一种方法是在每行的开头放置一个前导空格:

Me.lstMedicaid.RowSource = " SELECT DISTINCT tblSamples.MedicaidNumber " & _
                           " FROM tblSamples " & _
                           " WHERE " & strMedicaid & _
                           " ORDER BY tblSamples.MedicaidNumber;"

答案 1 :(得分:0)

我认为这会奏效。

strMedicaid = "[MCO] = 'Amerigroup' AND [DateAssigned] <> ''"