データベースに接続する際のソースはこんな感じである。ADOを参照設定しておく必要はあるが、その辺は今回省く。過去に作ったものなので、標準モジュールにコピーしても動くとは思う。
★ポイント と書いた部分を変更すれば、AccessだろうがPostgreSQLだろうが、対応さえしていればアクセス可能になる。
これを標準モジュールで行うと、このコーディングひとつで1セッション分しか接続できない。このソースをコピーして使うにも、Publicで定義している変数名を変えてやるとか、手を加えなければならないところが多く、煩雑である。これをクラスモジュール化してしまえば必要なときに、必要なだけ作り、いらなくなれば破棄するという処理ができるので似たようなコードがたくさんできることはなくなり、メンテナンス性が向上する。
次回はクラスモジュールのサンプルコードを書いてみようと思う。
Option Explicit
Public Con As ADODB.Connection
Public Cmd As ADODB.Command
Public Rs As ADODB.Recordset
Public ERR As ADODB.Errors
Private Const CI_TIMEOUT As Integer = 30
'----------------------------------------
'# DB OPEN処理
'----------------------------------------
Public Sub openDB()
'----ログインチェックは省略
Set Con = New ADODB.Connection
'★ポイント
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\TestAccess.mdb;"
Set Rs = New ADODB.Recordset
Set Cmd = New ADODB.Command
With Cmd
.ActiveConnection = Con
.CommandType = adCmdText
.CommandTimeout = CI_TIMEOUT
End With
End Sub
'----------------------------------------
'# DB CLOSE処理
'----------------------------------------
Private Sub closeDB()
On Error Resume Next
Con.Close
Set Con = Nothing
Exit Sub
PROC_ERR:
ERR.Refresh
Resume Next
End Sub
★ポイント と書いた部分を変更すれば、AccessだろうがPostgreSQLだろうが、対応さえしていればアクセス可能になる。
これを標準モジュールで行うと、このコーディングひとつで1セッション分しか接続できない。このソースをコピーして使うにも、Publicで定義している変数名を変えてやるとか、手を加えなければならないところが多く、煩雑である。これをクラスモジュール化してしまえば必要なときに、必要なだけ作り、いらなくなれば破棄するという処理ができるので似たようなコードがたくさんできることはなくなり、メンテナンス性が向上する。
次回はクラスモジュールのサンプルコードを書いてみようと思う。