访问2010 DLookUp

时间:2012-06-25 20:19:25

标签: ms-access filtering

第一次使用MS Access并遇到一些问题,如果有人可以请我指出正确的方向。

所以我正在做一个模拟数据库(所以看起来很傻)只是为了了解这些细节并且需要一些DLookUp的帮助。

我的数据库有两个表,包含以下字段: C_ID课程中的PK和学生中的FK

tblCourse: C_ID, Title, Subject                              
tblStudent: S_ID, C_ID, Name, EnrollDATE  

正如我所说,这只是为了测试/学习。所以我想要的是有一个过滤器,根据C_ID EnrollDates NULL为我提供Expr1: DLookUp("[tblStudent]![C_ID]","tblStudent","isNull([tblStudent]![EnrollDATE])") 的列表。

所以过滤器是:

 [tblStudent]![EnrollDATE] = Null

我也尝试过标准

{{1}}

目前我只返回空白字段。非常感谢任何帮助,请让我详细说明我的解释是否已解决。

谢谢!

1 个答案:

答案 0 :(得分:1)

正确的语法如下所示:

DLookup("C_ID", "tblStudent", "EnrollDate is null")
  1. 指定列
  2. 时,不需要包含表名
  3. 在Access中,您使用Nullxxx is null
  4. 检查xxx is not null

    请注意,DLookup仅返回一个值(如果条件匹配多行,则该值来自任意行),因此您无法使用它来获取C_ID的回复列表。


    修改
    你真正想要做的是从一个表中选择数据,并根据另一个表中的数据进行过滤,这是正确的吗? 比如,选择至少有一名学生空EnrollDATE的所有课程?

    如果是,您根本不需要DLookup,有两种不同的方法:

    1)使用子选择:

    select *
    from tblCourse
    where C_ID in
    (
        select C_ID
        from tblStudents
        where EnrollDATE is null
    )
    

    2)加入表格:

    select tblCourse.*
    from tblCourse
    inner join tblStudent on tblCourse.C_ID = tblStudent.C_ID
    where tblStudent.EnrollDATE is null
    

    这是SQL,因此您需要在Access中查询switch to SQL View