簡體   English   中英

為什么我的查詢不使用我的條件?

[英]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使用以下語法:

  1. 數值的語法:
    DLookup(“ FieldName”,“ TableName”,“ Criteria = n”)

  2. 字符串的語法:(請注意字符串值前后的單撇號)
    DLookup(“ FieldName”,“ TableName”,“ Criteria ='string'”)

  3. 日期的語法:(請注意日期值之前和之后的#)
    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM