アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブル1にフィールド名→日付、データ型→日付/時刻型(主キーなし)
を作成し、
クエリ1を作成し、フィールド1にテーブル1の日付フィールドをドラッグし、
フィールド2には「有無: IIf([日付]="","未",[日付])」
を入力しました。
「日付フィールドが空白なら有無フィールドは「未」、入力されているならその日付を表示する」
としたいです。

しかし画像のように
日付フィールドが空白→有無フィールドも空白
日付フィールドに日付が入っているなら→有無フィールドは#エラー
になってしまいます。

何がだめなんでしょうか?
よろしくお願い致します。

A 回答 (3件)

>何がだめなんでしょうか?


日付/時刻型のデータは文字列型ではないので""と比較する事は出来ません。

なので、データが入っているレコードでは「型が違うから比較出来ない」のでエラーになり「#error」が表示されます。

そして、データが入っていないレコードでは、型の違いによるエラーにはなりませんが「NULL値と""は等しくない」と判断され「日付、つまり、NULL」が表示されます。

「長さ0の文字列」と「NULL値」は「異なる値」だと言う事を忘れてはいけません。

つまり
>日付フィールドが空白→有無フィールドも空白
>日付フィールドに日付が入っているなら→有無フィールドは#エラー
になる訳です。

これは「意図した動作ではないが、仕様通りの動作」なので
有無: IIf([日付]="","未",[日付])
と言う式を書いた場合には、上記の動作は正常な動作です。

質問者さんが意図した通りに動作させるにはIsNull関数を用い
有無: IIf(IsNull([日付]),"未",[日付])
として下さい。
    • good
    • 0
この回答へのお礼

なるほど。
できました。
ご回答ありがとうございます。

お礼日時:2009/01/13 09:34

》 しかし画像のように



何処にその「画像」があるのですか?
    • good
    • 0
この回答へのお礼

すいません。
うまく添付できませんでした。

お礼日時:2009/01/13 09:39

クエリ1: 選択クエリー



ID__日付_____________有無
1___2009/01/01__#エラー
2__________________________________

SELECT tab1.ID, tab1.日付, IIf([日付]="","未",[日付]) AS 有無, *
FROM tab1;

クエリ2: 選択クエリー

ID__日付_____________有無
1___2009/01/01__2009/01/01
2_______________________未

SELECT tab1.ID, tab1.日付, IIf(Len([日付] & ""),[日付],"未") AS 有無, *
FROM tab1;

SELECT tab1.ID, tab1.日付, IIf([日付] Is Null,"未",[日付]) AS 有無, *
FROM tab1;

SELECT tab1.ID, tab1.日付, IIf(NZ([日付],"")="","未",[日付]) AS 有無, *
FROM tab1;

× [日付]=""
○ NZ([日付],"")="
○ [日付] Is Nul
○ Len([日付] & "")

と、言う事だと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2009/01/13 09:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A