none
Accessにて、クエリから個別にWHERE条件を取得 RRS feed

  • 質問

  • いつもお世話になっております。

    ◇テーブル1
    項目1 項目2 項目3
    A    1    1
    A    15    1
    B    5    2
    C    10    1


    ◇クエリ1
    SELECT * FROM テーブル1
    項目1 = 'A' AND 項目2 BETWEEN '1' AND '10' AND 項目3 = '1'

    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

    「クエリ1から、下記のように項目ごとのWHERE条件を個別に取得することはできますでしょうか?


    ・sFilter配列

    sFilter(1)="項目1 = 'A'"

    sFilter(2)="項目2 BETWEEN '1' AND '10'"

    sFilter(3)=項目3 = "項目3 = '1'"

    • 編集済み IndoaK119 2015年1月8日 7:49
    2015年1月8日 7:49

すべての返信

  • 以下のようにしてクエリからSQL文を取り出すことができますので、後はそこから文字列を解析して、それぞれを取り出していくしかないように思います。
    Set QD = CurrentDb.QueryDefs("クエリ1")
    MySQL = QD.SQL
    MsgBox MySQL


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年1月8日 8:33
    モデレータ
  • 用途は何でしょう?ドキュメントでも作りたいのでしょうか?それとも?

    条件がORのとき、ANDのときの区別は不要なんですか?
    [A]=0 and ([B]>1000 or [C]=True) なんていうときはどうします?
    複数のテーブルを結合しているクエリーの時、Where句にはテーブル名も入ってきます(単一テーブルでも記入してある場合もありますね)
    条件に関数が入っている場合もありますね。ユーザー関数だって使えますし。
    条件に固定文字”AND”や”OR”が入っているときもありますよね PANDAとかDOORとか

    SQL文のWhere句をまず抽出して、おおきなかたまり ”(”があったらそれ対応する”)”を探したり、ダブルクォーテーションがあったら、それに対応するダブルクォーテーションを探したり とやっていかないといけませんね。

    ”その面倒な処理を誰か簡単にやる方法知りませんか?” ということですかね?
    もしそうなら、私も知りたいです。確かにAccess内部ではやっているはずですからね。
    せめて、フローチャートでもあるとうれしいですね。

    プログラムができたら、是非公開してください!

    Shigeru Murai / SIMOZ

    2015年1月8日 8:57