• ベストアンサー

Accessクエリの抽出条件にフォームから挿入する方法(2)

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

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

nz関数でNullだった場合の値を設定できます。 例: Between nz([Forms]![フォーム名]![売上日FROM],"100/1/1") And nz([Forms]![フォーム名]![売上日TO],"9999/12/31")

wxykz
質問者

お礼

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

その他の回答 (1)

noname#22222
noname#22222
回答No.2

例えば、クエリを次のようにすれば抽出は可能です。 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 これは、どれが正解という訳にはいかない質問ですね。 が、いずれにしろ、開発もいよいよ本格化してきた証拠です。 頑張って下さい。

wxykz
質問者

お礼

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

関連するQ&A