3

Access でルックアップ テーブルを作成する必要があります。すべての略語は値に関連付けられており、(メイン テーブルの) 略語が null の場合は、"不明" と表示したいと考えています。

値が機能するようになりましたが、ヌルが表示されないようです。

私のルックアップテーブルは次のようになります。

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
NULL        N/A

しかし、要求によってカウントを行うと、A と D の値のみが表示されますが、そこにもいくつかの空白があることはわかっています。

私は何を間違っていますか?

4

1 に答える 1

3

tblLookupを変更すると、これは簡単になるはずです。

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
U           Unknown

次に、tblMainで、REQUESTフィールドをRequired=TrueおよびDefaultValue="U"に変更します。新しいレコードが追加されると、ユーザーがそれをAまたはDに変更しない限り、REQUESTにはUが付きます。

次に、REQUESTの2つのテーブルを結合するクエリにより、私が望むものが得られるはずです。

SELECT m.REQUEST, l.REQUEST_TEXT
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

また、2つのテーブル間に関係を作成し、ユーザーがREQUESTに「X」などの偽の値を追加しないように参照整合性を適用するオプションを選択する必要があります。

編集:tblMain構造の変更がテーブルから外れていて、Accessセッション内からこれを行っている場合は、LEFT JOINでNz()関数を使用できます。

SELECT m.REQUEST, Nz(l.REQUEST_TEXT, "Unknown")
FROM tblMain AS m
    LEFT JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

ASPなど、Accessセッションの外部からこれを実行している場合、Nz()関数は使用できません。したがって、Nz()の代わりにIIf()式を使用できます。

SELECT m.REQUEST, IIf(l.REQUEST_TEXT Is Null, "Unknown", l.REQUEST_TEXT)
FROM tblMain AS m
    LEFT JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

Edit2:Null値で直接結合することはできません。ただし、tblLookupに提案した「不明な」行では、tblMain.REQUESTにNzを含むJOINを使用できます。

SELECT m.id, m.request, l.request_text
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON Nz(m.request,"U") = l.request;

REQUEST_TEXT = Unknownに対してtblLookupREQUESTをNullのままにしておきたい場合は、JOIN式の両側でNzを使用できると思います。しかし、Nullsに参加するというこの全体的な考えは、私をうんざりさせます。代わりにテーブルを修正します。

于 2011-06-02T15:17:38.020 に答える