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

📄 clsvccppfile.cls

📁 VB代码生成器
💻 CLS
📖 第 1 页 / 共 4 页
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "clsVCCppFile"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'**********************************************************************
'**  功能描述: 代码生成器VC源码表操作部份CPP
'**
'**  作    者: 陈顺球(LionCSQ)
'**  创建时间: 2005 年 09 月 08 日
'**-------------------------------------------------------------------
'**
'**  改进人员: 寻百安(XunBaian)
'**  改进日期: 2005 年 09 月 15 日

'**  改进描述:
'**********************************************************************

Option Explicit

Private mstrAutoIncrement As String

Public Function GetCppFileString(ByVal vstrProjectName As String, _
                                 ByRef objTable As Table, _
                                 ByVal vstrAutoIncrement As String, _
                                 ByRef rstrCppFile As String, _
                                 Optional ByRef rlngErrNum As Long = 0, _
                                 Optional ByRef rstrErrDescr As String = "") As Boolean
   Dim strTemp As String
   Dim strTableType As String
   
   On Error GoTo GetCppFileStringErr
   GetCppFileString = False

   strTableType = UCase(objTable.Type)
   mstrAutoIncrement = vstrAutoIncrement
   
   strTemp = CreateIncludeString(vstrProjectName, objTable)
'   strTemp = strTemp & CreateSetConnect(vstrProjectName, objTable)
   strTemp = strTemp & CreateFtoaDtoa(objTable)
   If strTableType <> "VIEW" Then
      strTemp = strTemp & CreateQAddNew(vstrProjectName, objTable)
      strTemp = strTemp & CreateGetUpdateString(vstrProjectName, objTable)
'      strTemp = strTemp & CreateQUpdateBySN(vstrProjectName, objTable)
      strTemp = strTemp & CreateQUpdateByField(vstrProjectName, objTable)
      strTemp = strTemp & CreateQUpdateByWhere(vstrProjectName, objTable)
      strTemp = strTemp & CreateQDelAll(vstrProjectName, objTable)
'      strTemp = strTemp & CreateQDelBySN(vstrProjectName, objTable)
      strTemp = strTemp & CreateQDelByField(vstrProjectName, objTable)
      strTemp = strTemp & CreateQDelByWhere(vstrProjectName, objTable)
   End If
   strTemp = strTemp & CreateQGetAll(vstrProjectName, objTable)
'   strTemp = strTemp & CreateQGetBySN(vstrProjectName, objTable)
   strTemp = strTemp & CreateQGetByField(vstrProjectName, objTable)
   strTemp = strTemp & CreateQGetBySQL(vstrProjectName, objTable)
   strTemp = strTemp & CreateQGetByWhere(vstrProjectName, objTable)
   strTemp = strTemp & CreateGetResult(vstrProjectName, objTable)
   strTemp = strTemp & CreateQMove(objTable)
   strTemp = strTemp & CreateGetFindSQL(objTable)

   rstrCppFile = strTemp
   GetCppFileString = True
   Err.Clear
GetCppFileStringErr:
   rlngErrNum = Err.Number
   rstrErrDescr = Err.Description
End Function

Private Function CreateIncludeString(ByVal vstrProjectName As String, _
                                 ByRef objTable As Table) As String
   Dim strTemp As String
   Dim strTableName As String
   strTableName = objTable.Name

   '声明部分
   strTemp = "// " & strTableName & ".cpp: implementation of the C" & strTableName & " class." & vbCrLf
   strTemp = strTemp & "//" & vbCrLf & String(70, "/") & vbCrLf & vbCrLf

   strTemp = strTemp & "#include ""stdafx.h""" & vbCrLf
