⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clsvbconnecttest.cls

📁 VB代码生成器
💻 CLS
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "clsVBConnectTest"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Public Function GetConnectClass(ByVal vstrProjectName As String, _
                              ByRef rstrClassString As String, _
                              Optional ByVal vblnProcedureExist As Boolean = True, _
                              Optional ByRef rlngErrNum As Long = 0, _
                              Optional ByRef rstrErrDescr As String = "") As Boolean
   Dim strTemp As String
   On Error GoTo GetConnectClassErr
   GetConnectClass = False
   
   strTemp = ""
   strTemp = strTemp & "VERSION 1.0 CLASS" & vbCrLf
   strTemp = strTemp & "BEGIN" & vbCrLf
   strTemp = strTemp & "  MultiUse = -1  'True" & vbCrLf
   strTemp = strTemp & "  Persistable = 0  'NotPersistable" & vbCrLf
   strTemp = strTemp & "  DataBindingBehavior = 0  'vbNone" & vbCrLf
   strTemp = strTemp & "  DataSourceBehavior = 0   'vbNone" & vbCrLf
   strTemp = strTemp & "  MTSTransactionMode = 0   'NotAnMTSObject" & vbCrLf
   strTemp = strTemp & "End" & vbCrLf
   strTemp = strTemp & "Attribute VB_Name = ""clsConnection""" & vbCrLf
   strTemp = strTemp & "Attribute VB_GlobalNameSpace = False" & vbCrLf
   strTemp = strTemp & "Attribute VB_Creatable = True" & vbCrLf
   strTemp = strTemp & "Attribute VB_PredeclaredId = False" & vbCrLf
   strTemp = strTemp & "Attribute VB_Exposed = True" & vbCrLf & vbCrLf
   
   strTemp = strTemp & "Option Explicit" & vbCrLf & vbCrLf

   strTemp = strTemp & "Private mobjQDatabase As clsQDatabase" & vbCrLf
   If vblnProcedureExist Then
      strTemp = strTemp & "Private mcolParams As Collection" & vbCrLf
   End If
   strTemp = strTemp & "Private mstrDatabaseName As String" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Property Get ConnectState() As Long" & vbCrLf
      strTemp = strTemp & Space(3) & "ConnectState = mobjQDatabase.QConnectState(mstrDatabaseName)" & vbCrLf
   strTemp = strTemp & "End Property" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Property Get DatabaseType() As EnuDatabaseType" & vbCrLf
      strTemp = strTemp & Space(3) & "DatabaseType = mobjQDatabase.QDatabaseType(mstrDatabaseName)" & vbCrLf
   strTemp = strTemp & "End Property" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Property Get ConnectionString() As String" & vbCrLf
      strTemp = strTemp & Space(3) & "ConnectionString = mobjQDatabase.QConnectionString(mstrDatabaseName)" & vbCrLf
   strTemp = strTemp & "End Property" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Property Get CurrentDatabaseName() As String" & vbCrLf
      strTemp = strTemp & Space(3) & "CurrentDatabaseName = mstrDatabaseName" & vbCrLf
   strTemp = strTemp & "End Property" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Sub SetDatabaseName(Optional ByVal vstrDatabaseName As String = """ & vstrProjectName & """)" & vbCrLf
      strTemp = strTemp & Space(3) & "If Len(mstrDatabaseName) = 0 Then" & vbCrLf
         strTemp = strTemp & Space(6) & "Exit Sub" & vbCrLf
      strTemp = strTemp & Space(3) & "End If" & vbCrLf
      strTemp = strTemp & Space(3) & "mstrDatabaseName = vstrDatabaseName" & vbCrLf
   strTemp = strTemp & "End Sub" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Function OpenConnect(Optional ByVal vblnIsReSet As Boolean = True, _" & vbCrLf
                  strTemp = strTemp & Space(27) & "Optional ByRef rlngErrNum As Long = 0, _" & vbCrLf
                  strTemp = strTemp & Space(27) & "Optional ByRef rstrErrDescr As String = """") As Boolean" & vbCrLf
      strTemp = strTemp & Space(3) & "OpenConnect = mobjQDatabase.QOpenConnect(mstrDatabaseName, vblnIsReSet, rlngErrNum, rstrErrDescr)" & vbCrLf
   strTemp = strTemp & "End Function" & vbCrLf & vbCrLf

   strTemp = strTemp & "Public Function CloseConnect() As Boolean" & vbCrLf
   strTemp = strTemp & "   CloseConnect = mobjQDatabase.QCloseConnect(mstrDatabaseName)" & vbCrLf
   strTemp = strTemp & "End Function" & vbCrLf & vbCrLf

   strTemp = strTemp & "Private Sub Class_Initialize()" & vbCrLf
   
   strTemp = strTemp & "   mstrDatabaseName = """ & vstrProjectName & """" & vbCrLf
   If vblnProcedureExist Then
      strTemp = strTemp & "   Set mcolParams = New Collection" & vbCrLf
   End If
   
   strTemp = strTemp & "   Set mobjQDatabase = New clsQDatabase" & vbCrLf
      strTemp = strTemp & Space(3) & "If ConnectState <> adStateOpen Then" & vbCrLf
         strTemp = strTemp & Space(6) & "Call OpenConnect(False)" & vbCrLf
      strTemp = strTemp & Space(3) & "End If" & vbCrLf
   strTemp = strTemp & "End Sub" & vbCrLf & vbCrLf

   strTemp = strTemp & "Private Sub Class_Terminate()" & vbCrLf
   strTemp = strTemp & "   Set mobjQDatabase = Nothing" & vbCrLf
   
   If vblnProcedureExist Then
      strTemp = strTemp & "   Call ClearParams" & vbCrLf
      strTemp = strTemp & "   Set mcolParams = Nothing" & vbCrLf
   End If
   strTemp = strTemp & "End Sub" & vbCrLf & vbCrLf

   If vblnProcedureExist Then
      strTemp = strTemp & "Private Sub ClearParams()" & vbCrLf
      strTemp = strTemp & "   Dim I As Long, lngCount As Long" & vbCrLf
      strTemp = strTemp & "   lngCount = mcolParams.Count" & vbCrLf
      strTemp = strTemp & "   For I = lngCount To 1 Step -1" & vbCrLf
      strTemp = strTemp & "      mcolParams.Remove I" & vbCrLf
      strTemp = strTemp & "   Next I" & vbCrLf
      strTemp = strTemp & "End Sub" & vbCrLf & vbCrLf
   End If
   
   rstrClassString = strTemp
   GetConnectClass = True
   Err.Clear
GetConnectClassErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Public Function GetStoreProcedure(ByVal vstrProcedureName As String, _
                                    ByRef arrlngParamDirection() As Long, _
                                    ByRef arrstrParamName() As String, _
                                    ByRef arrlngParamType() As Long) As String
   Dim strTemp As String
   Dim I As Long, lngCount As Long
   Dim strParamDirection As String, strParamName As String, strParamType As String, strTypeHead As String
   Dim strAddParams As String, strReturnParams As String
   
   strTemp = ""
   strAddParams = ""
   strTemp = strTemp & "Public Function Exe_" & vstrProcedureName & "("
   
   lngCount = GetArrElementNb(arrstrParamName)
   For I = 0 To lngCount - 1
      strParamDirection = GetParamDirection(arrlngParamDirection(I))
      strParamName = GetParamName(arrstrParamName(I))
      Call GetParamType(arrlngParamType(I), arrlngParamDirection(I), strParamType, strTypeHead)
      
      strTemp = strTemp & Space(27) & strParamDirection & " " & strTypeHead & strParamName & " As " & strParamType & ", " '_" & vbCrLf
      If I Mod 10 = 0 Or I = lngCount - 1 Then
         strTemp = strTemp & Space(27) & "_" & vbCrLf
      End If
      
      strAddParams = strAddParams & Space(6) & ".Add " & strTypeHead & strParamName & ", """ & strTypeHead & strParamName & """" & vbCrLf
      
      If Left(strTypeHead, 1) = "r" Then
'         strReturnParams = strReturnParams & Space(3) & strTypeHead & strParamName & " = mcolParams(""" & strTypeHead & strParamName & """)" & vbCrLf
         strReturnParams = strReturnParams & Space(3) & strTypeHead & strParamName & " = mcolParams(" & I + 1 & ")" & vbCrLf
      End If
   Next I
   
   strTemp = strTemp & Space(27) & "Optional ByRef robjRst As ADODB.Recordset, _" & vbCrLf
   strTemp = strTemp & Space(27) & "Optional ByRef rlngErrNum As Long = 0, _" & vbCrLf
   strTemp = strTemp & Space(27) & "Optional ByRef rstrErrDescr As String = """") As Boolean" & vbCrLf
   strTemp = strTemp & Space(3) & "Call ClearParams" & vbCrLf
   strTemp = strTemp & Space(3) & "With mcolParams" & vbCrLf
   strTemp = strTemp & strAddParams
   strTemp = strTemp & Space(3) & "End With" & vbCrLf & vbCrLf
   
   strTemp = strTemp & Space(3) & "Exe_" & vstrProcedureName & " = mobjQDatabase.QExecuteStoreProcedure(mstrDatabaseName, """ & vstrProcedureName & """, mcolParams, robjRst, rlngErrNum, rstrErrDescr)" & vbCrLf & vbCrLf
   
   strTemp = strTemp & strReturnParams
   strTemp = strTemp & "End Function" & vbCrLf & vbCrLf
   
   GetStoreProcedure = strTemp

End Function

Private Function GetParamDirection(ByVal vlngParamDirection As Long) As String
   Dim strParamDirection As String
   
   strParamDirection = "ByRef"
   
   If vlngParamDirection = adParamInput Then
      strParamDirection = "ByVal"
   End If
   
   GetParamDirection = strParamDirection
End Function

Private Function GetParamName(ByVal vstrParamName As String) As String
   Dim strParamName As String
   
   strParamName = Mid(vstrParamName, 2)
   
   GetParamName = strParamName
End Function

Private Sub GetParamType(ByVal vlngParamType As Long, ByVal vlngParamDirection As Long, ByRef rstrParamType As String, ByRef rstrTypeHead As String)
   Select Case vlngParamType
      Case adDate, adDBDate, adDBTime, adDBTimeStamp
         rstrTypeHead = "dtm"
         rstrParamType = "Date"
      Case adCurrency
         rstrTypeHead = "cur"
         rstrParamType = "Currency"
      Case adDouble
         rstrTypeHead = "dbl"
         rstrParamType = "Double"
      Case adInteger
         rstrTypeHead = "lng"
         rstrParamType = "Long"
      Case adSingle
         rstrTypeHead = "sng"
         rstrParamType = "Single"
      Case adSmallInt
         rstrTypeHead = "int"
         rstrParamType = "Integer"
      Case adChar, adVarChar, adLongVarChar, adWChar, adVarWChar, adLongVarWChar
         rstrTypeHead = "str"
         rstrParamType = "String"
      Case adBoolean
         rstrTypeHead = "bln"
         rstrParamType = "Boolean"
      Case adUnsignedTinyInt
         rstrTypeHead = "byt"
         rstrParamType = "Byte"
'      Case adNumeric
'         rstrTypeHead = "var"
'         rstrParamType = "Variant"
      Case Else
         rstrTypeHead = "var"
         rstrParamType = "Variant"
   End Select
   
   If vlngParamDirection = adParamInput Then
      rstrTypeHead = "v" & rstrTypeHead
   Else
      rstrTypeHead = "r" & rstrTypeHead
   End If
   
End Sub
'Enum DataTypeEnum
'{
'    adEmpty = 0,
'    adTinyInt = 16,
'    adSmallInt = 2,
'    adInteger = 3,
'    adBigInt = 20,
'    adUnsignedTinyInt = 17,
'    adUnsignedSmallInt = 18,
'    adUnsignedInt = 19,
'    adUnsignedBigInt = 21,
'    adSingle = 4,
'    adDouble = 5,
'    adCurrency = 6,
'    adDecimal = 14,
'    adNumeric = 131,
'    adBoolean = 11,
'    adError = 10,
'    adUserDefined = 132,
'    adVariant = 12,
'    adIDispatch = 9,
'    adIUnknown = 13,
'    adGUID = 72,
'    adDate = 7,
'    adDBDate = 133,
'    adDBTime = 134,
'    adDBTimeStamp = 135,
'    adBSTR = 8,
'    adChar = 129,
'    adVarChar = 200,
'    adLongVarChar = 201,
'    adWChar = 130,
'    adVarWChar = 202,
'    adLongVarWChar = 203,
'    adBinary = 128,
'    adVarBinary = 204,
'    adLongVarBinary = 205,
'    adChapter = 136,
'    adFileTime = 64,
'    adPropVariant = 138,
'    adVarNumeric = 139,
'    adArray = 8192
'};
'Public Function GetStoreProcedure(ByVal vstrProjectName As String, _
'                                    ByVal vstrProcedureName As String) As String
'   Dim strTemp As String
'   strTemp = ""
'   strTemp = strTemp & "Public Function Exe_" & vstrProcedureName & "(ByRef rarrstrCommandParams() As String, _" & vbCrLf
'   strTemp = strTemp & Space(27) & "ByRef robjRst As ADODB.Recordset, _" & vbCrLf
'   strTemp = strTemp & Space(27) & "Optional ByRef rlngErrNum As Long = 0, _" & vbCrLf
'   strTemp = strTemp & Space(27) & "Optional ByRef rstrErrDescr As String = """") As Boolean" & vbCrLf
'   strTemp = strTemp & Space(3) & "Exe_" & vstrProcedureName & " = mobjQDatabase.QExecuteStoreProcedure(""" & vstrProjectName & """, """ & vstrProcedureName & """, rarrstrCommandParams, robjRst, rlngErrNum, rstrErrDescr)" & vbCrLf
'   strTemp = strTemp & "End Function" & vbCrLf & vbCrLf
'
'   GetStoreProcedure = strTemp
'
'End Function


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -