我在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])
...仍然返回所有行的总数。完全删除标准也没有任何区别,这使我认为它与没有值的绑定文本框有关。
答案 0 :(得分:4)
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] & "'")