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

📄 clsvccppfile.cls

📁 VB代码生成器
💻 CLS
📖 第 1 页 / 共 4 页
字号:
   Dim strTemp As String
   Dim strTableName As String
   Dim strFuncName As String
   Dim I As Long
   strTableName = objTable.Name

   strTemp = ""
   For I = 0 To 4
      Select Case I
         Case 0
            strFuncName = "First"
         Case 1
            strFuncName = "Last"
         Case 2
            strFuncName = "Next"
         Case 3
            strFuncName = "Previous"
         Case 4
            strFuncName = "To"
      End Select
      If I = 4 Then
         strTemp = strTemp & "BOOL C" & strTableName & "::QMove" & strFuncName & "(long vlngNumRecords, long vlngStart, TYP" & UCase(strTableName) & " &rudt" & strTableName & ")" & vbCrLf
      Else
         strTemp = strTemp & "BOOL C" & strTableName & "::QMove" & strFuncName & "(TYP" & UCase(strTableName) & " &rudt" & strTableName & ")" & vbCrLf
      End If
      strTemp = strTemp & "{" & vbCrLf
         strTemp = strTemp & Space(4) & "try" & vbCrLf
         strTemp = strTemp & Space(4) & "{" & vbCrLf
         If I = 4 Then
            strTemp = strTemp & Space(8) & "mrst->Move(vlngNumRecords, vlngStart);" & vbCrLf
         Else
            strTemp = strTemp & Space(8) & "mrst->Move" & strFuncName & "();" & vbCrLf
         End If
            strTemp = strTemp & Space(8) & "rudt" & strTableName & " = GetResult();" & vbCrLf
            strTemp = strTemp & Space(8) & "return TRUE;" & vbCrLf
         strTemp = strTemp & Space(4) & "}" & vbCrLf
         strTemp = strTemp & Space(4) & "catch (...)" & vbCrLf
         strTemp = strTemp & Space(4) & "{" & vbCrLf
            strTemp = strTemp & Space(8) & "return FALSE;" & vbCrLf
         strTemp = strTemp & Space(4) & "}" & vbCrLf
      strTemp = strTemp & "}" & vbCrLf & vbCrLf
   Next I

   CreateQMove = strTemp
