ここから本文です

パススルークエリで複数オブジェクトのリストを作成する

aid********さん

2013/4/514:52:28

パススルークエリで複数オブジェクトのリストを作成する

Access2010、Access2003で、Oracleに対しパススルークエリを使用して接続しています。

はじめはリンクテーブルでやっていましたが、パフォーマンスが悪く、パススルークエリを試してみたところ、
劇的に早くなったためリンクテーブルからパススルークエリに変更する事にしました。

そこで、下記についてご質問があります。

パススルークエリのテンプレートクエリを複数作成せずに、
複数のコンボボックスにリストを作成する事はできないのでしょうか?


たとえば検索画面の検索キーとして、
・「カナ氏名」コンボ
・「部署」コンボ
・「役職」コンボ
があったとします。

上記3つのコンボボックスに対し、パススルークエリでリスト内容を作成したいと思います。


dim qDef As QueryDef
dim sSQL1 As String
dim sSQL2 As String
dim sSQL3 As String


'--テンプレートセット
Set qDef = CurrentDb.QueryDefs("Q_PGM_パススルー")

'--カナコンボ
strSQL1 = "Select M1.ID, M1.氏名 FROM M_SHAIN M1"

qDef.SQL = strSQL1

Me.Cmbカナ.RowSource = qDef.name

'--部署コンボ
strSQL2 = "Select M1.ID, M1.部署名 FROM M_BUSHO M1"

qDef.SQL = strSQL2

Me.Cmb部署.RowSource = qDef.name


'--役職コンボ
strSQL3 = "Select M1.ID, M1.役職名 FROM M_YAKU M1"

qDef.SQL = strSQL3

Me.Cmb役職.RowSource = qDef.name


=================

この場合、パススルーのテンプレートが1つなので、その結果、
カナコンボも部署コンボも、役職コンボもすべて同じ内容のリストになってしまいます。

テンプレートはオブジェクト数分、作成しなくてはならいのでしょうか?

リンクテーブルのときはコンボのRowSourceに、SQLを直接設定していたのですが、
パススルークエリの場合はそうはいかないようです。

例)Me.Cmb役職.RowSource = "Select M1.ID, M1.役職名 FROM M_YAKU M1"

※パススルーを使用する場合は↑のようにできない

みなさんがパススルークエリを使用するとき、1画面に複数コンボのリスト作成する場面は普通に考えられますが
どのように実装しているのでしょうか?

閲覧数:
1,227
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nora1962jpさん

2013/4/610:22:12

・提示されているようなコンボボックスのデータソースの場合はパススルークエリではなくリンクテーブルでもそれなりにキャッシュが効いていたような気がします。
・パススルークエリを使う場合は、クエリをデータソースの数だけ用意する必要があります。
・もし、コンボボックスのデータの更新結果をリアルタイムに反映する必要がないなら、パススルーで一旦ローカルテーブルにコピーしてそれをデータソースにすることでパフォーマンスの向上を図るやり方もあります。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる