📄 clsvccppfile.cls
字号:
strTemp = strTemp & Space(8) & "mlngRecordCount = QGetAll();" & vbCrLf
strTemp = strTemp & Space(4) & "}" & vbCrLf
strTemp = strTemp & Space(4) & "GetResult(parrudt" & strTableName & ");" & vbCrLf
strTemp = strTemp & Space(4) & "return mlngRecordCount;" & vbCrLf
strTemp = strTemp & "}" & vbCrLf & vbCrLf
CreateQGetAll = strTemp
End Function
'QGetBySN函数
Private Function CreateQGetBySN(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 & "::QGetBySN(const char *vstrSN, TYP" & UCase(strTableName) & " &rudt" & strTableName & ")" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "mlngRecordCount = -1;" & vbCrLf
strTemp = strTemp & Space(4) & "mstrSQL = ""Select * From "" + CString(m_lpszTableName) +" & vbCrLf
strTemp = strTemp & Space(12) & """ Where " & strTableName & "SN='"" + CString(vstrSN) + ""' 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) & "mlngRecordCount = mrst->RecordCount;" & vbCrLf
strTemp = strTemp & Space(4) & "}" & vbCrLf
strTemp = strTemp & Space(4) & "if (mlngRecordCount > 0)" & vbCrLf
strTemp = strTemp & Space(4) & "{" & vbCrLf
strTemp = strTemp & Space(8) & "QMoveFirst(rudt" & strTableName & ");" & vbCrLf
strTemp = strTemp & Space(4) & "}" & vbCrLf
strTemp = strTemp & Space(4) & "return mlngRecordCount;" & vbCrLf
strTemp = strTemp & "}" & vbCrLf & vbCrLf
CreateQGetBySN = strTemp
End Function
'QGetByField 函数
Private Function CreateQGetByField(ByVal vstrProjectName As String, _
ByRef objTable As Table) As String
Dim strTemp As String
Dim strSQL As String
Dim strTableName As String
Dim arrstrFieldTypeName() As String
Dim arrstrHeadInfo() As String
Dim I As Long, lngCount As Long
strTableName = objTable.Name
arrstrFieldTypeName = GetAllTypeName(objTable, arrstrHeadInfo)
lngCount = GetArrElementNb(arrstrFieldTypeName)
strTemp = ""
For I = 0 To lngCount - 1
strTemp = strTemp & "long C" & strTableName & "::QGetByField(const char *lpszFieldName, " & arrstrFieldTypeName(I) & arrstrHeadInfo(I) & "FieldValue)" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
If arrstrFieldTypeName(I) = "int " Or _
arrstrFieldTypeName(I) = "long " Or _
arrstrFieldTypeName(I) = "BOOL " 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) & "mlngRecordCount = -1;" & vbCrLf
strSQL = "strSQL = ""Select * From "" + CString(m_lpszTableName) +" & vbCrLf
Select Case RTrim(arrstrFieldTypeName(I))
Case "const char *"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""='"" + CString(" & arrstrHeadInfo(I) & "FieldValue) + ""' Order By " & strTableName & "ID ASC"";" & vbCrLf
Case "COleDateTime"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""="" + strSymbol + " & arrstrHeadInfo(I) & "FieldValue.Format(""%Y-%m-%d %H:%M:%S"") + strSymbol + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
Case "int"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""="" + CString(itoa(" & arrstrHeadInfo(I) & "FieldValue, szBuffer, 10)) + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
Case "long"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""="" + CString(ltoa(" & arrstrHeadInfo(I) & "FieldValue, szBuffer, 10)) + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
Case "float"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""="" + ftoa(" & arrstrHeadInfo(I) & "FieldValue) + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
Case "double"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""="" + dtoa(" & arrstrHeadInfo(I) & "FieldValue) + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
Case "BOOL"
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""="" + CString(itoa(" & arrstrHeadInfo(I) & "FieldValue, szBuffer, 10)) + "" Order By " & strTableName & "ID ASC"";" & vbCrLf
Case Else
strSQL = strSQL & Space(12) & """ Where "" + CString(lpszFieldName) + ""='"" + CString(" & arrstrHeadInfo(I) & "FieldValue) + ""' Order By " & strTableName & "ID ASC"";" & vbCrLf
End Select
strTemp = strTemp & Space(4) & "m" & strSQL
strTemp = strTemp & Space(4) & "if (QOpenRecordSet(m_lpszDatabaseName, mstrSQL, mrst))" & vbCrLf
strTemp = strTemp & Space(4) & "{" & 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 & "::QGetByField(const char *lpszFieldName, " & arrstrFieldTypeName(I) & arrstrHeadInfo(I) & "FieldValue, TYP" & UCase(strTableName) & " *parrudt" & strTableName & ")" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "CString strSQL;" & vbCrLf
If arrstrFieldTypeName(I) = "int " Or _
arrstrFieldTypeName(I) = "long " 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) & strSQL
strTemp = strTemp & Space(4) & "if (mstrSQL != strSQL)" & vbCrLf
strTemp = strTemp & Space(4) & "{" & vbCrLf
strTemp = strTemp & Space(8) & "mlngRecordCount = QGetByField(lpszFieldName, " & arrstrHeadInfo(I) & "FieldValue);" & vbCrLf
strTemp = strTemp & Space(4) & "}" & vbCrLf
strTemp = strTemp & Space(4) & "GetResult(parrudt" & strTableName & ");" & vbCrLf
strTemp = strTemp & Space(4) & "return mlngRecordCount;" & vbCrLf
strTemp = strTemp & "}" & vbCrLf & vbCrLf
Next I
CreateQGetByField = strTemp
End Function
'QGetBySQL 函数
Private Function CreateQGetBySQL(ByVal vstrProjectName As String, _
ByRef objTable As Table) As String
Dim strTemp As String
Dim strTableName As String
Dim arrstrFieldTypeName() As String
Dim I As Long, lngCount As Long
strTableName = objTable.Name
strTemp = "long C" & strTableName & "::QGetBySQL(const char *lpszSQL)" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "mlngRecordCount = -1;" & vbCrLf
strTemp = strTemp & Space(4) & "if (QOpenRecordSet(m_lpszDatabaseName, lpszSQL, mrst))" & vbCrLf
strTemp = strTemp & Space(4) & "{" & vbCrLf
strTemp = strTemp & Space(8) & "mstrSQL = lpszSQL;" & 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 & "::QGetBySQL(const char *lpszSQL, TYP" & UCase(strTableName) & " *parrudt" & strTableName & ")" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "if (mstrSQL != lpszSQL)" & vbCrLf
strTemp = strTemp & Space(4) & "{" & vbCrLf
strTemp = strTemp & Space(8) & "mlngRecordCount = QGetBySQL(lpszSQL);" & vbCrLf
strTemp = strTemp & Space(4) & "}" & vbCrLf
strTemp = strTemp & Space(4) & "GetResult(parrudt" & strTableName & ");" & vbCrLf
strTemp = strTemp & Space(4) & "return mlngRecordCount;" & vbCrLf
strTemp = strTemp & "}" & vbCrLf & vbCrLf
CreateQGetBySQL = strTemp
End Function
'QGetByWhere 函数
Private Function CreateQGetByWhere(ByVal vstrProjectName As String, _
ByRef objTable As Table) As String
Dim strTemp As String
Dim strSQL As String
Dim strTableName As String
Dim arrstrFieldTypeName() As String
Dim I As Long, lngCount As Long
strTableName = objTable.Name
strTemp = "long C" & strTableName & "::QGetByWhere(const char *lpszWhere)" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "mlngRecordCount = -1;" & vbCrLf
strSQL = "strSQL = ""Select * From "" + CString(m_lpszTableName) + " & """ """ & " + CString(lpszWhere);" & vbCrLf
strTemp = strTemp & Space(4) & "m" & strSQL
strTemp = strTemp & Space(4) & "if (QOpenRecordSet(m_lpszDatabaseName, mstrSQL, mrst))" & vbCrLf
strTemp = strTemp & Space(4) & "{" & 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 & "::QGetByWhere(const char *lpszWhere, TYP" & UCase(strTableName) & " *parrudt" & strTableName & ")" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "CString strSQL;" & vbCrLf
strTemp = strTemp & Space(4) & strSQL
strTemp = strTemp & Space(4) & "if (mstrSQL != strSQL)" & vbCrLf
strTemp = strTemp & Space(4) & "{" & vbCrLf
strTemp = strTemp & Space(8) & "mlngRecordCount = QGetByWhere(lpszWhere);" & vbCrLf
strTemp = strTemp & Space(4) & "}" & vbCrLf
strTemp = strTemp & Space(4) & "GetResult(parrudt" & strTableName & ");" & vbCrLf
strTemp = strTemp & Space(4) & "return mlngRecordCount;" & vbCrLf
strTemp = strTemp & "}" & vbCrLf & vbCrLf
CreateQGetByWhere = strTemp
End Function
'GetUpdateString 函数
Private Function CreateGetUpdateString(ByVal vstrProjectName As String, _
ByRef objTable As Table) As String
Dim strTemp As String
Dim strTableName As String
Dim I As Long, lngCount As Long
Dim arrstrFieldTypeName() As String
Dim arrstrHeadInfo() As String
Dim strColumnName As String
Dim strTempSQL As String
Dim strHeadInfo As String
strTableName = objTable.Name
arrstrFieldTypeName = GetAllTypeName(objTable, arrstrHeadInfo, False)
strTemp = "CString C" & strTableName & "::GetUpdateString(const TYP" & UCase(strTableName) & " &udt" & strTableName & ")" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "CString strSQL;" & 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
' mstrAutoIncrement = GetPrimaryKey(objTable)
strTempSQL = strTempSQL & Space(4) & "strSQL = ""Update "" + CString(m_lpszTableName) + "" Set "" +" & 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"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "="" + strSymbol + udt" & strTableName & "." & strHeadInfo & strColumnName & ".Format(""%Y-%m-%d %H:%M:%S"") + strSymbol + """
Case "lpsz"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "='"" + CString(udt" & strTableName & "." & strHeadInfo & strColumnName & ") + ""'"
Case "str"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "='"" + udt" & strTableName & "." & strHeadInfo & strColumnName & " + ""'"
Case "lng"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "="" + CString(ltoa(udt" & strTableName & "." & strHeadInfo & strColumnName & ", szBuffer, 10)) + """
Case "int", "byt", "bln"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "="" + CString(itoa(udt" & strTableName & "." & strHeadInfo & strColumnName & ", szBuffer, 10)) + """
Case "flt"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "="" + ftoa(udt" & strTableName & "." & strHeadInfo & strColumnName & ") + """
Case "dbl"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "="" + dtoa(udt" & strTableName & "." & strHeadInfo & strColumnName & ") + """
' Case "cur"
Case Else '"var"
strTempSQL = strTempSQL & Space(12) & """" & strColumnName & "='"" + CString(udt" & strTableName & "." & strHeadInfo & strColumnName & ") + ""'"
End Select
If I = lngCount - 1 Then
strTempSQL = strTempSQL & """;"
Else
strTempSQL = strTempSQL & ","" +"
End If
strTempSQL = strTempSQL & vbCrLf
End If
Next I
strTemp = strTemp & strTempSQL
strTemp = strTemp & Space(4) & "return strSQL;" & vbCrLf
strTemp = strTemp & "}" & vbCrLf & vbCrLf
CreateGetUpdateString = strTemp
End Function
'QUpdateBySN 函数
Private Function CreateQUpdateBySN(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 & "::QUpdateBySN(const char *vstrSN, const TYP" & UCase(strTableName) & " &udt" & strTableName & ")" & vbCrLf
strTemp = strTemp & "{" & vbCrLf
strTemp = strTemp & Space(4) & "mstrSQL = GetUpdateString(udt" & strTableName & ") +" & vbCrLf
strTemp = strTemp & Space(8) & """ Where " & strTableName & "SN='"" + CString(udt" & strTableName & ".str" & strTableName & "SN) + ""'"";" & vbCrLf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -