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

📄 multireportset.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 3 页
字号:
  'Del Old SubColumn
  strSql = "Delete ReportMultiColumn WHERE lngReportID =" & mvarReportID
    
  gclsBase.ExecSQL strSql
  
  'Save Now Choosed Field
  strSql = "Select * from ReportMultiColumn where lngReportID=-1"
  Set rstSub = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurValues)
  For intCount = 1 To mvarSubColumns
    'Add List
    With rstSub
       .AddNew
          !lngReportID = ReportID
          !lngReportMultiNO = intCount
          !strReportFieldDesc = mvarSubDesc(intCount)
          !strMultiCond = mvarSubCond(intCount)
          !strMultiCode = mvarSubCode(intCount)
          !blnIsAmount = IIf(mvarSubData(intCount) And 1 <> 0, 1, 0)
          !blnIsQuantity = IIf((mvarSubData(intCount) And 2) <> 0, 1, 0)
          !blnIsCurrency = IIf((mvarSubData(intCount) And 4) <> 0, 1, 0)
          !lngAmountWidth = mvarSubAmountWidth(intCount)
          !lngQuantityWidth = mvarSubQuantityWidth(intCount)
          !lngCurrencyWidth = mvarSubCurrencyWidth(intCount)
          !intDirect = mvarSubDirect(intCount)
          !strContent = mvarContent
          !lngReportMultiID = BillPublic.GetNewID("ReportMultiColumn")
       .Update
    End With
  Next intCount
End Sub

'套打纸GridTop
Public Function GetGridTop()
  Dim strSql As String
  Dim rstTop As rdoResultset
    strSql = "Select lngGridTop From ReportPaper Where lngPaperID=" & mlngPaperID
    Set rstTop = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    With rstTop
       If Not .EOF Then
          GetGridTop = !lngGridTop
          mvarGridTop = !lngGridTop
       End If
    End With
End Function

'取当前帐表套打设置
Public Function GetReportTdSet() As String
   Dim rstChoosed As rdoResultset
   Dim strSql As String
   Dim strCond As String, strOrder As String, strCondVersion As String
   Dim intCount As Integer, lngWidth As Long
   Dim bytVersion As Byte
   
   strCondVersion = " And Mod(ViewField.bytVersion," & gVersionType * 2 & ")>=" & gVersionType
   
   strSql = "Select * from ViewField,Report,ReportField,ReportOnlyData Where ViewField.lngViewFieldID=ReportField.lngViewFieldID And ViewField.lngViewFieldID=ReportOnlyData.lngViewFieldID " & _
            "And Report.lngReportID=ReportField.lngReportID And Report.lngReportID=" & mvarReportID & _
             strCondVersion & " And ReportOnlyData.lngPaperID=" & mlngPaperID
   strOrder = " Order By lngOrder"
   Set rstChoosed = gclsBase.BaseDB.OpenResultset(strSql & strOrder, rdOpenStatic)
   With rstChoosed
       If .EOF Then
          GetReportTdSet = ""
          Exit Function
       End If
       .MoveLast
       .MoveFirst
       
       Columns = .RowCount

       mvarFixColumns = 0
       mvarGridTop = !intGridTop
       mintDirect = !intDirection
       Select Case mvarViewID
           Case 2, 4, 360
              mintDirect = 1
           Case 359
              mintDirect = -1
       End Select
       For intCount = 1 To .RowCount
            mvarColumnDesc(intCount) = !strReportFieldDesc
            'mbytFormat(intCount) = IIf(IsNull(!bytFormat), 0, !bytFormat)
            'mbytFomular(intCount) = IIf(IsNull(!bytFormula), 0, !bytFormula)
            mvarColumnFieldName(intCount) = IIf(IsNull(!strFieldName), "", !strFieldName)
            
            lngWidth = !lngWidth

            mvarColumnWidth(intCount) = lngWidth
            
            mvarColumnOrderType(intCount) = !bytsort
            mvarColumnIsFix(intCount) = !blnIsFixed
            'mvarColumnIsMust(intCount) = !blnIsMust
            If !blnIsFixed Then
                 mvarFixColumns = mvarFixColumns + 1
            End If
            mvarColumnIsFind(intCount) = !blnIsFind
            mvarColumnFieldID(intCount) = .rdoColumns("lngViewFieldID")
            mvarColumnFieldType(intCount) = !strFieldType
            mvarColumnFieldSize(intCount) = !bytFieldSize
            mvarColumnCombine(intCount) = IIf(IsNull(!strCombine), "", !strCombine)
            
            .MoveNext
       Next intCount
   End With
End Function

