Option Explicit
Public Oracle_ホスト名 As String
Public Oracle_ポート As String
Public Oracle_サービス名 As String
Public OracleTNS_ネットサービス名 As String
Public PostgreSql_サーバー名 As String
Public PostgreSql_データベース名 As String
Public PostgreSqlODBC_DSN As String
Public ユーザID As String
Public パスワード As String
Private Const CONSTR_ORACLE As String = "Provider=OraOLEDB.Oracle;" _
& "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" _
& "(HOST=【HOST】)" _
& "(PORT=【PORT】))" _
& "(CONNECT_DATA=(SERVICE_NAME=【SERVICE_NAME】)))" _
& ";USER ID= 【USER ID】" _
& ";PASSWORD= 【PASSWORD】"
Private Const CONSTR_ORACLE_TNS As String = "PROVIDER=OraOLEDB.Oracle;DATA SOURCE=【DATA SOURCE】;USER ID=【USER ID】;PASSWORD=【PASSWORD】"
Private Const CONSTR_POSTGRESQL As String = "DRIVER=PostgreSQL Unicode;DATABASE=【DATABASE】;SERVER=【SERVER】;UID=【UID】;PWD=【PWD】"
Private Const CONSTR_POSTGRESQL_ODBC As String = "DSN=【DSN】"
Public Enum enmDBtype
Oracle
Oracle_TNS
PostgreSQL
PostgreSQL_ODBC
End Enum
Private adoCon As ADODB.Connection
Private adoCmd As ADODB.Command
Private Sub Class_Terminate()
Me.DBClose
End Sub
Public Function DBOpen(aDBType As enmDBtype) As Boolean
On Error GoTo Err
Dim conStr As String
Dim conStr_log As String
Set adoCon = New ADODB.Connection
Select Case aDBType
Case enmDBtype.Oracle
conStr = GetConStr_Ora1
conStr_log = Left(conStr, InStr(conStr, "PASSWORD=") - 1)
Case enmDBtype.Oracle_TNS
conStr = GetConStr_Ora2
conStr_log = Left(conStr, InStr(conStr, "PASSWORD=") - 1)
Case enmDBtype.PostgreSQL
conStr = GetConStr_Pos1
conStr_log = Left(conStr, InStr(conStr, "PWD=") - 1)
Case enmDBtype.PostgreSQL_ODBC
conStr = GetConStr_Pos2
conStr_log = conStr
End Select
adoCon.Open conStr
DBOpen = True
If logging Then AddLog "DBOpen", "INFO ", "接続文字列:" & conStr_log
Exit Function
Err:
DBOpen = False
If logging Then AddLog "DBOpen", "ERROR", "接続文字列:" & conStr_log & " / エラー内容:" & Err.Description
End Function
Public Function DBClose() As Boolean
On Error GoTo Err
DBClose = True
If adoCon Is Nothing Then Exit Function
If adoCon.State = ObjectStateEnum.adStateClosed Then Exit Function
adoCon.Close
If logging Then AddLog "DBClose", "INFO "
Exit Function
Err:
DBClose = False
If logging Then AddLog "DBClose", "ERROR", "エラー内容:" & Err.Description
End Function
Public Function RecOpen(aSql As String, _
aRs As ADODB.Recordset, _
Optional aCursorType As CursorTypeEnum = adOpenKeyset, _
Optional aLockType As LockTypeEnum = adLockReadOnly) _
As Boolean
On Error GoTo Err
aRs.Open aSql, adoCon, aCursorType, aLockType
RecOpen = True
If logging Then AddLog "RecOpen", "INFO ", "SQL:" & aSql
Exit Function
Err:
If logging Then AddLog "RecOpen", "ERROR", "SQL:" & aSql & " / エラー内容:" & Err.Description
End Function
Public Function ExecSQL(aSql As String, Optional aResultCnt As Long) As Boolean
On Error GoTo Err
adoCon.Execute aSql, aResultCnt
ExecSQL = True
If logging Then AddLog "ExecSQL", "INFO ", "SQL:" & aSql
Exit Function
Err:
If logging Then AddLog "ExecSQL", "ERROR", "SQL:" & aSql & " / エラー内容:" & Err.Description
End Function
Public Function PasteRec(aRs As ADODB.Recordset, aRange As Range, Optional aIsHeader As Boolean)
Dim i As Long
If aIsHeader Then
For i = 0 To aRs.Fields.Count - 1
aRange.item(1, i + 1).Value = aRs.Fields(i).Name
Next
End If
Call aRange.Offset(IIf(aIsHeader, 1, 0)).CopyFromRecordset(aRs)
End Function
Public Function BeginTrans() As Boolean
On Error GoTo Err
adoCon.BeginTrans
BeginTrans = True
If logging Then AddLog "BeginTrans", "INFO "
Exit Function
Err:
If logging Then AddLog "BeginTrans", "ERROR" & " / エラー内容:" & Err.Description
End Function
Public Function CommitTrans() As Boolean
On Error GoTo Err
adoCon.CommitTrans
CommitTrans = True
If logging Then AddLog "CommitTrans", "INFO "
Exit Function
Err:
If logging Then AddLog "CommitTrans", "ERROR" & " / エラー内容:" & Err.Description
End Function
Public Function RollbackTrans() As Boolean
On Error Resume Next
RollbackTrans = True
adoCon.RollbackTrans
If logging Then AddLog "RollbackTrans", "INFO "
End Function
Private Function GetConStr_Ora1() As String
GetConStr_Ora1 = CONSTR_ORACLE
GetConStr_Ora1 = Replace(GetConStr_Ora1, "【HOST】", Oracle_ホスト名)
GetConStr_Ora1 = Replace(GetConStr_Ora1, "【PORT】", Oracle_ポート)
GetConStr_Ora1 = Replace(GetConStr_Ora1, "【SERVICE_NAME】", Oracle_サービス名)
GetConStr_Ora1 = Replace(GetConStr_Ora1, "【USER ID】", ユーザID)
GetConStr_Ora1 = Replace(GetConStr_Ora1, "【PASSWORD】", パスワード)
End Function
Private Function GetConStr_Ora2() As String
GetConStr_Ora2 = CONSTR_ORACLE_TNS
GetConStr_Ora2 = Replace(GetConStr_Ora2, "【DATA SOURCE】", OracleTNS_ネットサービス名)
GetConStr_Ora2 = Replace(GetConStr_Ora2, "【USER ID】", ユーザID)
GetConStr_Ora2 = Replace(GetConStr_Ora2, "【PASSWORD】", パスワード)
End Function
Private Function GetConStr_Pos1() As String
GetConStr_Pos1 = CONSTR_POSTGRESQL
GetConStr_Pos1 = Replace(GetConStr_Pos1, "【DATABASE】", PostgreSql_データベース名)
GetConStr_Pos1 = Replace(GetConStr_Pos1, "【SERVER】", PostgreSql_サーバー名)
GetConStr_Pos1 = Replace(GetConStr_Pos1, "【UID】", ユーザID)
GetConStr_Pos1 = Replace(GetConStr_Pos1, "【PWD】", パスワード)
End Function
Private Function GetConStr_Pos2() As String
GetConStr_Pos2 = CONSTR_POSTGRESQL_ODBC
GetConStr_Pos2 = Replace(GetConStr_Pos2, "【DSN】", PostgreSqlODBC_DSN)
End Function