[英]Why doesn't my query use my criteria?
我在Access中有一個數據庫,我試圖獲取一個文本框來運行我的查詢,並在DLookUp
傳遞其他有界文本框的值作為條件。 我在設計視圖中運行查詢,當我直接輸入條件時,它將返回正確的結果。 當我打開報告時,它給了我所有可能的行的總和。 換句話說,它不會過濾行。
幸運的是 ,我已經十二年沒有使用Access了,到目前為止,我所做的一切都是教程/示例拼湊而成的,但這是...
SQL查詢:
SELECT Sum(IIf(Attended=-1,1,0)) AS attendance
FROM Students_Classes_Attendance
WHERE (((CStr([Students_Classes_Attendance].[Class_Id]))=[classId]));
DLookUp作為控制源:
=DLookUp("[Total Attendance by Class]![attendance]",
"[Total Attendance by Class]",
"[Class_Id] =" & [Class_Id])
我現在迷路了。 我猜測查詢觸發之前該值不存在,並且由於條件是將其傳遞為null的可選參數,但我希望您能從中得到一個錯誤。 並不是說#Error
還是很有意義的。
有誰能肯定地知道該問題以及糾正該問題的最佳方法? 謝謝。
編輯:
我做了答案中建議的更改,所以現在我的DLookUp
看起來像...
=DLookUp("[attendance]",
"[Total Attendance by Class]",
"[Class_Id] =" & [Class_Id])
...仍然返回所有行的總數。 完全刪除條件也沒有任何區別,這使我回想起它與綁定文本框沒有值有關。
DLookup使用以下語法:
數值的語法:
DLookup(“ FieldName”,“ TableName”,“ Criteria = n”)
字符串的語法:(請注意字符串值前后的單撇號)
DLookup(“ FieldName”,“ TableName”,“ Criteria ='string'”)
日期的語法:(請注意日期值之前和之后的#)
DLookup(“ FieldName”,“ TableName”,“ Criteria =#date#”)
我相信您只需要從第一個參數中刪除表名即可。 嘗試這個:
=DLookUp("[attendance]", "[Total Attendance by Class]", "[Class_Id] = " & [Class_Id])
請記住,如果Class_Id是文本字段,則需要用單引號將其引起來:
=DLookUp("[attendance]", "[Total Attendance by Class]", "[Class_Id] = '" & [Class_Id] & "'")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.