1

多くのユニオン (約 30) とその他の動的変数を使用して、MS Access を介して記述された「非常に」長いクエリがあります。

ここで、これらすべての共用体に 'Where' 句を挿入する必要があり、where 句は一定であり、フォームを介して生成されます (いくつかのオプションを選択して、where 句を含む文字列を作成する vb コードを作成しました。

変数がフォーム アクションのテキスト結果から where 句を取得するように、SQL クエリでいくつかの変数を使用する方法はありますか?

例: 私のクエリ

Select a,b,c,d from
   (select x as a,b,c,d from abc <where clause> union
    select y as a,b,c,d from abc <where clause> union
    select z as a,b,c,d from abc <where clause> union
    select p as a,b,c,d from abc <where clause>)
order by a

'where b=1' のようなテキスト ボックスの結果を入力する必要があります。

私はそれをVBコード自体に書くことを考えましたが、多数の改行とクエリの変化する性質のために、各行の最後に手動で「& _」を追加し続けたくありません.

どんな助けでも大歓迎です。

よろしく、ナビ

4

3 に答える 3

2

WHERE 句は次のように記述できます。

WHERE B=[Forms]![FormName]![FieldName]

そのため、フォームから値を取得します。しかし、私がそれを正しく理解していれば、フォームには条件だけでなく、where 句全体ありますそして b=6' ?

これに対する完璧な解決策はないと思います。プレーンな Access を使用することはできませんが、VBA コードを記述する必要があり、次のようなクエリ文字列を生成できます。

$src_query = "Select a,b,c from abc <where clause> union select ..."
$src_query = Replace($src_query,
                     "<where clause>",
                     [Forms]![FormName]![WhereClause])

次に、プログラムでクエリを変更するだけです。

CurrentDb.QueryDefs("QueryName").SQL = $src_query

これで、クエリを実行する準備が整いました。

于 2012-10-17T06:22:24.377 に答える
1

Where句を別のクエリに入れることができ、元のクエリを変更することはできません

Select * 
from MyQuery
Where (a=1 and b=7) or (c=3 and d="StackOverflow")
于 2012-10-17T19:01:53.117 に答える
0

少しの宿題で、テキスト ファイルの内容を変数に割り当てる方法を見つけました。その後、「Fthiella」が提供したコード スニペットで変数を変更することができました。

于 2012-10-17T07:38:51.173 に答える