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

📄 clsgetdatabase.cls

📁 VB代码生成器
💻 CLS
📖 第 1 页 / 共 2 页
字号:
   Else
      mrst.Open "Select * From [" & vstrTableName & "] Where 1=0", mcnn
   End If
   
   strAutoIncrement = "(None)"
   For Each fld In mrst.Fields
      If fld.Properties("IsAutoIncrement") Then
         strAutoIncrement = fld.Name
         Exit For
      End If
   Next fld
   mrst.Close
   
   If Not mobjVCCppFile.GetCppFileString(vstrProjectName, SelectedTable(vstrTableName), strAutoIncrement, strVCCppString, rlngErrNum, rstrErrDescr) Then
      Err.Raise rlngErrNum, , rstrErrDescr
   End If
   GetVCCppString = strVCCppString
   
   Err.Clear
GetVCCppStringErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Public Function GetStructString(ByVal vstrTableName As String, _
                                 Optional ByRef rlngErrNum As Long = 0, _
                                 Optional ByRef rstrErrDescr As String = "") As String
   Dim objTable As Table
   Dim strStructString As String
   
   On Error GoTo GetStructStringErr
   
   strStructString = mobjBuildStruct.BuildStruct(SelectedTable(vstrTableName))
   GetStructString = strStructString
   
   Err.Clear
GetStructStringErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Public Function GetTableString(ByVal vstrProject As String, _
                              ByVal vstrTableName As String, _
                              Optional ByVal vblnView As Boolean = True, _
                              Optional ByRef rlngErrNum As Long = 0, _
                              Optional ByRef rstrErrDescr As String = "") As String
   Dim objTable As Table
   Dim fld As Field
   Dim strTableString As String
   Dim strAutoIncrement As String
   
   On Error GoTo GetTableStringErr
   
   If UCase(Left(mcnn.Provider, 7)) = "MSDAORA" Then
      mrst.Open "Select * From " & vstrTableName & " Where 1=0", mcnn
   Else
      mrst.Open "Select * From [" & vstrTableName & "] Where 1=0", mcnn
   End If
   
   strAutoIncrement = "(None)"
   For Each fld In mrst.Fields
      If fld.Properties("IsAutoIncrement") Then
         strAutoIncrement = fld.Name
         Exit For
      End If
   Next fld
   mrst.Close
   
   If Not mobjVBTableClass.GetTableString(vstrProject, SelectedTable(vstrTableName), strAutoIncrement, strTableString, vblnView, rlngErrNum, rstrErrDescr) Then
      Err.Raise rlngErrNum, , rstrErrDescr
   End If
   GetTableString = strTableString
   
   Err.Clear
GetTableStringErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Public Function GetProcedureString(ByVal vstrProjectName As String, _
                                 Optional ByVal vstrProcedureName As String = "", _
                                 Optional ByVal vblnView As Boolean = True, _
                                 Optional ByRef rlngErrNum As Long = 0, _
                                 Optional ByRef rstrErrDescr As String = "") As String
   Dim arrlngParamDirection() As Long, arrstrParamName() As String, arrlngParamType() As Long
   Dim strStoreProcedure As String, strConnectionClass As String
   
   Dim I As Long, lngCount As Long
   On Error GoTo GetProcedureStringErr
   
   mcmd.CommandText = vstrProcedureName
   lngCount = mcmd.Parameters.Count
   If lngCount > 0 Then
      ReDim arrlngParamDirection(lngCount - 1)
      ReDim arrstrParamName(lngCount - 1)
      ReDim arrlngParamType(lngCount - 1)
      
      For I = 0 To lngCount - 1
         arrlngParamDirection(I) = mcmd.Parameters(I).Direction
         arrstrParamName(I) = mcmd.Parameters(I).Name
         arrlngParamType(I) = mcmd.Parameters(I).Type
      Next I
   End If
   
   If Len(vstrProcedureName) <> 0 Then
      strStoreProcedure = mobjVBConnectionTest.GetStoreProcedure(vstrProcedureName, arrlngParamDirection, arrstrParamName, arrlngParamType)
   End If

   strConnectionClass = ""
   If vblnView Then
      If Not mobjVBConnectionTest.GetConnectionClass(vstrProjectName, strConnectionClass, vblnView, True, rlngErrNum, rstrErrDescr) Then
         Err.Raise rlngErrNum, , rstrErrDescr
      End If
   End If
   GetProcedureString = strConnectionClass & strStoreProcedure
   
   Err.Clear
GetProcedureStringErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Private Sub GetParamProperty(ByVal vstrProcedureName As String, _
                              ByRef rarrlngParamDirection() As Long, _
                              ByRef rarrstrParamName() As String, _
                              ByRef rarrlngParamType() As Long)
   Dim I As Long, lngCount As Long
   
   mcmd.CommandText = vstrProcedureName
   lngCount = mcmd.Parameters.Count
   If lngCount > 0 Then
      ReDim rarrlngParamDirection(lngCount - 1)
      ReDim rarrstrParamName(lngCount - 1)
      ReDim rarrlngParamType(lngCount - 1)
      
      For I = 0 To lngCount - 1
         rarrlngParamDirection(I) = mcmd.Parameters(I).Direction
         rarrstrParamName(I) = mcmd.Parameters(I).Name
         rarrlngParamType(I) = mcmd.Parameters(I).Type
      Next I
   End If
   
End Sub

Public Function GetConnectionHeadProc(ByVal vstrProjectName As String, _
                                 ByVal vstrProcedureName As String, _
                                 Optional ByRef rlngErrNum As Long = 0, _
                                 Optional ByRef rstrErrDescr As String = "") As String
   Dim arrlngParamDirection() As Long, arrstrParamName() As String, arrlngParamType() As Long
   Dim strStoreProcedure As String
   
   On Error GoTo GetConnectionHeadProcErr
   Call GetParamProperty(vstrProcedureName, arrlngParamDirection, arrstrParamName, arrlngParamType)
   
   strStoreProcedure = mobjVCConnectionHead.GetStoreProcedure(vstrProcedureName, arrlngParamDirection, arrstrParamName, arrlngParamType)
   
   GetConnectionHeadProc = strStoreProcedure
   
   Err.Clear
GetConnectionHeadProcErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Public Function GetConnectionHead(ByVal vstrProjectName As String) As String
   GetConnectionHead = mobjVCConnectionHead.GetConnectionHead(vstrProjectName)
End Function

Public Function GetConnectionHeadTail() As String
   GetConnectionHeadTail = mobjVCConnectionHead.GetConnectionHeadTail
End Function

Public Function GetConnectionCPP(ByVal vstrProjectName As String) As String
   GetConnectionCPP = mobjVCConnectionCPP.GetConnectionCPP(vstrProjectName)
End Function

Public Function GetConnectionCPPProc(ByVal vstrProcedureName As String) As String
   Dim arrlngParamDirection() As Long, arrstrParamName() As String, arrlngParamType() As Long
   Dim strStoreProcedure As String
   
   Call GetParamProperty(vstrProcedureName, arrlngParamDirection, arrstrParamName, arrlngParamType)
   
   strStoreProcedure = mobjVCConnectionCPP.GetStoreProcedure(vstrProcedureName, arrlngParamDirection, arrstrParamName, arrlngParamType)
   
   GetConnectionCPPProc = strStoreProcedure
End Function

Public Function AddNode(ByRef robjTreeView As TreeView, _
                         ByVal vstrKeyName As String, _
                         ByVal vstrText As String, _
                         ByRef FatherNode As Node, _
                         Optional vstrImage As String = "Table") As Node
   On Error GoTo ErrHandle
   
   If FatherNode Is Nothing Then
      Set AddNode = robjTreeView.Nodes.Add(, _
                                      , _
                                      vstrKeyName, _
                                      vstrText, _
                                      vstrImage, _
                                      vstrImage)
   Else
      Set AddNode = robjTreeView.Nodes.Add(FatherNode, _
                                      tvwChild, _
                                      vstrKeyName, _
                                      vstrText, _
                                      vstrImage, _
                                      vstrImage)
   End If
   AddNode.Checked = True
   
   Exit Function
ErrHandle:
   vstrKeyName = vstrKeyName & Timer
   Resume
End Function

Public Function DeleteAllNode(ByRef robjTreeView As TreeView, _
                           Optional ByRef rlngErrNum As Long, _
                           Optional ByRef rstrErrDescr As String) As Boolean
   Dim I As Long, lngCount As Long
   
   On Error GoTo DeleteAllNodeErr
   DeleteAllNode = False
   
   lngCount = mcolTables.Count
   For I = lngCount To 1 Step -1
      mcolTables.Remove I
   Next I
   
   If robjTreeView.Nodes.Count > 0 Then
   
      
      robjTreeView.Nodes.Remove 1
      
      If Not DeleteAllNode(robjTreeView, rlngErrNum, rstrErrDescr) Then
      
         Err.Raise rlngErrNum, , rstrErrDescr
      End If
   End If
   
   
   DeleteAllNode = True
   
   Err.Clear
DeleteAllNodeErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
   
End Function

'Public Function SelectedRecordset(Optional ByVal Item As Long, _
'                              Optional ByVal Key As String, _
'                              Optional ByRef rlngErrNum As Long, _
'                              Optional ByRef rstrErrDescr As String) As ADODB.Recordset
'   On Error GoTo SelectedTableErr
'   Dim objTable As ADODB.Recordset
'
'   Set SelectedRecordset = Nothing
'
'   Set objTable = mcolRecordSet(Key)
'
'   Set SelectedRecordset = objTable
'
'   Err.Clear
'SelectedTableErr:
'   rlngErrNum = Err.Number
'   rstrErrDescr = Err.Description
'
'End Function

Private Function SelectedTable(Optional ByVal Key As String) As Table
   Dim objTable As Table
   
   Set SelectedTable = Nothing
   
   Set objTable = mcolTables(Key)
   
   Set SelectedTable = objTable
   
End Function
'
'Private Sub CheckUdlFile(ByVal vstrUdlFileName As String, ByVal vblnIsReSet As Boolean)
'   Dim SEI As SHELLEXECUTEINFO
'   Dim blnIsReSet As Boolean, lngState As Long
'   Dim strConnection As String
'   Dim pId As Long, pHnd As Long
'
'   On Error GoTo CheckUdlFileErr
'   blnIsReSet = vblnIsReSet
'   If Dir(vstrUdlFileName) = "" Then
'      Open vstrUdlFileName For Output As #1
'      Close #1
'      blnIsReSet = True
'   End If
'
'   lngState = mobjCnn.State
'   If (Not blnIsReSet) And (lngState = adStateClosed) Then
'      strConnection = "File Name=" & vstrUdlFileName
'      mobjCnn.Open strConnection
'   End If
'
'   If blnIsReSet Then
'      With SEI
'         .cbSize = Len(SEI)
'         .fMask = SEE_MASK_NOCLOSEPROCESS
'         .hWnd = 0
'         .lpVerb = vbNullChar
'         .lpFile = vstrUdlFileName
'         .lpParameters = vbNullChar
'         .lpDirectory = vbNullChar
'         .nShow = 0
'         .hInstApp = 0
'         .lpIDList = 0
'      End With
'      If ShellExecuteEx(SEI) <> 0 Then
'         WaitForSingleObject SEI.hProcess, INFINITE '等待结束
'         CloseHandle SEI.hProcess
'      Else
'         On Error GoTo 0
'         Err.Raise vbObjectError + 1, , "请手动打开数据源文件进行数据链接:" & vbCrLf & CurDir & "\" & vstrUdlFileName
'      End If
'   End If
'
'   Exit Sub
'CheckUdlFileErr:
'   blnIsReSet = True
'   Resume Next
'End Sub

Private Sub Class_Initialize()
'   Set mcolRecordSet = New Collection
   Set mcolTables = New Collection
   Set mrst = New ADODB.Recordset
   Set mcmd = New ADODB.Command
   Set mobjVBTableClass = New clsVBTableClass
   Set mobjBuildStruct = New clsBuildStruct
   Set mobjVBConnectionTest = New clsVBConnectionTest
   Set mobjVCCppFile = New clsVCCppFile
   Set mobjVCHeadFile = New clsVCHeadFile
   Set mobjVCConnectionHead = New clsVCConnectionHead
   Set mobjVCConnectionCPP = New clsVCConnectionCPP
End Sub

Private Sub Class_Terminate()
'   Set mcolRecordSet = Nothing
   On Error Resume Next
   Set mobjBuildStruct = Nothing
   Set mobjVBTableClass = Nothing
   Set mobjVBConnectionTest = Nothing
   Set mobjVCCppFile = Nothing
   Set mobjVCHeadFile = Nothing
   Set mobjVCConnectionHead = Nothing
   Set mobjVCConnectionCPP = Nothing
   
   Set mcmd = Nothing
   If mrst.State <> adStateClosed Then
      mrst.Close
   End If
   Set mrst = Nothing
   
   If mcnn.State <> adStateClosed Then
      mcnn.Close
   End If
   Set mcnn = Nothing
   Set mcolTables = Nothing
End Sub

⌨️ 快捷键说明

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