Access中的SQL查询未应用WHERE子句

时间:2016-09-20 19:04:41

标签: sql vba ms-access

我是一名业余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子句 - 它产生的记录,其中workstatus和position包含的值大于0)

我过去做过这样的查询而没有任何问题。但这次我被困了

非常感谢任何帮助!

谢谢

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了这个问题。这是发生了什么: 我已经创建了一个单独的函数,它根据EmployeeID检索Employee Name。但在该函数中,我以相同的方式声明了记录集和数据库,即:rs和db。当我运行查询时发生了什么,它是第一个记录被过滤,但其余的未经过滤,因为它们是基于功能内的记录集(当然所有的员工)这样一个愚蠢的错误:)谢谢反正