End Function
'
'GetFindSQL 函数
Private Function CreateGetFindSQL(ByRef objTable As Table) As String
   Dim strTemp As String
   Dim strTableName As String
   Dim arrstrFieldTypeName() As String, arrstrHeadInfo() As String
   Dim I As Long, lngCount As Long
   Dim blnBufferDefine As Boolean
   Dim strHeadInfo As String, strColumnName As String

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

   strTemp = "char *C" & strTableName & "::GetFindSQL(const TYP" & UCase(strTableName) & " &udt" & strTableName & ")" & vbCrLf
   strTemp = strTemp & "{" & vbCrLf

      If StringInArr("COleDateTime ", arrstrFieldTypeName) Then
         strTemp = strTemp & Space(4) & "COleDateTime dtm(1900, 5, 8, 0, 0, 0);" & vbCrLf
         strTemp = strTemp & Space(4) & "CString strSymbol;" & vbCrLf
         strTemp = strTemp & Space(4) & "strSymbol = (mintDatabaseType == enuDatabaseType_Access) ? ""#"" : ""'"";" & vbCrLf
      End If

      If StringInArr("int ", arrstrFieldTypeName) Or _
         StringInArr("long ", arrstrFieldTypeName) Or _
         StringInArr("BOOL ", arrstrFieldTypeName) Then
            strTemp = strTemp & Space(4) & "char szBuffer[256];" & vbCrLf
      End If

      strTemp = strTemp & Space(4) & "mstrSQL = ""Select * From EvectionManager Where 1=1"";" & vbCrLf

      lngCount = objTable.Columns.Count
      For I = 0 To lngCount - 1
         strColumnName = objTable.Columns.Item(I).Name
         If strColumnName <> mstrAutoIncrement Then

            strHeadInfo = GetColumnTypeInfoHead(objTable.Columns.Item(I))
            Select Case strHeadInfo
               Case "dtm"
                  strTemp = strTemp & Space(4) & "if (udt" & strTableName & ".dtm" & strColumnName & " > dtm)" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " >= "" + strSymbol + udt" & strTableName & ".dtm" & strColumnName & ".Format(""%Y-%m-%d 00:00:00"") + strSymbol;" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " <= "" + strSymbol + udt" & strTableName & ".dtm" & strColumnName & ".Format(""%Y-%m-%d 23:59:59"") + strSymbol;" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf

               Case "lpsz"
                  strTemp = strTemp & Space(4) & "if (strlen(udt" & strTableName & ".lpsz" & strColumnName & ") > 0)" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " Like '%"" + CString(udt" & strTableName & ".lpsz" & strColumnName & ") + ""%'"";" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf

               Case "str"
                  strTemp = strTemp & Space(4) & "if (strlen(udt" & strTableName & ".str" & strColumnName & ") > 0)" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " Like '%"" + udt" & strTableName & ".str" & strColumnName & " + ""%'"";" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf

               Case "lng"
                  strTemp = strTemp & Space(4) & "if (udt" & strTableName & ".lng" & strColumnName & " != NULL_INT)" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " = "" + CString(ltoa(udt" & strTableName & ".lng" & strColumnName & ", szBuffer, 10));" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf
               Case "int", "byt", "bln"
                  strTemp = strTemp & Space(4) & "if (udt" & strTableName & "." & strHeadInfo & strColumnName & " != NULL_INT)" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " = "" + CString(itoa(udt" & strTableName & "." & strHeadInfo & strColumnName & ", szBuffer, 10));" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf
               Case "flt"
                  strTemp = strTemp & Space(4) & "if ((udt" & strTableName & ".flt" & strColumnName & " > NULL_INT - NULL_FLOAT_EPSINON) && (udt" & strTableName & ".flt" & strColumnName & " < NULL_INT + NULL_FLOAT_EPSINON))" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " = "" + ftoa(udt" & strTableName & ".flt" & strColumnName & ");" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf

               Case "dbl"
                  strTemp = strTemp & Space(4) & "if ((udt" & strTableName & ".dbl" & strColumnName & " > NULL_INT - NULL_FLOAT_EPSINON) && (udt" & strTableName & ".dbl" & strColumnName & " < NULL_INT + NULL_FLOAT_EPSINON))" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " = "" + dtoa(udt" & strTableName & ".dbl" & strColumnName & ");" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf

'                     Case "cur"
               Case Else '"var"
                  strTemp = strTemp & Space(4) & "if (strlen(udt" & strTableName & ".lpsz" & strColumnName & ") > 0)" & vbCrLf
                  strTemp = strTemp & Space(4) & "{" & vbCrLf
                     strTemp = strTemp & Space(8) & "mstrSQL += "" And " & strColumnName & " Like '%"" + CString(udt" & strTableName & ".lpsz" & strColumnName & ") + ""%'"";" & vbCrLf
                  strTemp = strTemp & Space(4) & "}" & vbCrLf

            End Select
         End If
      Next

      strTemp = strTemp & Space(4) & "//mstrSQL += "" Order By " & strTableName & "ID ASC"";" & vbCrLf
      strTemp = strTemp & Space(4) & "return mstrSQL.GetBuffer(mstrSQL.GetLength());" & vbCrLf
   strTemp = strTemp & "}"

   CreateGetFindSQL = strTemp
End Function

