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

フォームにいくつかの抽出条件を指定するためのテキストボックスをセットし、そこに入力されたデータをクエリの抽出条件に挿入しデータ抽出を行っておりますが、たとえば販売期間でデータを抽出するために、クエリの抽出条件に
Between [Forms]![フォーム名]![売上日FROM] And [Forms]![フォーム名]![売上日TO]と入力しているのですが、テキストボックスに指定日付が入っていれば問題なく抽出できるのですが、販売期間の指定なしの場合、売上日from及び売上日TOがNULLとなるためか抽出結果がゼロ件になってしまいます。
期間指定なしの場合でも抽出ができるようにするためにはどのように記述すればよいか教えてください。よろしくお願いいたします。

A 回答 (2件)

nz関数でNullだった場合の値を設定できます。



例:
Between nz([Forms]![フォーム名]![売上日FROM],"100/1/1") And nz([Forms]![フォーム名]![売上日TO],"9999/12/31")
    • good
    • 0
この回答へのお礼

ありがとうございます!うまく行きました。

お礼日時:2006/12/15 18:06

例えば、クエリを次のようにすれば抽出は可能です。



SELECT Table1.ID, Table1.売上日
FROM Table1
WHERE (((Table1.売上日)
Between
NZ([Forms]![フォーム1]![売上日_FROM],"1900/01/01")
And
NZ([Forms]![フォーム1]![売上日_TO],"2100/12/31")));

が、これでは、販売期間に対応していません。

SELECT Table1.ID, Table1.売上日
FROM Table1
WHERE (((Table1.売上日)
Between
NZ([Forms]![フォーム1]![売上日_FROM],DLookUp("販売期間_開始日","各種設定"))
And
NZ([Forms]![フォーム1]![売上日_TO],DLookUp("販売期間_終了日","各種設定"))));

と、販売期間をクエリに教える必要があります。

さて、ここまでくると全体のシステム設計の問題でクエリだけの問題ではありません。
また、クエリでヌル値をNZ関数を利用して置換するというのも通常のやり方ではありません。
フォームで、ヌル値対策をしていれば済む話かと思います。

Private Sub Form_Current()
  Me.売上日_TO = DLookup("販売期間_終了日", "各種設定")
End Sub

Private Sub 売上日_TO_AfterUpdate()
  If Len(Me.売上日_TO & "") = 0 Then
    Me.売上日_TO = DLookup("販売期間_終了日", "各種設定")
  End If
End Sub

これは、どれが正解という訳にはいかない質問ですね。
が、いずれにしろ、開発もいよいよ本格化してきた証拠です。
頑張って下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます!参考にさせていただきます。

お礼日時:2006/12/15 18:09

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