'接続情報
Public Const sInstance = "XXX.X.X.X/XXXX"
Public Const sUser = "XXXXXXX"
Public Const sPassword = "XXXXXXX"
'接続情報設定変数
Public OraSess As Object
Public OraDB As Object
Public OraDS As Object
'*******************************
' データベース接続処理(Oracle)
'*******************************
Public Sub DB_Connect()
'オブジェクト作成
Set OraSess = CreateObject("OracleInProcServer.XOraSession")
Set OraSess = New OraSessionClass
'DB接続
Set OraDB = OraSess.OpenDatabase(sInstance, sUser & "/" & sPassword, ORADB_DEFAULT)
End Sub
'*******************************
' データベース解放処理(Oracle)
'*******************************
Public Sub DB_DisConnect()
Set OraDB = Nothing
Set OraSess = Nothing
' データベース解放処理(Oracle)
'*******************************
Public Sub DB_DisConnect()
Set OraDB = Nothing
Set OraSess = Nothing
End Sub
'*******************************
' Select実行処理(Oracle)
' SQL、ヘッダー有無
' 値
'*******************************
Public Function DB_SelectEnter(ByVal strSql As String, ByVal flgHeader As Boolean) As String
Dim intCol As Integer
Dim intRow As Integer
Dim strReturnTitle As String
Dim strReturnData As String
Call DB_Connect
'--------
' 参照系
'--------
'SQLセット
Set OraDS = OraDB.CreateDynaset(strSql, ORADYN_READONLY)
'結果取得
With OraDS
If flgHeader = True Then
For intCol = 1 To .Fields.Count
If intCol = 1 Then
strReturnTitle = .Fields(intCol - 1).Name
Else
strReturnTitle = strReturnTitle & vbTab & .Fields(intCol - 1).Name
End If
Next intCol
Else
strReturnTitle = ""
End If
strReturnData = ""
'件数カウント
If .RecordCount <> 0 Then
'対象レコード分ループ
intRow = 1
Do Until .EOF
If intRow = 1 Then
For intCol = 1 To .Fields.Count
If intCol = 1 Then
strReturnData = IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
Else
strReturnData = strReturnData & vbTab & IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
End If
Next intCol
Else
For intCol = 1 To .Fields.Count
If intCol = 1 Then
strReturnData = strReturnData & vbCrLf & IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
Else
strReturnData = strReturnData & vbTab & IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
End If
Next intCol
End If
'次のレコードへ
intRow = intRow + 1
.DbMoveNext
Loop
End If
End With
If flgHeader = True Then
ClipBoadCopy (strReturnTitle & vbCrLf & strReturnData)
Else
ClipBoadCopy (strReturnData)
End If
GoTo Obj_Rls:
'------------
' エラー処理
'------------
Err_Han:
MsgBox (Err.Description)
'----------
' 開放処理
'----------
Obj_Rls:
DB_DisConnect
Set OraDS = Nothing
'件数カウント
If .RecordCount <> 0 Then
'対象レコード分ループ
intRow = 1
Do Until .EOF
If intRow = 1 Then
For intCol = 1 To .Fields.Count
If intCol = 1 Then
strReturnData = IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
Else
strReturnData = strReturnData & vbTab & IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
End If
Next intCol
Else
For intCol = 1 To .Fields.Count
If intCol = 1 Then
strReturnData = strReturnData & vbCrLf & IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
Else
strReturnData = strReturnData & vbTab & IIf(IsNull(.Fields(intCol - 1).Value), "", .Fields(intCol - 1).Value)
End If
Next intCol
End If
'次のレコードへ
intRow = intRow + 1
.DbMoveNext
Loop
End If
End With
If flgHeader = True Then
ClipBoadCopy (strReturnTitle & vbCrLf & strReturnData)
Else
ClipBoadCopy (strReturnData)
End If
GoTo Obj_Rls:
'------------
' エラー処理
'------------
Err_Han:
MsgBox (Err.Description)
'----------
' 開放処理
'----------
Obj_Rls:
DB_DisConnect
Set OraDS = Nothing
End Function
'*******************************
' Select実行処理(Oracle)
' SQL、ヘッダー有無
' 値
'*******************************
Public Sub DB_ExecuteEnter(ByVal strSql As String)
Call DB_Connect
'SQL実行
OraDB.ExecuteSQL (strSql)
GoTo Obj_Rls:
'------------
' エラー処理
'------------
Err_Han:
MsgBox (Err.Description)
'----------
' 開放処理
'----------
Obj_Rls:
DB_DisConnect
' Select実行処理(Oracle)
' SQL、ヘッダー有無
' 値
'*******************************
Public Sub DB_ExecuteEnter(ByVal strSql As String)
Call DB_Connect
'SQL実行
OraDB.ExecuteSQL (strSql)
GoTo Obj_Rls:
'------------
' エラー処理
'------------
Err_Han:
MsgBox (Err.Description)
'----------
' 開放処理
'----------
Obj_Rls:
DB_DisConnect
End Sub
'*******************************
' ストリングをクリップボードへ出力
'*******************************
Public Sub ClipBoadCopy(ByVal strData As String)
Dim buf As String
Dim CB As New MSForms.DataObject
With CB
.SetText strData ''変数のデータをDataObjectに格納する
.PutInClipboard ''DataObjectのデータをクリップボードに格納する
End With
End Sub
' ストリングをクリップボードへ出力
'*******************************
Public Sub ClipBoadCopy(ByVal strData As String)
Dim buf As String
Dim CB As New MSForms.DataObject
With CB
.SetText strData ''変数のデータをDataObjectに格納する
.PutInClipboard ''DataObjectのデータをクリップボードに格納する
End With
End Sub