2016-11-23 10 views
0

私はMySQLをバックエンドとしてフロントエンドとして使用しています。かなり時間のかかるクエリで時間を節約するために、私はMySQLサーバにこれらを並列に実行させたいと思います。MS Access VBAからのODBC経由のMySQLクエリ:ADODB非同期実行が機能しません

現在、VBAに非同期に送信するように指示することはできません。私のコードは次のようになります:

Do While ... 
    Dim rs_newRecordSet As ADODB.Recordset 
    Set rs_newRecordSet = New ADODB.Recordset 
    rs_newRecordSet.Open Ext_TranslateQuery(str_query), Ext_Connection, , , adAsyncExecute 
Loop 

Do whileループの間に、いくつかのクエリがオプションadAsyncExecuteでレコードセットを通して開かれます。クエリはINSERT INTO ... SELECT FROM-QUeriesであるため、レコードセットには何も返されません。

問題は、adAsyncExecute-Optionが指定されていても、VBAはRecordset.Open-Commandが終了するまで待機しているようです。さらに、私がプロセスリストを表示すると、mysqlスキーマにというINSERT INTO ...クエリを持つスレッドが1つしか表示されません。

なぜVBAはクエリの実行を待つのですか?これをどのように変更できますか?

感謝 バスティアン

+1

アクションクエリに 'rs.Open'を使用しないでください。代わりに 'conn.Execute'を使用してください。 – Parfait

+0

それ以上の場合は、 'ADODB.Command'と' .Execute'を作成してください。 –

+0

ありがとうございました、ADODB.Commandに切り替えました – Bastian

答えて

0

は、私がここで答えを見つけ、ご協力いただきありがとうございます: VB6, ADO, Asynchronous command and closing the connection

あなたが並行しているためそれ以外の場合は、実行するすべてのレコードセット/コマンドの新しい接続を作成する必要がありますクエリは接続実行リストに積み重ねられます。各クエリの実行後に接続を閉じることを忘れないでください。

関連する問題