'取当前帐表设置
Public Function GetReportSet(ByVal lngReportID As Long, ByVal ReportViewID As Long) As String
   Dim rstChoosed As rdoResultset
   Dim strSql As String
   Dim strCond As String, strOrder As String, strCondVersion As String
   Dim intCount As Integer, lngWidth As Long
   
   If ViewId = 0 Then
        ViewId = ReportViewID
        ReportID = lngReportID
   End If
   
   strCondVersion = " And Mod(ViewField.bytVersion," & gVersionType * 2 & ")>=" & gVersionType
   
   If mlngPaperID = 0 Then
        strSql = "Select * from ViewField,Report,ReportField Where ViewField.lngViewFieldID=ReportField.lngViewFieldID " & _
                 "And Report.lngReportID=ReportField.lngReportID And Report.lngReportID=" & lngReportID & " And ReportField.blnIsChoosed=1 " & strCondVersion
        strOrder = " Order By lngReportFieldNO"
        Set rstChoosed = gclsBase.BaseDB.OpenResultset(strSql & strOrder, rdOpenStatic)
        With rstChoosed
            If .EOF Then
               GetReportSet = ""
               Exit Function
            End If
            .MoveLast
            .MoveFirst
            
            Columns = .RowCount
            
            mvarFixColumns = 0
            mvarGridTop = !intGridTop
            mintDirect = !intDirection
            For intCount = 1 To .RowCount
                 mvarColumnDesc(intCount) = !strReportFieldDesc
                 mvarColumnFieldName(intCount) = IIf(IsNull(!strFieldName), "", !strFieldName)
                 
                 lngWidth = Utility.GetDisplayWidth(!strViewFieldDesc, !bytFieldSize)
                 lngWidth = IIf(lngWidth > !lngDisplayWidth, lngWidth, !lngDisplayWidth)
                 mvarColumnWidth(intCount) = lngWidth
                 
                 mvarColumnOrderType(intCount) = !bytsort
                 mvarColumnIsFix(intCount) = !blnIsFixed
                 If !blnIsFixed Then
                      mvarFixColumns = mvarFixColumns + 1
                 End If
                 mvarColumnIsFind(intCount) = !blnIsFind
                 mvarColumnFieldID(intCount) = .rdoColumns("lngViewFieldID")
                 mvarColumnFieldType(intCount) = !strFieldType
                 mvarColumnFieldSize(intCount) = !bytFieldSize
                 mvarColumnCombine(intCount) = Trim(IIf(IsNull(!strCombine), "", !strCombine))
                 
                 .MoveNext
            Next intCount
        End With
   Else
   End If
   
   strSql = "Select * from ReportMultiColumn Where lngReportID=" & lngReportID
   strOrder = " Order By lngReportMultiNO"
   Set rstChoosed = gclsBase.BaseDB.OpenResultset(strSql & strOrder, rdOpenStatic)
   With rstChoosed
       If Not .EOF Then
            .MoveLast
            .MoveFirst
            mvarContent = !strContent
            SubColumns = .RowCount
            For intCount = 1 To .RowCount
                On Error Resume Next
                mvarSubDesc(intCount) = !strReportFieldDesc
                mvarSubCond(intCount) = !strMultiCond
                mvarSubCode(intCount) = !strMultiCode
                mvarSubData(intCount) = 0
                If !blnIsAmount Then
                    mvarSubData(intCount) = mvarSubData(intCount) + 1
                End If
                If !blnIsQuantity Then
                    mvarSubData(intCount) = mvarSubData(intCount) + 2
                End If
                If !blnIsCurrency Then
                    mvarSubData(intCount) = mvarSubData(intCount) + 4
                End If
                mvarSubAmountWidth(intCount) = !lngAmountWidth
                mvarSubQuantityWidth(intCount) = !lngQuantityWidth
                mvarSubCurrencyWidth(intCount) = !lngCurrencyWidth
                mvarSubDirect(intCount) = !intDirect
                .MoveNext
            Next intCount
       End If
   End With
   
   strSql = "Select bytCodeShow,intAlign,bytHead,lngDisplayTop,lngDisplayLeft,lngDisplayHeight,lngDisplayWidth," & _
            "ReportField.lngViewFieldID As ID,ViewField.strViewFieldDesc As Name " & _
            "From ViewField,Report,ReportField Where ViewField.lngViewFieldID=ReportField.lngViewFieldID " & _
            "And Report.lngReportID=ReportField.lngReportID And Report.lngReportID=" & lngReportID & _
            " And ReportField.blnIsHeaded=1 " & strCondVersion
   strOrder = " Order By lngReportFieldNO"
   Set rstChoosed = gclsBase.BaseDB.OpenResultset(strSql & strOrder, rdOpenStatic)
   With rstChoosed
        If Not .EOF Then
             .MoveLast
             .MoveFirst
             HeadFields = .RowCount
             For intCount = 1 To .RowCount
                 mvarHeadFieldId(intCount) = !ID
                 mvarHeadFieldName(intCount) = !Name
                 mvarHeadTop(intCount) = !lngdisplaytop
                 mvarHeadLeft(intCount) = !lngDisplayLeft
                 mvarHeadHeight(intCount) = !lngDisplayHeight
                 mvarHeadWidth(intCount) = !lngDisplayWidth
                 mvarHeadType(intCount) = !bytHead
                 mvarHeadAlign(intCount) = !intAlign
                 mbytCodeShowType(intCount) = !bytCodeShow
                 .MoveNext
             Next intCount
        End If
   End With
   
   mvarSelect = GetSelect
   mvarWhere = GetWhere
   GetReportSet = "Select " & mvarSelect & mvarFrom & IIf(mvarWhere <> "", " Where " & mvarWhere, "")
End Function

'显示栏目设置窗口
Public Function ShowMultiReportSet(ByVal lngReportID As Long, ByVal ReportViewID As Long, Optional ParentId As Long = 0, Optional ParentLevel As Integer = 0, Optional clsFormCond As FormCond = Nothing, Optional blnIsNew As Boolean = True, Optional HeadChange As Boolean) As Boolean
  Dim frmMultiWizard As New frmMultiBookWizard
   
   If mlngParentID = 0 Then
        mlngParentID = ParentId
        mintParentLevel = ParentLevel
   End If
   
   If mvarViewID = 0 Then
       GetReportSet lngReportID, ReportViewID
   End If
   
   ShowMultiReportSet = frmMultiWizard.SetMultiReport(Me, clsFormCond, HeadChange)
   If ShowMultiReportSet = True Then
       mvarSelect = GetSelect
       mvarWhere = GetWhere

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

'取 SELECT 子句
Public Function GetSelect()
  Dim intCount As Integer
  Dim strSelect As String, strFieldName As String
  Dim strFieldFat As String, blnSum As Boolean
    
     If mvarReportType = msgTotal Then
        blnSum = True
     Else
        blnSum = False
     End If
     For intCount = 1 To Columns
            If Trim(ColumnFieldName(intCount)) <> "" And Trim(ColumnDesc(intCount)) <> "年" Then
               If ColumnDesc(intCount) = "汇率" Then
                  If blnSum Then
                     strFieldFat = "'9999999990.' || String1(Max(Currencys.bytRateDec),'0')"
                  Else
                     strFieldFat = "'9999999990.' || String1(Currencys.bytRateDec,'0')"
                  End If
               Else
                  strFieldFat = ""
               End If
               If blnSum Then
                  If ColumnDesc(intCount) = "摘要" Then
                    strFieldName = "Max(strVoucherTypeName) || Decode(strVolume,'00','合计','第' || strVolume || '册合计')"
                  Else
                    If strFieldFat = "" Then
                       strFieldName = "Max(" & ColumnFieldName(intCount) & ")"
                    Else
                       strFieldName = "To_Char(Max(" & ColumnFieldName(intCount) & ")," & strFieldFat & ")"
                    End If
                  End If
               Else
                  If strFieldFat = "" Then
                     strFieldName = ColumnFieldName(intCount)
                  Else
                     strFieldName = "To_Char(" & ColumnFieldName(intCount) & "," & strFieldFat & ")"
                  End If
               End If
               If ColumnDesc(intCount) <> "年" And ColumnDesc(intCount) <> "月" And ColumnDesc(intCount) <> "日" And mvarReportType = msgTotal Then
                  If ColumnDesc(intCount) <> "摘要" Then
                     strFieldName = "' '"
                  End If
               End If
               If strSelect = "" Then
                   strSelect = strFieldName & " As " & ColumnDesc(intCount)
               Else
                   strSelect = strSelect & "," & strFieldName & " As " & ColumnDesc(intCount)
               End If
            End If
     Next intCount
     
     GetSelect = strSelect
End Function

Private Function ArrHaveData(arr As Variant) As Boolean
  Dim lngCount As Long
  On Error GoTo ErrHandle
     lngCount = UBound(arr)
     ArrHaveData = True
     Exit Function
ErrHandle:
End Function

'取 Where 子句
Public Function GetWhere() As String
  Dim strField As String
  Dim intCount As Integer
  Dim strCond As String
    
'    GetWhere = Filter.GetInitWhere(mvarReportID, 2)
'
'    If ArrHaveData(mvarSubCond) Then
'         Select Case mvarContent
'              Case "科目"
'                  strField = "Account.lngAccountId"
'         End Select
'         For intCount = 1 To UBound(mvarSubCond)
'              If Trim(mvarSubCond(intCount)) <> "" Then
'                    If strCond = "" Then
'                          strCond = strField & " In (" & mvarSubCond(intCount) & ")"
'                    Else
'                          strCond = strCond & " Or " & strField & " In (" & mvarSubCond(intCount) & ")"
'                    End If
'              End If
'         Next intCount
'         If strCond <> "" Then
'             If GetWhere <> "" Then
'                  GetWhere = GetWhere & " Or " & strCond
'             Else
'                  GetWhere = strCond
'             End If
'         End If
'    End If
End Function

'释放数组
Private Sub Class_Terminate()
    Erase mvarColumnWidth()
    Erase mvarColumnOrderType()
    Erase mvarColumnIsFix()
    Erase mvarColumnIsFind()
    Erase mvarColumnFieldID()
    Erase mvarColumnFieldName()
    Erase mvarColumnDesc()
    Erase mvarColumnFieldType()
    Erase mvarColumnFieldSize()
    Erase mvarColumnCombine()
    
    Erase mvarSubDesc()
    Erase mvarSubCond()
    Erase mvarSubData()
    Erase mvarSubDirect()
    Erase mvarSubAmountWidth()
    Erase mvarSubQuantityWidth()
    Erase mvarSubCurrencyWidth()
End Sub

⌨️ 快捷键说明

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