2013年2月14日木曜日

LocalDBをVBAから使ってみる

久しぶりの投稿です。

しばらくKinectさわっていません。
なぜかHoGの投稿に定期的にアクセスがあります。どうしてなのかな?

さて、今回はSQLServer2012から新たに追加になったLocalDBについてです。

SQL Server2012Expressもほとんど同じですが、スタンドアローン環境で使うならLocalDBの方が手軽に使えそうです。

ただ、色々なサイトで解説はあるんですが、VBAでの解説があまりないようです。

試しにExcel2013でADO+NativeClientで接続してみようとすると、最初はうまく接続できませんでした。


最初に書いたコードです。

-----------------------------------------------------------------------------------------------------------
Sub DB接続()

Dim cn As New ADODB.Connection

cn.ConnectionString = "provider=sqlncli11;server=(localdb)\v11.0;database=test;integrated security=true;DataTypeCompatibility=80;MARS Connection=True"

cn.Open

Dim rs As New ADODB.Recordset

rs.Open "select * from T_商品", cn, adOpenStatic, adLockReadOnly

If rs.BOF And rs.EOF Then

Else
Range("A1").Select
ActiveCell.CopyFromRecordset rs
End If

rs.Close
Set rs = Nothing

End Sub
-----------------------------------------------------------------------------------------------------------
(あらかじめ既定のインスタンスにtestデータベースを作成して、T_商品テーブルを追加しています。)

この場合コネクションを開いた時点でエラーが発生しました。

色々試した結果は

「integrated security=true」を「integrated security=SSPI」に変更すれば正常に動作しました。

通常TrueでもADO.NETなどは動くようなのですが・・・・

まぁ、これでEXCELやACCESSでもLocalDBが利用できそうです。

あとLocalDBはSQLOLEDBプロバイダは使えないみたいです。