2

第一次使用 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

目前我只返回空白字段。非常感谢任何帮助,如果我的解释不正确,请让我详细说明。

谢谢你!

4

1 回答 1

1

正确的语法如下所示:

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

请注意,DLookup只返回一个值(如果条件匹配多行,则该值取自任何行),因此您不能使用它来获取C_IDs 的列表。


编辑:
您真正想要做的是从一个表中选择数据,然后根据另一个表中的数据进行过滤,对吗?
比如,选择至少一个学生有空的所有课程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 中的查询中切换到 SQL 视图

于 2012-06-25T20:24:06.520 回答