プロが教えるわが家の防犯対策術!

モジュールの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」ではマズイわけで、なんと記述したらよいか教えて下さい。

A 回答 (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("フィールド名")とするのを忘れずに

この回答への補足

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

補足日時:2006/01/06 19:12
    • good
    • 1
この回答へのお礼

ありがとうございました

お礼日時:2006/01/10 19:28

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

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


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