我是一名业余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)
我过去做过这样的查询而没有任何问题。但这次我被困了
非常感谢任何帮助!
谢谢
答案 0 :(得分:0)
好的,我已经解决了这个问题。这是发生了什么: 我已经创建了一个单独的函数,它根据EmployeeID检索Employee Name。但在该函数中,我以相同的方式声明了记录集和数据库,即:rs和db。当我运行查询时发生了什么,它是第一个记录被过滤,但其余的未经过滤,因为它们是基于功能内的记录集(当然所有的员工)这样一个愚蠢的错误:)谢谢反正