1

MS Access クエリで IIf ステートメントを作成して、特定のフィールドのヌル スペースを埋めました。すべてではなく一部のデータにのみ影響するステートメント。特定の割合のレコードでしか機能しないのはなぜですか?

Field:Line_off_Date

Table:Claims

Criteria:IIf(IsNull("Line_off_Date "),"1/1/1900"

区切った後の公式のSqlは次のとおりです。

SELECT Claims.Line_off_Date 
FROM Claims
WHERE (((Claims.Line_off_Date)=IIf("Line_off_Date IsNull",#1/1/1900#,"Line_off_Date ")));

このサイトのスクリーン ショットを撮ることはできませんが、モックアップを示すことはできます。

Line_off_Date

2013/12/23 2013/12/23 2010/5/16 1900/1/1 1900/1/1

2000/12/10 2008/11/4

これは、1900 年 1 月 1 日から 2000 年 12 月 10 日までの間にスペースを入れて列として表示されます。ここに投稿すると、段落になります。これが何らかの形で役立つことを願っています...

4

1 に答える 1

2

あなたの目標についてはよくわかりませんが、これはNz Functionを使用できるもののように見えます。

Criteria: Nz(Line_off_Date, "1/1/1900")

IIf代わりに、この方法を試してください...

Criteria: IIf(Line_off_Date Is Null, "1/1/1900", Line_off_Date)

これらの提案Line_off_Dateは、テキストデータ型であると想定していることに注意してください。実際に日付/時刻の場合は、値を#引用符ではなく区切ります。

Criteria: Nz(Line_off_Date, #1/1/1900#)
Criteria: IIf(Line_off_Date Is Null, #1/1/1900#, Line_off_Date)

WHEREあなたの条項を見た後、私はもっと混乱しています...

WHERE (((Claims.Line_off_Date)=IIf("Line_off_Date IsNull",#1/1/1900#,"Line_off_Date ")));

引用などの問題は別として、ロジックが間違っていると思います。「行を表示してくださいLine_off_Date= に格納されているもの以外のものLine_off_Dateと言うと、行が返されない場合があります。

別のアプローチが必要だと思います。さらにサポートが必要な場合は、サンプル データの簡単なセットと、それらのデータに基づく目的の出力を提示してください。

コメントの議論に基づいて、私の理解では、 --- に基づいて結果セットをフィルタリングしたくないということです。Line_off_Dateつまり、これはWHERE句の問題ではありません。代わりに、値を取得する必要がありますが、Null のLine_off_Date値を代用します。それが正しければ、節#1900-1-1#でフィールド式を使用して変換を行います。SELECT

SELECT Nz(Claims.Line_off_Date, #1900-1-1-#) AS Line_off_Date_adjusted 
FROM Claims;
于 2013-12-23T16:37:06.110 に答える