VBAからSQLiteにアクセスしたいお年頃から3年経ってますけど、未だにVBAとSQLiteいじっています。
いじっている中で、SQLiteファイルを用途ごとに幾つかのファイルに別けているんですが、仕様変更とかすると、このファイルを別けてしまったTableを連結させたくなりました。
「設計が悪いんじゃ」っていうツッコミはいらぬ。
当たり前に出来るわけないと先入観を持ってたんですが、調べたら結構あっさりできてやんの。
ちなみに2ファイル、どちらも同じパスワードで暗号化してあります。
Sub test()
Dim objConn As New vbRichClient5.cConnection
Dim objRecSet As vbRichClient5.cRecordset
Dim result As String: result = "とれたデータ" & vbCrLf
Dim i As Long
If Not objConn.OpenDB("dbパス", "必要ならパスワード") Then
Err.Raise 1, "", "objConn OpenDB Err"
End If
Call objConn.Execute("ATTACH DATABASE '連結したいdbパス' AS ATTACHDB")
Set objRecSet = objConn.OpenRecordset("SELECT ORG.NAME, AT.KEY " _
& "FROM OpenしたDBのテーブル名 ORG " _
& "INNER JOIN ATTACHDB.ATTACHしたいTable名 AT " _
& "WHERE ORG.ID = AT.ID;")
Do While Not objRecSet.EOF
For i = 0 To objRecSet.Fields.count - 1
If i <> 0 Then
result = result & " / "
End If
result = result & objRecSet.Fields(i).Name _
& "=" & objRecSet.Fields(i).value
Next i
result = result & vbCrLf
objRecSet.MoveNext
Loop
Debug.Print result
GoTo ExitFunc
ErrFunc:
MsgBox Err.Description
ExitFunc:
Set objConn = Nothing
Set objRecSet = Nothing
End Sub
ただパフォーマンスはどうなのってのはまだ未調査…。
他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。