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

📄 tableset.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 3 页
字号:
                mvarTailWidth(intCount) = !lngFieldWidth
                mvarTailHeight(intCount) = !lngFieldHeight
                mvarTailLeft(intCount) = !lngFieldLeft
                mvarTailTop(intCount) = !lngFieldTop
                mvarTailAlign(intCount) = IIf(IsNull(!intAlign), 9, !intAlign)
                .MoveNext
           Next
      End If
   End With
   '取保报表标题属性
   strSql = "SELECT * FROM ReportHeadTail WHERE lngReportID=" _
            & mvarReportID & " AND bytFieldType=3"
   Set rstReport = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    With rstReport
       If Not .EOF Then
           mvarTitleWidth = !lngFieldWidth
           mvarTitleHeight = !lngFieldHeight
           mvarTitleLeft = !lngFieldLeft
           mvarTitleTop = !lngFieldTop
           mvarTitleAlign = IIf(IsNull(!intAlign), 9, !intAlign)
      End If
   End With
   Set rstReport = Nothing
End Sub
'得到SQL语句
Public Function GetSQLPre() As String
    GetSQLPre = GetSelect & Space(1) & mvarFrom
End Function

Private Function GetSelect() As String
Dim intCount As Integer
    intCount = 0
    mstrSelect = ""
    Do While intCount < Columns
       If mstrSelect = "" Then
            mstrSelect = mvarColumnFieldName(intCount) & " As """ & mvarColumnDesc(intCount) & """"
       Else
            mstrSelect = mstrSelect & "," & mvarColumnFieldName(intCount) & " As """ & mvarColumnDesc(intCount) & """"
       End If
       intCount = intCount + 1
    Loop
    Select Case mvarViewID
    Case 134, 135, 136, 137, 322, 324, 327, 328, 329, 330, 331, 332
         GetSelect = "SELECT " & mstrSelect
    Case Else
        GetSelect = "SELECT DISTINCT " & mstrSelect
    End Select
End Function
Private Function GetFrom() As String
    GetFrom = mvarFrom
End Function
'得到条件子句
Private Function GetWhere() As String
    mstrWhere = Filter.GetInitWhere(ReportID, 2)
    If mstrWhere = "" Then
     GetWhere = ""
    Else
     GetWhere = " WHERE " & mstrWhere
    End If
End Function

'保存类到数据库
Public Function SaveTable(Optional blnSaveAs As Boolean = False) As Boolean
Dim blnOK As Boolean
    If blnSaveAs Then
        AddReport blnOK
        mvarReportPrep = 2
    Else
        EditUpdate blnOK
    End If
    SaveTable = blnOK
End Function
'按用户ID重新保存一份标准表
Private Sub AddReport(blnOK As Boolean)
  Dim rstReport As rdoResultset
  Dim strSql As String
  Dim lngReportID As Long
   
    On Error GoTo ErrHandle
    '关闭触发器
    strSql = "Alter Table report Disable All Triggers "
    gclsBase.BaseDB.Execute (strSql)
    lngReportID = GetNewID("Report")
    '复制
    strSql = "Select * from Report"
    Set rstReport = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurValues)
    With rstReport
       .AddNew
          !lngViewId = mvarViewID
          !bytGroup = mvarGroupNo
          !strReportName = mvarReportName
          !lngOperatorID = gclsBase.OperatorID
          !strDate = "0"
          !bytPrep = 2
          !bytWizard = 5
          !lngParentId = mvarParentID
          !intLevel = mvarLevel + 1
          !strDate = Format(Date, "YYYY-MM-DD")
          !blnIsDetail = 1
          !lngReportID = lngReportID
       .Update
    End With
    
    '打开触发器
    strSql = "Alter Table report Enable All Triggers"
    gclsBase.BaseDB.Execute (strSql)
    
    Set rstReport = Nothing
    mvarReportID = lngReportID
    CopyReportField lngReportID, blnOK
    If blnOK Then
        EditUpdate blnOK
    End If
    Exit Sub
ErrHandle:
    blnOK = False
End Sub

'复制所有报表字段
Private Sub CopyReportField(ByVal lngReportID As Long, blnOK As Boolean)
  Dim strSql As String
  Dim rstSource As rdoResultset, rstDesc As rdoResultset
  Dim fldReportField As rdoColumn
     
     On Error GoTo ErrHandle
     strSql = "Select * from ReportField Where lngReportId=" & mvarReportID
     Set rstSource = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
     
     strSql = "Select * from ReportField Where lngReportId=" & lngReportID
     Set rstDesc = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurValues)
     
     With rstSource
         Do While Not .EOF
            rstDesc.AddNew
            For Each fldReportField In .rdoColumns
                If UCase(fldReportField.Name) = UCase("lngReportId") Then
                    rstDesc!lngReportID = lngReportID
                Else
                     If UCase(fldReportField.Name) <> UCase("lngReportFieldId") Then
                         rstDesc.rdoColumns(fldReportField.Name).Value = fldReportField.Value
                     End If
                End If
            Next
            rstDesc.Update
            .MoveNext
         Loop
     End With
    blnOK = True
    Exit Sub
ErrHandle:
    blnOK = False
End Sub

'更新用户自定义标准表的修改
Private Sub EditUpdate(blnOK As Boolean)
  Dim strSql As String
  Dim intCount As Integer
  Dim rstTemp As rdoResultset
  
  On Error GoTo ErrHandle
  '更新报表
  strSql = "UPDATE Report Set " & _
              "strReportName='" & mvarReportName & "',bytVersion=" & mvarVersion & _
              ",intGridTop=" & mvarGridTop & ",strDate='" & Format(Date, "YYYY-MM-DD") & _
                "' WHERE lngReportID =" & mvarReportID
  gclsBase.ExecSQL strSql
    
  '初始化报表字段
  strSql = "UPDATE ReportField Set blnIsChoosed=0 " & _
            ",lngReportFieldNO=0  WHERE lngReportID =" & mvarReportID
  gclsBase.ExecSQL strSql
  
  '更新报表字段
  For intCount = 0 To mvarColumns - 1
      strSql = "UPDATE ReportField Set strReportFieldDesc='" & mvarColumnDesc(intCount) _
                        & "',lngReportFieldNO=" & intCount + 1 & ",lngDisplayWidth=" _
                        & mvarColumnWidth(intCount) & ",blnIsChoosed=1" _
                        & " Where lngReportId= " & mvarReportID _
                        & " And lngViewFieldId=" & mvarColumnID(intCount)
      gclsBase.ExecSQL strSql
  Next intCount
  '删除报表表头表尾栏目
  strSql = "SELECT * FROM ReportHeadTail WHERE lngReportID = " & mvarReportID
  Set rstTemp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
  If rstTemp.EOF = False Then
      strSql = "DELETE * FROM ReportHeadTail WHERE lngReportID = " & mvarReportID
      gclsBase.ExecSQL strSql
  End If
  '关闭触发器
    strSql = "Alter Table ReportHeadTail Disable All Triggers "
    gclsBase.BaseDB.Execute (strSql)
  '添加报表表头表尾栏目
  Set rstTemp = gclsBase.BaseDB.OpenResultset("SELECT * FROM ReportHeadTail", rdOpenDynamic, rdConcurValues)
  With rstTemp
        If .EOF = False Then .MoveLast
        '加报表标题属性
            .AddNew
            !lngReportID = mvarReportID
            !strFieldDesc = mvarReportName
            !bytFieldType = 3
            !lngFieldWidth = mvarTitleWidth
            !lngFieldHeight = mvarTitleHeight
            !lngFieldLeft = mvarTitleLeft
            !lngFieldTop = mvarTitleTop
            !intAlign = mvarTitleAlign
            .Update
            .MoveLast
        '加报表表头栏目
        For intCount = 0 To mvarHeadColumns - 1
            .AddNew
            !lngReportID = mvarReportID
            !strFieldDesc = mvarHeadDesc(intCount)
            !bytFieldType = 1
            !intFieldNO = intCount + 1
            !intFuncIndex = mvarHeadFuncIndex(intCount)
            !lngFieldWidth = mvarHeadWidth(intCount)
            !lngFieldHeight = mvarHeadHeight(intCount)
            !lngFieldLeft = mvarHeadLeft(intCount)
            !lngFieldTop = mvarHeadTop(intCount)
            !intAlign = mvarHeadAlign(intCount)
            .Update
            .MoveLast
        Next intCount
        '加报表表尾栏目
        For intCount = 0 To mvarTailColumns - 1
            .AddNew
            !lngReportID = mvarReportID
            !strFieldDesc = mvarTailDesc(intCount)
            !bytFieldType = 2
            !intFieldNO = intCount + 1
            !intFuncIndex = mvarTailFuncIndex(intCount)
            !lngFieldWidth = mvarTailWidth(intCount)
            !lngFieldHeight = mvarTailHeight(intCount)
            !lngFieldLeft = mvarTailLeft(intCount)
            !lngFieldTop = mvarTailTop(intCount)
            !intAlign = mvarTailAlign(intCount)
            .Update
            .MoveLast
        Next intCount
   End With
   '打开触发器
    strSql = "Alter Table ReportHeadTail Enable All Triggers"
    gclsBase.BaseDB.Execute (strSql)
    Set rstTemp = Nothing
    blnOK = True
    Exit Sub
ErrHandle:
    blnOK = False
    '打开触发器
    strSql = "Alter Table ReportHeadTail Enable All Triggers"
    gclsBase.BaseDB.Execute (strSql)
End Sub
'显示向导窗口
Public Function ShowWizard(Optional ByVal lngReportID As Long, Optional lngParentId As Long, _
       Optional intParentLevel As Integer, Optional clsWizardFormCond As FormCond, _
       Optional blnIsNew As Boolean = True) As Boolean
   Dim clsFormCond As FormCond
   '准备工作
    If mvarReportID = 0 Then
        GetReportSet lngReportID
    End If
    If mvarParentID = 0 Then
        ParentId = lngParentId
        Level = intParentLevel
    End If
    If clsWizardFormCond Is Nothing Then
        Set clsFormCond = New FormCond
    Else
        Set clsFormCond = clsWizardFormCond
    End If
    '显示向导窗口
    ShowWizard = frmTable.SetTable(Me, clsFormCond)

    If ShowWizard = True Then
       '由向导新生成了一张帐表(还未存到数据库)
       If blnIsNew Then
            Report.ShowListReport 0, 0, Me, clsFormCond
       End If
    End If
End Function

Private Sub Class_Terminate()
    Erase mvarColumnID()
    Erase mvarColumnDesc()
    Erase mvarColumnWidth()
    Erase mvarColumnFieldName()
    Erase mvarColumnFieldType()
    
    Erase mvarHeadDesc()
    Erase mvarHeadFuncIndex()
    Erase mvarHeadWidth()
    Erase mvarHeadHeight()
    Erase mvarHeadLeft()
    Erase mvarHeadTop()
    Erase mvarHeadAlign()
    
    Erase mvarTailDesc()
    Erase mvarTailFuncIndex()
    Erase mvarTailWidth()
    Erase mvarTailHeight()
    Erase mvarTailLeft()
    Erase mvarTailTop()
    Erase mvarTailAlign()
End Sub




⌨️ 快捷键说明

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