人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ACCESSで質問です。

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

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

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


●質問者: EEFAE4
●カテゴリ:コンピュータ
✍キーワード:access MDB ODBC Oracle VBA
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● degucho
●35ポイント

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

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

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

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

経験上は

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

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

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

◎質問者からの返答

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

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

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

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

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


2 ● pretaroe
●35ポイント ベストアンサー

パスクエリというのは、単に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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