• 締切済み

Access2000:クエリに値(抽出条件値)を返す

クエリに抽出条件として、 Between [いつから?(例:200504)] And [いつまで?(例:200504)] と指定してあります。 マクロに登録されたクエリを実行すると必要パラメータとしてダイアログがたちあがるものです。 これを自動的にVBAで日付を算出し、上記クエリに値を返すことをしたいのですが記述方法がわかりません。 VBAで作成した関数の戻り値を上記クエリの抽出条件の欄に返す方法はありますか? よろしくお願いいたします。

みんなの回答

noname#22222
noname#22222
回答No.3

ID  生年月日 1   2006/02/01 2   2006/10/11 3   2006/10/21 4   2006/10/30 というテーブルから ID  生年月日 2   2006/10/11 3   2006/10/21 4   2006/10/30 と 2006/10/01~2006/10/30 を抽出するクエリをSQL ビューで参照すると、 SELECT テーブル1.ID, テーブル1.生年月日 FROM テーブル1 WHERE (((テーブル1.生年月日) Between GetDate('2006/10/10',0,1) And GetDate('2006/10/10',0,99))); となっています。 さて、この場合、基準値がマジックナンバーという不具合が発生しています。 これを解消するには、Forms('XXXX').Contorols('XXXXXX') などに置換すると良いと思います。 <GetDate関数> GetDate(基準日付, 月の増減値, 求めたい日付) 求めたい日付は、1,2・・・・、または99=月末。 ? GetDate("2006/10/10", 0, 1) 2006/10/01 ? GetDate("2006/10/10", 0, 99) 2006/10/31 ? GetDate("2006/10/10", -1, 99) 2006/09/30 ? GetDate("2006/10/10", +1, 99) 2006/11/30 ? GetDate("2006/10/10", +1, 15) 2006/11/15 Public Function GetDate(ByVal Now As Date, _             ByVal Move As Integer, _             ByVal Hiduke As Integer) As Date                GetDate = DateSerial(DatePart("yyyy", Now), _              DatePart("m", Now) + Move - (Hiduke = 99), _              Hiduke * Abs(Hiduke <> 99)) End Function

  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.2

こんにちは、URLを参考にして クエリーをVBAで作成するか、 お手軽なのは、適当なフォームのコントロールに VBAから値を書き込んで、 そのコントロールをクエリーで参照しては いかがでしょうか?

参考URL:
http://www.accessclub.jp/dao/22.html
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

VBA自体はどのようなものでしょうか? たとえば今日から今月末というなら モジュールに Function GETUMATU(HIDUKE As Date) As Date  GETUMATU = DateSerial(Year(HIDUKE),Month(HIDUKE)+1,0) End Function としてユーザー定義関数を作成 Between Date And GETUMATU(Date) で抽出できます。

fm0606
質問者

補足

ありがとうございます。 クエリのデザインビューより 抽出条件に Between Date And GETUMATU(Date) を入れますと 入力パラメータとしてポップアップフォームが表れます。 回避方法はございますか?