Calender
Sun Mon Tue Wed Thu Fri Sat
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>
広告
SEARCH

SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
LINKS
PROFILE
OTHERS
SKYPE
PC: skype.jojo.jp
chat
iPad: iphone.jojo.jp
chat call
THANKS



本日:
昨日:
多言語
広告
 ▼▲ 作業日報 ▼△
    What's under the hood?
<< WORD、改行を自動で入れない | main | 名鉄、大雨の為、運行規制 >>
Excel ワークブック間のDB接続セッションの維持
dbに接続し苦労して作った一時テーブル(create temp table等)を再利用したい場合がありますが、VBAでは接続を明示的に再利用する方法(PHPの(*_pconnect等))がありません。
 ただBook間で変数の受け渡しは可能ですので、以下のようにVBAで持続的接続を実装できます。

 シンプルにセッションを維持させたいのであればconn1変数でADODB.Connectionオブジェクトを受け渡すのが簡単かもしれません。

問題点:
 但しこの場合Book1.xlsで1度でも編集モードに移行したり、エラーで止まったりするとconn1変数(セッションの情報)は開放されてしまいます。
 それを防止する(Book2.xlsから常にconn1変数を利用できるようにする)には、セッション生成用のクラスを定義し、conn1をクラス化しNewで自動生成変数にします。

 但しクラスプロパティの「Instancing」項目に「2-PublicNotCreatable」を指定してやる必要があります。
 実際には「WorkBooks("Books1.xls").sess.conn」が接続変数になります。

ちなみにデフォルトの「1-Private」のままだと以下のようなエラーが出ます。


 サンプル(Book1.xls,Book2.xls)....Download(26Kbyte)
 ↑接続文字列はDBにあわせて下さい、Book1.xlsが最初の画面です
| 開発関連 | 15:48 | comments(0) | trackbacks(0) |









http://blog.jojo.jp/trackback/1244166