2016-09-20 61 views
0

我是一個業餘的VBA程序員,目前主要有以下努力:SQL查詢中獲取不適用WHERE子句

我寫了一個簡單的SQL查詢我的VBA程序在訪問中提取從現有的查詢(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和位置包含高於0值的記錄)

我已經做了這樣的疑問過去沒有任何的問題。但這次我被卡住了

任何幫助將不勝感激!

謝謝

+2

請刪除您的WHERE子句中的所有括號。另外,看看別名,他們會縮短你的代碼並使其更具可讀性。像這樣:'SELECT gd.EmployeeID FROM GroupedData gd' –

+1

除了化妝品,查詢應該可以正常工作。 – sstan

+0

感謝您的提示,但在刪除括號後代碼仍然沒有產生正確的結果。如果我將此代碼粘貼到訪問權限中,它的功能非常出色 – SqU33z3R

回答

0

好吧,我已經解決了這個問題。這是發生了什麼事: 我已經做了一個單獨的函數,它是基於EmployeeID檢索員工姓名。但在那個函數中,我使用相同的方式聲明瞭記錄集和數據庫,即:rs和db。當我運行查詢時,發生了什麼事情是它將第一條記錄過濾掉了,但其餘的都沒有過濾,因爲它們是基於函數中的記錄集(當然是所有員工)這樣一個愚蠢的錯誤:)謝謝反正