【发布时间】:2017-01-28 20:12:58
【问题描述】:
我是一名业余 vba 程序员,目前正在努力解决以下问题:
我为我的 VBA 程序编写了一个简单的 SQL 查询,用于从 Access 中的现有查询 (GroupedData) 中提取数据:
Dim strSQL as string
Dim db as dao.database
dim rs as dao.recordset
strSQL = "SELECT GroupedData.EmployeeID, GroupedData.End, GroupedData.LOB, GroupedData.Position, GroupedData.WorkStatus " & _
"FROM GroupedData WHERE (((GroupedData.End) Is Null) AND ((GroupedData.Position)=0) AND ((GroupedData.WorkStatus)=0));"
Set db = OpenDatabase(MY_DB, dbOpenDynaset)
Set rs = db.openrecordset(strSQL, dbOpenSnapshot)
Do While Not rs.EOF
ListBox1.AddItem rs!EmployeeID
rs.MoveNext
Loop
所以我的问题是 SQL 运行平稳,但没有应用任何过滤器(即 where 子句 - 它生成工作状态和位置包含高于 0 的值的记录)
我过去做过这样的查询,没有任何问题。不过这次我卡住了
任何帮助将不胜感激!
谢谢
【问题讨论】:
-
请删除 WHERE 子句中的所有括号。此外,查看别名,它们会缩短您的代码并使其更具可读性。像这样:
SELECT gd.EmployeeID FROM GroupedData gd -
除了化妆品,查询应该可以正常工作。
-
感谢您的提示,但去掉括号后,代码仍然无法产生正确的结果。如果我将此代码粘贴到访问中,它会非常出色
-
只是为了好玩,在添加记录之前清除列表框。如果问题不是您的查询(而且似乎不是),那么问题可能是您还有其他地方也填充了列表框。
-
仔细检查并逐行运行代码。这不是问题