ACCESSで質問です。


他人が作成したMDBを修正してます。
集計処理は全てクエリとマクロの組み合わせで成り立っています。
たくさんのクエリをマクロで順次実行していく形です。
この集計処理が非常に時間がかかります。
どうやら遅さの主な原因はクエリを多用しているからというよりは
その一部でOracleの件数の多いテーブルをODBCで参照しているからのようです。
そこでこれをパススルークエリに変えようとしています。
ですがそのクエリはフォーム上のテキストボックスの値で抽出しようとしているクエリのため、フォーム上のパラメータでパススルークエリ実行しないといけません。

①まず、これは可能でしょうか?
下記リンクに同じ質問があったのですが最終的な答えに至っていないようです。
http://oshie.goo.ne.jp/qa/2251229.html

②①が無理な場合、コード上からパススルークエリを生成することで
抽出用パラメータを渡すことが可能と思うのですが、以下の部分にコードを組み込むことは可能でしょうか?
M_テスト(マクロ)
1.Q_test1
2.Q_test2(このクエリの代わりにVBAコードを実行したい)

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/26 21:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pretaroe No.2

回答回数531ベストアンサー獲得回数75

ポイント35pt

パスクエリというのは、単にSQLを実行するのにAccess側で実行しているものをORACLE側で実行する

かの違いです。SQLを投げる時に、入力フォームの値を引き渡すことは可能で酢。

①はおそらく無理で、②なら以下のURLのような感じで作ります。

http://techbank.jp/Community/blogs/mymio/archive/2009/04/10/6095...

また、オラクル側でストアド(関数)を作成して、この関数をAcccessからコールして結果をもらうだけと

いう方式にもできます。この場合、面倒なSQLなどの処理はOracle側に書けます。

http://homepage1.nifty.com/kojama/works/rdbms/oracle/prog.html

その他の回答1件)

id:degucho No.1

回答回数281ベストアンサー獲得回数75

ポイント35pt

①のリンクが見られませんが

②は標準モジュールにPublic Functionを作成して

マクロ「プロシージャの実行」で実行可能です。

(DAOでパススルーのQueryDef作成でしょうか)

経験上は

1.ADOのOLEDBで接続しRecordset取得

2.RecordsetをそのままループでローカルテーブルにINSERT

というのがおすすめです。

id:EEFAE4

ありがとうございます。②の方法で試してみます。

①はリンクURLがなぜか間違っておりました、すみません。正しくは下記です。

http://oshiete.goo.ne.jp/qa/2251229.html

内容は、フォームのテキストボックスの値をパススルークエリの条件にしたいという内容です。

念のため①の回答も得られたらうれしいです。

2011/04/20 08:12:21
id:pretaroe No.2

回答回数531ベストアンサー獲得回数75ここでベストアンサー

ポイント35pt

パスクエリというのは、単にSQLを実行するのにAccess側で実行しているものをORACLE側で実行する

かの違いです。SQLを投げる時に、入力フォームの値を引き渡すことは可能で酢。

①はおそらく無理で、②なら以下のURLのような感じで作ります。

http://techbank.jp/Community/blogs/mymio/archive/2009/04/10/6095...

また、オラクル側でストアド(関数)を作成して、この関数をAcccessからコールして結果をもらうだけと

いう方式にもできます。この場合、面倒なSQLなどの処理はOracle側に書けます。

http://homepage1.nifty.com/kojama/works/rdbms/oracle/prog.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません