他人が作成したMDBを修正してます。
集計処理は全てクエリとマクロの組み合わせで成り立っています。
たくさんのクエリをマクロで順次実行していく形です。
この集計処理が非常に時間がかかります。
どうやら遅さの主な原因はクエリを多用しているからというよりは
その一部でOracleの件数の多いテーブルをODBCで参照しているからのようです。
そこでこれをパススルークエリに変えようとしています。
ですがそのクエリはフォーム上のテキストボックスの値で抽出しようとしているクエリのため、フォーム上のパラメータでパススルークエリ実行しないといけません。
①まず、これは可能でしょうか?
下記リンクに同じ質問があったのですが最終的な答えに至っていないようです。
http://oshie.goo.ne.jp/qa/2251229.html
②①が無理な場合、コード上からパススルークエリを生成することで
抽出用パラメータを渡すことが可能と思うのですが、以下の部分にコードを組み込むことは可能でしょうか?
M_テスト(マクロ)
1.Q_test1
2.Q_test2(このクエリの代わりにVBAコードを実行したい)
パスクエリというのは、単に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
①のリンクが見られませんが
②は標準モジュールにPublic Functionを作成して
マクロ「プロシージャの実行」で実行可能です。
(DAOでパススルーのQueryDef作成でしょうか)
経験上は
1.ADOのOLEDBで接続しRecordset取得
2.RecordsetをそのままループでローカルテーブルにINSERT
というのがおすすめです。
パスクエリというのは、単に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
ありがとうございます。②の方法で試してみます。
①はリンクURLがなぜか間違っておりました、すみません。正しくは下記です。
http://oshiete.goo.ne.jp/qa/2251229.html
内容は、フォームのテキストボックスの値をパススルークエリの条件にしたいという内容です。
念のため①の回答も得られたらうれしいです。