'   strTemp = strTemp & "#include """ & vstrProjectName & ".h""" & vbCrLf
   strTemp = strTemp & "#include """ & strTableName & ".h""" & vbCrLf & vbCrLf

   strTemp = strTemp & "#ifdef _DEBUG" & vbCrLf
   strTemp = strTemp & "#undef THIS_FILE" & vbCrLf
   strTemp = strTemp & "static char THIS_FILE[]=__FILE__;" & vbCrLf
   strTemp = strTemp & "#define new DEBUG_NEW" & vbCrLf
   strTemp = strTemp & "#endif" & vbCrLf & vbCrLf

   strTemp = strTemp & String(70, "/") & vbCrLf
   strTemp = strTemp & "// Construction/Destruction" & vbCrLf
   strTemp = strTemp & String(70, "/") & vbCrLf & vbCrLf

   '构造函数
   strTemp = strTemp & "C" & strTableName & "::C" & strTableName & "()" & vbCrLf
   strTemp = strTemp & "{" & vbCrLf
      strTemp = strTemp & Space(4) & "m_lpszDatabaseName = """ & vstrProjectName & """;" & vbCrLf
      strTemp = strTemp & Space(4) & "m_lpszTableName = """ & strTableName & """;" & vbCrLf
      strTemp = strTemp & Space(4) & "mlngRecordCount = -1;" & vbCrLf
      strTemp = strTemp & Space(4) & "mrst.CreateInstance((__uuidof(Recordset)));" & vbCrLf & vbCrLf
      
      strTemp = strTemp & Space(4) & "if (GetConnectState()!=adStateOpen)" & vbCrLf
      strTemp = strTemp & Space(4) & "{" & vbCrLf
         strTemp = strTemp & Space(8) & "QOpenConnect(m_lpszDatabaseName, FALSE);" & vbCrLf
      strTemp = strTemp & Space(4) & "}" & vbCrLf
      strTemp = strTemp & Space(4) & "mintDatabaseType = QGetDatabaseType(m_lpszDatabaseName);" & vbCrLf
   strTemp = strTemp & "}" & vbCrLf & vbCrLf

   '析构函数
   strTemp = strTemp & "C" & strTableName & "::~C" & strTableName & "()" & vbCrLf
   strTemp = strTemp & "{" & vbCrLf
      strTemp = strTemp & Space(4) & "QCloseRecordSet(m_lpszDatabaseName, mrst);" & vbCrLf
   strTemp = strTemp & "}" & vbCrLf & vbCrLf

   CreateIncludeString = strTemp
End Function

'SetConnect函数
Private Function CreateSetConnect(ByVal vstrProjectName As String, _
                                 ByRef objTable As Table) As String
   Dim strTemp As String
   Dim strTableName As String
   strTableName = objTable.Name

   strTemp = "BOOL C" & strTableName & "::SetConnect(BOOL bIsReset)" & vbCrLf
   strTemp = strTemp & "{" & vbCrLf
      strTemp = strTemp & Space(4) & "return QOpenConnect(m_lpszDatabaseName, bIsReset);" & vbCrLf
   strTemp = strTemp & "}" & vbCrLf & vbCrLf

   CreateSetConnect = strTemp
End Function

'ftoa,dtoa函数
Private Function CreateFtoaDtoa(ByRef objTable As Table) As String
   Dim strTemp As String
   Dim strTableName As String
   Dim arrstrFieldTypeName() As String
   Dim arrstrHeadInfo() As String
   strTableName = objTable.Name

   arrstrFieldTypeName = GetAllTypeName(objTable, arrstrHeadInfo)

   'ftoa
   If StringInArr("float ", arrstrFieldTypeName) Then
      strTemp = "CString C" & strTableName & "::ftoa(float fData)" & vbCrLf
      strTemp = strTemp & "{" & vbCrLf
         strTemp = strTemp & Space(4) & "CString str;" & vbCrLf
         strTemp = strTemp & Space(4) & "str.Format(""%f"", fData);" & vbCrLf
         strTemp = strTemp & Space(4) & "return str;" & vbCrLf
      strTemp = strTemp & "}" & vbCrLf & vbCrLf
   End If

   'dtoa
   If StringInArr("double ", arrstrFieldTypeName) Then
      strTemp = strTemp & "CString C" & strTableName & "::dtoa(double dblData)" & vbCrLf
      strTemp = strTemp & "{" & vbCrLf
         strTemp = strTemp & Space(4) & "CString str;" & vbCrLf
         strTemp = strTemp & Space(4) & "str.Format(""%f"", dblData);" & vbCrLf
         strTemp = strTemp & Space(4) & "return str;" & vbCrLf
      strTemp = strTemp & "}" & vbCrLf & vbCrLf
   End If

   CreateFtoaDtoa = strTemp
End Function

'QAddNew函数
Private Function CreateQAddNew(ByVal vstrProjectName As String, _
                              ByRef objTable As Table) As String
   Dim strTemp As String
   Dim strTableName As String
   Dim strHeadInfo As String
   Dim strSymbol As String
   Dim arrstrFieldTypeName() As String, arrstrHeadInfo() As String
   Dim I As Long, lngCount As Long
   Dim strColummName As String

   strTableName = objTable.Name
   arrstrFieldTypeName = GetAllTypeName(objTable, arrstrHeadInfo, False)

   strTemp = strTemp & "BOOL C" & strTableName & "::QAddNew(const TYP" & UCase(strTableName) & " &udt" & strTableName & ")"
   strTemp = strTemp & "{" & vbCrLf
   If StringInArr("int ", arrstrFieldTypeName) Or _
      StringInArr("long ", arrstrFieldTypeName) Or _
      StringInArr("BOOL ", arrstrFieldTypeName) Then
         strTemp = strTemp & Space(4) & "char szBuffer[256];" & vbCrLf
   End If
   If StringInArr("COleDateTime ", arrstrFieldTypeName) Then
      strTemp = strTemp & Space(4) & "CString strSymbol;" & vbCrLf
      strTemp = strTemp & Space(4) & "strSymbol = (mintDatabaseType == enuDatabaseType_Access) ? ""#"" : ""'"";" & vbCrLf
   End If
   
   strTemp = strTemp & Space(4) & "mstrSQL = ""Insert Into "" + CString(m_lpszTableName) +" & vbCrLf
      strTemp = strTemp & Space(8) & """ ("
      lngCount = objTable.Columns.Count
      For I = 0 To lngCount - 1
         strColummName = objTable.Columns.Item(I).Name
         If strColummName <> mstrAutoIncrement Then
            If I = lngCount - 1 Then
               strTemp = strTemp & strColummName & ") "" +" & vbCrLf
            Else
               strTemp = strTemp & strColummName & ", "
               If I Mod 10 = 0 And I <> 0 Then
                  strTemp = strTemp & """ +" & vbCrLf & Space(8) & """"
               End If
            End If
         End If
      Next I
      strTemp = strTemp & Space(8) & """Values("
      For I = 0 To lngCount - 1
         strColummName = objTable.Columns.Item(I).Name
         If strColummName <> mstrAutoIncrement Then
            strHeadInfo = GetColumnTypeInfoHead(objTable.Columns.Item(I))
            Select Case strHeadInfo
               Case "dtm"
                  strTemp = strTemp & """ + strSymbol +" & vbCrLf & Space(12) & "udt" & strTableName & "." & strHeadInfo & strColummName & ".Format(""%Y-%m-%d %H:%M:%S"") + strSymbol + """
               Case "lpsz"
                  strTemp = strTemp & "'"" +" & vbCrLf & Space(12) & "CString(udt" & strTableName & "." & strHeadInfo & strColummName & ") + ""'"
               Case "str"
                  strTemp = strTemp & "'"" +" & vbCrLf & Space(12) & "udt" & strTableName & "." & strHeadInfo & strColummName & " + ""'"
               Case "lng"
                  strTemp = strTemp & """ +" & vbCrLf & Space(12) & "CString(ltoa(udt" & strTableName & "." & strHeadInfo & strColummName & ", szBuffer, 10)) + """
               Case "int", "byt", "bln"
                  strTemp = strTemp & """ +" & vbCrLf & Space(12) & "CString(itoa(udt" & strTableName & "." & strHeadInfo & strColummName & ", szBuffer, 10)) + """
               Case "flt"
                  strTemp = strTemp & """ +" & vbCrLf & Space(12) & "ftoa(udt" & strTableName & "." & strHeadInfo & strColummName & ") + """
               Case "dbl"
                  strTemp = strTemp & """ +" & vbCrLf & Space(12) & "dtoa(udt" & strTableName & "." & strHeadInfo & strColummName & ") + """
               Case Else '"var"
                  strTemp = strTemp & "'"" +" & vbCrLf & Space(12) & "CString(udt" & strTableName & "." & strHeadInfo & strColummName & ") + ""'"
            End Select
            If I = lngCount - 1 Then
               strTemp = strTemp & ")"";" & vbCrLf
            Else
               strTemp = strTemp & ","
            End If
         End If
      Next I
      strTemp = strTemp & Space(4) & "return QExecuteQuery(m_lpszDatabaseName, mstrSQL);" & vbCrLf
   strTemp = strTemp & "}" & vbCrLf & vbCrLf

   CreateQAddNew = strTemp
End Function

'QGetAll函数
Private Function CreateQGetAll(ByVal vstrProjectName As String, _
                              ByRef objTable As Table) As String

   Dim strTemp As String
   Dim strTableName As String
   strTableName = objTable.Name

   strTemp = "long C" & strTableName & "::QGetAll()" & vbCrLf
   strTemp = strTemp & "{" & vbCrLf
      strTemp = strTemp & Space(4) & "mlngRecordCount = -1;" & vbCrLf
      strTemp = strTemp & Space(4) & "mstrSQL = ""Select * From "" + CString(m_lpszTableName) + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
      strTemp = strTemp & Space(4) & "if (QOpenRecordSet(m_lpszDatabaseName, mstrSQL, mrst))" & vbCrLf
      strTemp = strTemp & Space(4) & "{" & vbCrLf
         strTemp = strTemp & Space(8) & "mstrSQL = ""QGetAll"";" & vbCrLf
         strTemp = strTemp & Space(8) & "mlngRecordCount = mrst->RecordCount;" & vbCrLf
      strTemp = strTemp & Space(4) & "}" & vbCrLf
      strTemp = strTemp & Space(4) & "return mlngRecordCount;" & vbCrLf
   strTemp = strTemp & "}" & vbCrLf & vbCrLf

   strTemp = strTemp & "long C" & strTableName & "::QGetAll(TYP" & UCase(strTableName) & " *parrudt" & strTableName & ")" & vbCrLf
   strTemp = strTemp & "{" & vbCrLf
      strTemp = strTemp & Space(4) & "if (mstrSQL != ""QGetAll"")" & vbCrLf
      strTemp = strTemp & Space(4) & "{" & vbCrLf

⌨️ 快捷键说明

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