代码之家  ›  专栏  ›  技术社区  ›  ChiefTwoPencils

为什么我的查询不使用我的条件?

  •  2
  • ChiefTwoPencils  · 技术社区  · 12 年前

    我在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])
    

    …仍然返回所有行的总计。完全删除标准也没有什么区别,这让我觉得这与绑定的文本框没有值有关。

    1 回复  |  直到 12 年前
        1
  •  4
  •   Johnny Bones    12 年前

    DLookup使用以下语法:

    1. 数值的语法:
      DLookup(“FieldName”、“TableName”、”Criteria=n“)

    2. 字符串语法:(注意字符串值前后的单撇号)
      DLookup(“FieldName”,“TableName”,”Criteria=“string”)

    3. dates的语法:(注意日期值之前和之后的#)
      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] & "'")
    
    推荐文章