2

初めて MS Access を使用し、いくつかの問題に遭遇しました。誰かが私を正しい方向に向けることができれば.

だから私はモックデータベースをやっています(それはばかげているように見えます)。

私のデータベースには、次のフィールドを持つ 2 つのテーブルがあります: C_IDCourses の PK と Student の 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 nullxxx is not null

は1 つのDLookup値のみを返すことに注意してください(基準が複数の行に一致する場合、値は任意の行から取得されます)。したがって、それを使用して のリストを取得することはできません。C_ID


編集:
実際にやりたいことは、あるテーブルからデータを選択し、他のテーブルのデータに基づいてそれをフィルタリングすることですよね?
同様に、少なくとも1人の学生が空のコースを持っているすべてのコースを選択しますEnrollDATE?

はいの場合、まったく必要ありませんDLookup。その方法は 2 つあります。

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 に答える