OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ACCESSでVBAから選択クエリの抽出条件を指定したい

  • すぐに回答を!
  • 質問No.232327
  • 閲覧数12716
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 54% (102/187)

選択クエリの抽出条件はデザインビューの「抽出条件」欄に直接条件式を書き込むのが普通だと思いますが、この条件式をVBAで記述することは出来るでしょうか?

DoCmd.RunSQL ではアクションクエリしか実行できないようだし、
DoCmsOpenQuery では引数に抽出条件を指定することが出来ないし困っています。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてます(^^)

ちなみに、
Me.
と打ち込んだ時点でオートコンプリート(名称あってるかな~)
機能が働いて参照できるオブジェクトが表示される
はずです。
その中にKojiさんが書いた埋め込みオブジェクトが
きっとあるはず
もしかすると"FormA"とか名前を付けたつもりでも
Visual Basic Editor君が気を利かせて
Form_formA
とかになってる場合があります。
最近やってないんでうろ覚えなんですが、こんな処を注意すれば大丈夫!

追伸
このコードって検索とかで使えますから
覚えておくときっと役に立ちますよ♪
お礼コメント
k_o_j_i

お礼率 54% (102/187)

ありがとうございます。
>Me.埋め込みフォーム.Form.RecordSource = StrSQL
>Me.埋め込みフォーム.Requery
ばっちり正常に機能しました。
感激です!
>覚えておくときっと役に立ちますよ♪
とりあえず自作テンプレート集に収録しておきました。(^v^)
投稿日時 - 2002-03-10 21:28:30
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1

思わずできますよ!と書いてしまいましたが よく読んでみると駄目ですね(^_^) 実際なにをしたいんですか? 抽出するだけじゃ意味ないですよね~ 抽出してなにかするという記述が無いと意味が。。。 抽出した物をカウントするとか テーブルを作成するとか追加するとか (Count だったらヘルプをみればきっと解決しますよ) 選択クエリーを読み込んで何をするか? が重要なところだと思います ...続きを読む
思わずできますよ!と書いてしまいましたが
よく読んでみると駄目ですね(^_^)
実際なにをしたいんですか?

抽出するだけじゃ意味ないですよね~
抽出してなにかするという記述が無いと意味が。。。
抽出した物をカウントするとか
テーブルを作成するとか追加するとか
(Count だったらヘルプをみればきっと解決しますよ)

選択クエリーを読み込んで何をするか?
が重要なところだと思いますが
改めて検討してみてください。
ではでは
補足コメント
k_o_j_i

お礼率 54% (102/187)

>実際なにをしたいんですか?

「0203」など年号2桁+月2桁の文字列から
"> #2002/3/1# and < #2002/4/1#"といった抽出条件を算出し
この文字列を選択クエリを開くときの条件として指定したいのです。

デザインビューの抽出欄だけでこの処理をするのは難しいと思ったので、
VBAを利用しようと考えた次第です。

>選択クエリーを読み込んで何をするか? が重要なところだと思いますが
今回の場合は単に抽出条件を指定して表示したいだけなのです。

よろしくお願いします。
投稿日時 - 2002-03-10 13:44:45

  • 回答No.2

こんにちは(^^) >> 選択クエリーを読み込んで何をするか? が重要なところだと思いますが > 今回の場合は単に抽出条件を指定して表示したいだけなのです。 この場合単に表示するという記載ですが 「指定したフォームのレコードソースに指定した選択クエリーを入れてあげる」 という事だと思います。たぶん... > この文字列を選択クエリを開くときの条件 ...続きを読む
こんにちは(^^)


>> 選択クエリーを読み込んで何をするか? が重要なところだと思いますが
> 今回の場合は単に抽出条件を指定して表示したいだけなのです。

この場合単に表示するという記載ですが
「指定したフォームのレコードソースに指定した選択クエリーを入れてあげる」
という事だと思います。たぶん...


> この文字列を選択クエリを開くときの条件として指定したいのです。

実際にはVBAで処理をするという事なので
こんなフォームが欲しいのではないでしょうか?

親フォームにテキストボックス2ヶとコマンドボタンを配置する。
たとえば名称は下記と仮定する。
Text1
Text2
Commnd1

サブフォームに選択クエリーを表示する表を配置する。
サブフォームのレコードソースは適当な物にしておく。
(たとえば日付で選択していない物など)

コマンドボタンクリックイベントにコードを書き込む

Dim StrSQL as String 'SQL文を代入する
dim Dtm1 , Dtm2 as Date '日付を入れる
dim Str1 , Str2 as String

Date型で入力されているかのエラーチェックをしておく。
IsNull 関数あたりで IF 文あたりで行う。
dtm1 = Txet1
dtm2 = Txet2

「Text1 < Text2」 の条件になるかどうかのエラーチェック

SQLは文字列しか使えないので、日付型からFormat関数あたりで
文字列に変更し各 Str1 , Str2 に代入する。
この辺りはヘルプを参照してください。

StrSQL = "選択クエリーをカットアンドペーストで入れる"
StrSQL = StrSQL & "長いようだったらわけて見やすく"
StrSQL = StrSQL & "日付の前まで入れてあげる"
StrSQL = StrSQL & Str1 'ここで"2002/4/1"みたいな物を代入する事に
StrSQL = StrSQL & "# and < #"
StrSQL = StrSQL & Str2 'ここの説明は同様
StrSQL = StrSQL & "最後の文章"

これでSQL文が完成するので

サブフォーム名.レコードソース = StrSQL
( ↑日曜日なのでスペルは思い出せない...)
あたりで代入すればOKのはずですが...
あ、最後にサブフォームをリクエリーすれば完成じゃないでしょうか?

どうでしょう!

要するに文字列に無理やり入れてやる作業をすれば宜しいという事で
回答になってはおりませんでしょうか?

これでだめなら、選択クエリーをSQLビューでカット&ペーストしてUPして
ください。

それではうまく行くといいですね♪
脳内活動が日曜日モードに入っているので、この程度しか回答できないのですが
テキストエディターで書いたので、間違いがあったら適当に直してください。
補足コメント
k_o_j_i

お礼率 54% (102/187)

詳説ありがとうごっざいます。
テストファイルを作り実行してみましたが、

サブフォーム名.レコードソース = StrSQL

のところが問題です。
「VBAコードで参照されている“サブフォーム”フォームが見つかりません」
とエラーが出て止まってしまいます。
実際には
Forms("サブフォーム").RecordSource = strSQL
と記述しました。

何がいけないのでしょうか・・・
投稿日時 - 2002-03-10 17:18:45
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