Private Function GetAllTypeName(objTable As Table, _
   ByRef rarrstrHeadInfo() As String, _
   Optional ByVal vblnIncludeAutoIncrement As Boolean = True) As String()
   
   Dim arrstrTableTypeName() As String
   Dim I As Long, lngCount As Long, J As Long, K As Long
   Dim strType As String
   Dim blnIsExist As Boolean

   lngCount = objTable.Columns.Count
   ReDim arrstrTableTypeName(lngCount - 1)
   ReDim rarrstrHeadInfo(lngCount - 1)

   K = 0
   For I = 0 To lngCount - 1
      If Not vblnIncludeAutoIncrement And mstrAutoIncrement = objTable.Columns.Item(I).Name Then
         GoTo NextI
      End If
      
      strType = GetColumnTypeInfo(objTable.Columns.Item(I))
      If strType = "BOOL " Then
         strType = "int "
      End If

      blnIsExist = False
      For J = 0 To K
         If arrstrTableTypeName(J) = strType Then
            blnIsExist = True
            Exit For
         End If
      Next J

      If Not blnIsExist Then
         arrstrTableTypeName(K) = strType
         Select Case RTrim(strType)
            Case "char *", "const char *"
               rarrstrHeadInfo(K) = "lpsz"
            Case "BOOL", "bool"
               rarrstrHeadInfo(K) = "bln"
            Case "int"
               rarrstrHeadInfo(K) = "int"
            Case "long"
               rarrstrHeadInfo(K) = "lng"
            Case "COleDateTime"
               rarrstrHeadInfo(K) = "dtm"
            Case "double"
               rarrstrHeadInfo(K) = "dbl"
            Case "float"
               rarrstrHeadInfo(K) = "flt"
            Case "CString"
               rarrstrHeadInfo(K) = "str"
            Case Else
               rarrstrHeadInfo(K) = "str"
         End Select

         K = K + 1
      End If
NextI:
   Next I
   ReDim Preserve arrstrTableTypeName(K - 1)
   ReDim Preserve rarrstrHeadInfo(K - 1)

   GetAllTypeName = arrstrTableTypeName
End Function

Private Function StringInArr(ByVal lpsz As String, arrstr() As String) As Boolean
   Dim I As Long, lngCount As Long
   Dim blnInArr As Boolean

   blnInArr = False
   lngCount = GetArrElementNb(arrstr)
   For I = 0 To lngCount - 1
      If Trim(lpsz) = Trim(arrstr(I)) Then
         blnInArr = True
         Exit For
      End If
   Next I
   StringInArr = blnInArr
End Function

Private Function GetColumnTypeInfo(ColumnTemp As Column, Optional ByVal vblnIsType As Boolean = False) As String

   Dim strColumnTypeInfo As String

   Select Case ColumnTemp.Type
      Case adDate, adDBDate, adDBTime, adDBTimeStamp
         strColumnTypeInfo = "COleDateTime "
      Case adDouble
         strColumnTypeInfo = "double "
      Case adInteger, adUnsignedTinyInt, adSmallInt
         strColumnTypeInfo = "int "
      Case adSingle
         strColumnTypeInfo = "float "
      Case adBoolean
         strColumnTypeInfo = "BOOL "
      Case adUnsignedTinyInt
         strColumnTypeInfo = "int "
      Case Else 'adChar, adVarChar, adLongVarChar, adWChar, adVarWChar, adLongVarWChar, adCurrency
         If vblnIsType Then
            strColumnTypeInfo = "CString"
         Else
            strColumnTypeInfo = "const char *"
         End If
   End Select
   
   GetColumnTypeInfo = strColumnTypeInfo
End Function

Private Function GetColumnTypeInfoHead(ColumnTemp As Column) As String
   Dim strColumnTypeInfo As String

   Select Case ColumnTemp.Type
      Case adDate, adDBDate, adDBTime, adDBTimeStamp
         strColumnTypeInfo = "dtm"
      Case adDouble
         strColumnTypeInfo = "dbl"
      Case adInteger, adSmallInt, adUnsignedTinyInt
         strColumnTypeInfo = "int"
      Case adSingle
         strColumnTypeInfo = "flt"
      Case adBoolean
         strColumnTypeInfo = "bln"
      Case Else 'adChar, adVarChar, adLongVarChar, adWChar, adVarWChar, adLongVarWChar, adCurrency
         strColumnTypeInfo = "str"
   End Select

   GetColumnTypeInfoHead = strColumnTypeInfo
End Function

⌨️ 快捷键说明

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