'----******************** TConnString *****************************----
'資料庫連接字串結構體
Class TConnString
Public DBName,DBPath,DBServer,DBUser,DBPass,DBType
End Class
'----******************** TConnString *****************************----
'----********************* TDBOperate *****************************----
'通用資料庫操作類
Class TDBOperate
Private cls_oConn,cls_oRS '類私人Connection對象、RecordSet對象
Private cls_sErrInfo,cls_sConn,cls_sSQL,cls_sURL,cls_sFormAction
Private cls_iPageSize '分頁數
Private cls_lTotalPage,cls_lTotalRecord,cls_lPageNo
'類初始化
Private Sub Class_Initialize()
End Sub
'*****************************************
' 類型: 屬性
' 目的: 根據擷取的Connection String,建立資料庫連接
' 輸入: a_sConn:資料類型字串
' 返回: 無
'*****************************************
Public Property Let SetConn(a_sConn)
Dim sObjType
sObjType = LCase(TypeName(a_sConn))
If sObjType <> "string" Then
cls_sErrInfo = cls_sErrInfo & "<li>SetConn:非法的字串參數</li>" & Chr(10)
Exit Property
End If
Set cls_oConn = CreateObject("Adodb.Connection")
On Error Resume Next
cls_oConn.Open a_sConn
If Err Then
Err.Clear
Set cls_oConn = Nothing
On error goto 0
cls_sErrInfo = cls_sErrInfo & "<li>資料庫連接出錯</li>" & Chr(10)
End If
On Error Goto 0
End Property
'*****************************************
' 類型: 屬性
' 目的: 根據擷取的Connection對象,建立資料庫連接
' 輸入: a_oConn:資料類型字串
' 返回: 無
'*****************************************
Public Property Set SetConn(a_oConn)
Dim sObjType,sConn
Dim oConnStr
sObjType = LCase(TypeName(a_oConn))
Select Case sObjType
Case "connection"
'設定Connection對象
Set cls_oConn = a_oConn
Case "tconnstring"
sConn = ""
Set oConnStr = a_oConn
Select Case (oConnStr.DBType)
Case gbl_iDB_Access
sConn = "Provider = micorsoft.jet.oledb.4.0; User ID = " & oConnStr.DBUser & "; Password = " & Replace(oConnStr.DBPass, Chr(0), "") & ";Initial Catalog = " & oConnStr.DBName & "; Data Source = " & SqlLocalName & ";"
Case gbl_iDB_MsSQL
sConn = "Provider = Sqloledb; User ID = " & oConnStr.DBUser & "; Password = " & Replace(oConnStr.DBPass, Chr(0), "") & ";Initial Catalog = " & oConnStr.DBName & "; Data Source = " & oConnStr.DBServer & ";"
End Select
If sConn = "" Then
cls_sErrInfo = cls_sErrInfo & "<li>資料庫連接對象出錯,無法建立Connection對象</li>" & Chr(10)
Exit Property
End If
'設定Connection串連串值,供ConnStr屬性返回
cls_sConn = sConn
Set cls_oConn = CreateObject("Adodb.Connection")
On Error Resume Next
cls_oConn.Open sConn
If Err Then
Err.Clear
Set cls_oConn = Nothing
cls_sErrInfo = cls_sErrInfo & "<li>資料庫連接出錯</li>" & Chr(10)
End If
On Error Goto 0
Case Else
cls_sErrInfo = cls_sErrInfo & "<li>SetConn:非法的對象參數</li>" & Chr(10)
Exit Property
End Select
End Property
'*****************************************
' 類型: 屬性
' 目的: 設定RecordSet對象
' 輸入: a_sSQL: SQL語句。
' 返回: 無。
'*****************************************
Public Property Let SetRS(a_sSQL)
If LCase(TypeName(cls_oConn)) <> "connection" Then
cls_sErrInfo = cls_sErrInfo & "<li>非法的Connection對象,無法建立RecordSet對象</li>" & Chr(10)
Exit Property
End If
cls_sSQL = a_sSQL
'建立RecordSet對象
Set cls_oRS = CreateObject("Adodb.RecordSet")
' On Error Resume Next
cls_oRS.Open cls_sSQL,cls_oConn,1,1
' On Error Goto 0
End Property
'*****************************************
' 類型: 屬性
' 目的: 設定RecordSet對象
' 輸入: a_oRS: RecordSet對象
' 返回: 無。
'*****************************************
Public Property Set SetRS(a_oRS)
If LCase(TypeName(a_oRS))<>"recordset" Then
cls_sErrInfo = cls_sErrInfo & "<li>非法的RecordSet對象</li>" & Chr(10)
Exit Property
End If
'設定RecordSet對象
Set cls_oRS = a_oRS
End Property
'*****************************************
' 類型: 屬性
' 目的: 設定RecordSet對象
' 輸入: a_oRS: RecordSet對象
' 返回: 返回一RecordSet對象
'*****************************************
Public Property Get GetRS()
Set GetRS = cls_oRS
End Property
'擷取Connection對象
Public Property Get GetConn()
If cls_sErrInfo <> "" Then
Call ShowError()
End If
If LCase(TypeName(cls_oConn))<>"connection" Then
cls_sErrInfo = cls_sErrInfo & "<li>Connection對象擷取失敗</li>"
' Exit Property
End If
Set GetConn = cls_oConn
End Property
'返回資料庫連接字串
Public Property Get ConnStr
ConnStr = cls_sConn
End Property
'設定第個頁面顯示的資料數
Public Property Let PageSize(a_iPageSize)
If Not IsNumeric(a_iPageSize) Then
cls_sErrInfo = cls_sErrInfo & "<li>無效的分頁記錄數參數</li>" & Chr(10)
Exit Property
End If
cls_iPageSize = a_iPageSize
End Property
'設定SQL語句,用於建立RecordSet對象
Public Property Let SQL(a_sSQL)
If IsNone(a_sSQL) Then
cls_sErrInfo = cls_sErrInfo & "<li>沒有設定SQL,無法建立RecordSet對象</li>" & Chr(10)
Exit Property
End If
cls_sSQL = Trim(a_sSQL)
End Property