私は本当に私を悩ませている VBA の非対話型の問題と戦っています: ユーザーがダブルクリックするとうまく動作する mysql データベースへのパススルー クエリがあります。ただし、対話が最初に行われなかった場合、VBA オートメーション セッション (Excel から呼び出される) から呼び出されると失敗します。最も奇妙なこと: GUI でしばらくクリックすると、VBA から動作します( odbc mysql 接続タイムアウトの可能性があります)。
パススルー クエリには、DSN と接続文字列にパスワードがあります (ストアの問題を整理するため)。動作は、リンク テーブルと同じです。
呼び出される問題のある VBA コードは次のようになります。
CurrentProject.Connection.Execute "INSERT INTO [SomeLocalTable] (id) SELECT id FROM [somePassThroughOrLinkedMySQLTable]"
エラーは、一般的な odbc 接続障害 80004005 です。
このタイプのクエリは常に機能しますが、次のようになります。
Dim cnn As New ADODB.Connection
cnn.Open ("Driver=MySQL ODBC 5.2w Driver;SERVER=myserver;UID=user;DATABASE={db};PORT=3306;DFLT_BIGINT_BIND_STR=1;PWD=secret")
UI のようにパススルー クエリを「初期化」して機能させることはできますか? または、2 番目のタイプのクエリを使用して、ローカルの MS Access テーブルに挿入できますか?
環境: Win8-64bit、Office2013、mysql-odbc-5.2w