• 締切済み

Access クエリで変数を参照するとき

モジュールのPublic変数をクエリから参照するとき、 Public Function getdata() As Integer getdata = 1 End Function と記述しておけき、 クエリの抽出条件をgetdata()にしておくと クエリの抽出条件に 「1」 と書いたのと同じになりますが、 クエリの抽出条件の欄に「1 Or 2 Or 3」とした時と同じ状況を作りだしたい時、 モジュールの方には Public Function getdata() As Integer  getdata = 1 Or 2 Or 3 End Function 「・・・・Integer」ではマズイわけで、なんと記述したらよいか教えて下さい。

みんなの回答

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.1

>「・・・・Integer」ではマズイわけで 戻り値をStringにすればいいんじゃないでしょうか(^^; ただこの場合、クエリをSQLビューで見ていただくと分かると思うんですが ...where [テーブル名].フィールド名=getdata() となりますよね。 getdata="1 or 2 or 3"とすると、展開してみれば ...where [テーブル名].フィールド名=1 or 2 or 3 となります。 正しくは ...where [テーブル名].フィールド名=1 or [テーブル名].フィールド名=2 or [テーブル名].フィールド名=3 になるのはお分かりですよね? getdataの戻り値を"between 1 to 3"にすれば(フィールド定義が整数なら)解決しますが 例えば"1 or 4 or 7"とかしたい場合は、工夫が必要になります。 こんな感じで、フィールド名を引数として渡してやるといいかもしれません。 Public Function getdata(strField as string) As String  '「where フィールド名=」まではセットされる getdata = "1 Or " & strField & "=2 Or " & strField & "3" End Function ※ 抽出条件をgetdata("フィールド名")とするのを忘れずに

situmonnsya
質問者

お礼

ありがとうございました

situmonnsya
質問者

補足

ご丁寧にありがとうございます。 試してみましたがうまくいきませんでした。 ちなみに関数名の「Public」は不要かと(あるとうまくいかない、標準モジュールにおいてある) 「・・・・Integer」で「・・・・String」でも条件式一個だけは受け付けるのですが。 う~~ん 他の方法も考えてみます。

関連するQ&A

専門家に質問してみよう