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

📄 banreport.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 4 页
字号:
   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
       For intCount = 1 To .RowCount

            mvarColumnDesc(intCount) = !strReportFieldDesc
            mvarColumnFieldName(intCount) = IIf(IsNull(!strFieldName), "", !strFieldName)
            mstrColumnGroup(intCount) = !strGroup
            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, Optional bytCurType As Byte = 1) 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
   
   strCondVersion = GetVersionCond
   
   strSql = "Select * from ViewField,Report,ReportField Where ViewField.lngViewFieldID=ReportField.lngViewFieldID " & _
            "And Report.lngReportID=ReportField.lngReportID And Report.lngReportID=" & lngReportID & _
            " And ReportField.blnIsChoosed=1 And ViewField.blnIsChoose=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
       
       If ViewId = 0 Then
            ViewId = ReportViewID
            ReportID = lngReportID
       End If
       Columns = .RowCount
       mintUserCols = Columns
       mvarFixColumns = 0
       mvarGridTop = !intGridTop
       mlngColType = IIf(IsNull(!lngColType), 0, !lngColType)
       For intCount = 1 To .RowCount
            mvarColumnDesc(intCount) = !strReportFieldDesc
            mstrColumnGroup(intCount) = !strGroup
            mvarColumnIsMust(intCount) = !blnIsMust
            mvarColumnFieldName(intCount) = IIf(IsNull(!strFieldName), "", !strFieldName)
            
            '?If !lngDisplayWidth = 0 Or IsNull(!lngDisplayWidth) Then(此句自动配置宽度)
            If IsNull(!lngDisplayWidth) Then
                lngWidth = Utility.GetDisplayWidth(!strViewFieldDesc, !bytFieldSize)
            Else
                lngWidth = !lngDisplayWidth
            End If
            mvarColumnWidth(intCount) = lngWidth
            
            mvarColumnOrderType(intCount) = !bytsort
            mvarColumnIsFix(intCount) = !blnIsFixed
            mvarColumnIsMust(intCount) = !blnIsMust
            If !blnIsFixed Then
                 mvarFixColumns = mvarFixColumns + 1
            End If
            mvarColumnIsFind(intCount) = !blnIsFind
            mblnColumnMayChoose(intCount) = .rdoColumns("blnIsChoose")
            mvarColumnFieldID(intCount) = .rdoColumns("lngViewFieldID")
            mvarColumnFieldType(intCount) = !strFieldType
            mvarColumnFieldSize(intCount) = !bytFieldSize
            mvarColumnCombine(intCount) = IIf(IsNull(!strCombine), "", !strCombine)
            
            .MoveNext
       Next intCount
   End With
   
   GetDataField bytCurType
   
   strSql = "Select bytCodeShow,intCondTop,intCondLeft,intCondWidth,intCondHeight,intCondAlign,bytCondShow,intTitleAlign,intAlign,bytHead,lngDisplayTop,lngDisplayLeft,lngDisplayHeight,lngDisplayWidth," & _
            "intTitleTop,intTitleLeft,intTitleWidth,intTitleHeight," & _
            "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
             mvarHeadTop(0) = IIf(IsNull(!intTitleTop), 0, !intTitleTop)
             mvarHeadLeft(0) = IIf(IsNull(!intTitleLeft), 0, !intTitleLeft)
             mvarHeadWidth(0) = IIf(IsNull(!intTitleWidth), 0, !intTitleWidth)
             mvarHeadHeight(0) = IIf(IsNull(!intTitleHeight), 0, !intTitleHeight)
             mvarHeadAlign(0) = IIf(IsNull(!intTitleAlign), 9, !intTitleAlign)
             
             mlngCondTop = IIf(IsNull(!intCondTop), 1000, !intCondTop)
             mlngCondLeft = IIf(IsNull(!intCondLeft), 100, !intCondLeft)
             mlngCondWidth = IIf(IsNull(!intCondWidth), 1000, !intCondWidth)
             mlngCondHeight = IIf(IsNull(!intCondHeight), 300, !intCondHeight)
             mlngCondAlign = IIf(IsNull(!intCondAlign), 9, !intCondAlign)
             mbytCondShow = IIf(IsNull(!bytCondShow), 2, !bytCondShow)
             
             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
        Else
             strSql = "Select intTitleTop,intTitleLeft,intTitleWidth,intTitleHeight From Report Where lngReportID=" & lngReportID
             Set rstChoosed = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
             With rstChoosed
                If Not .EOF Then
                    HeadFields = 0
                    mvarHeadTop(0) = !intTitleTop
                    mvarHeadLeft(0) = !intTitleLeft
                    mvarHeadWidth(0) = !intTitleWidth
                    mvarHeadHeight(0) = !intTitleHeight
                
                    mlngCondTop = IIf(IsNull(!intCondTop), 1000, !intCondTop)
                    mlngCondLeft = IIf(IsNull(!intCondLeft), 100, !intCondLeft)
                    mlngCondWidth = IIf(IsNull(!intCondWidth), 1000, !intCondWidth)
                    mlngCondHeight = IIf(IsNull(!intCondHeight), 300, !intCondHeight)
                    mlngCondAlign = IIf(IsNull(!intCondAlign), 9, !intCondAlign)
                    mbytCondShow = IIf(IsNull(!bytCondShow), 2, !bytCondShow)
                End If
             End With
        End If
   End With
   
   'mvarSelect = GetSelect
   GetReportSet = "Select " & mvarSelect & mvarFrom
End Function

Private Sub GetHeadColumn()
  Dim strSql As String, strOrder As String
  Dim rstHead As rdoResultset
  
   strSql = "Select * from ViewField,Report,ReportField Where ViewField.lngViewFieldID=ReportField.lngViewFieldID " & _
            "And Report.lngReportID=ReportField.lngReportID And Report.lngReportID=" & mvarReportID & _
            " And bytHead>0"
   strOrder = " Order By bytHead"
   Set rstHead = gclsBase.BaseDB.OpenResultset(strSql & strOrder, rdOpenStatic)

End Sub

'取 SELECT 子句
Public Function GetSelect(strGroup As String, arrGroupCol As Variant, lngCondType As Long, strGroupSel As String)
  Dim intCount As Integer, intRow As Integer
  Dim strSelect As String, strSql As String
  Dim rstViewField As rdoResultset
  Dim strName As String
  Dim blnAccount As Boolean
  
     For intCount = 1 To Columns
         strName = ColumnDesc(intCount)
         If strName = "科目编码" Or strName = "科目名称" Then
             blnAccount = True
         End If
     Next intCount
  
     intRow = 1
     For intCount = 1 To Columns
         strName = ColumnDesc(intCount)
         '** IF 1 **
         If blnAccount Then
            If Trim(ColumnFieldName(intCount)) <> "" Then
               If strSelect = "" Then
                   strSelect = ColumnFieldName(intCount) & " As " & strName
               Else
                   strSelect = strSelect & "," & ColumnFieldName(intCount) & " As " & strName
               End If
            Else
               If Trim(ColumnFieldName(intCount)) = "" Then
                   If strSelect = "" Then
                       strSelect = "0" & " As " & strName
                   Else
                       strSelect = strSelect & "," & "0" & " As " & strName
                   End If
               End If
            End If
         '** ELSE OF IF 1 **
         Else
            If strName = "方向" Then
                If strSelect = "" Then
                    strSelect = "'借' As " & strName
                Else
                    strSelect = strSelect & ",'借' As " & strName
                End If
            Else
                If Trim(ColumnFieldName(intCount)) <> "" Then
                   If strSelect = "" Then
                       strSelect = strReplace(ColumnFieldName(intCount), "+SUM", "-SUM") & " As " & strName
                   Else
                       strSelect = strSelect & "," & strReplace(ColumnFieldName(intCount), "+SUM", "-SUM") & " As " & strName
                   End If
                Else
                   If Trim(ColumnFieldName(intCount)) = "" Then
                       If strSelect = "" Then
                           strSelect = "0" & " As " & strName
                       Else
                           strSelect = strSelect & "," & "0" & " As " & strName
                       End If
                   End If
                End If
            End If
         '** END OF IF 1 **
         End If
         
         If Trim(mstrColumnGroup(intCount)) <> "" Then
             If InStr(1, strName, "科目") > 0 Then
                 lngCondType = lngCondType Or ctAccount
             End If
             If InStr(1, strName, "单位") > 0 Then
                 lngCondType = lngCondType Or ctcustomer
             End If
             If InStr(1, strName, "部门") > 0 Then
                 lngCondType = lngCondType Or ctDepartment
             End If
             If InStr(1, strName, "员工") > 0 Or InStr(1, strName, "职员") > 0 Then
                 lngCondType = lngCondType Or ctEmployee
             End If
             If InStr(1, strName, "统计") > 0 Then
                 lngCondType = lngCondType Or ctClass1
             End If
             If InStr(1, strName, "项目") > 0 Then
                 lngCondType = lngCondType Or ctClass2
             End If
             If InStr(1, strName, "工程") > 0 Then
                 lngCondType = lngCondType Or ctJob
             End If
             
             If blnAccount Then
                If strGroup = "" Then
                   strGroup = mstrColumnGroup(intCount)
                   strGroupSel = "LTrim(DECODE(" & mvarColumnFieldName(intCount) & ",NULL,''," & mvarColumnFieldName(intCount) & "))"
                Else
                   strGroup = strGroup & "," & mstrColumnGroup(intCount)
                   strGroupSel = strGroupSel & " || LTrim(DECODE(" & mvarColumnFieldName(intCount) & ",NULL,''," & mvarColumnFieldName(intCount) & "))"
                End If
             Else
                If strName <> "方向" Then
                    If strGroup = "" Then
                       strGroup = mstrColumnGroup(intCount)
                       strGroupSel = "LTrim(DECODE(" & mvarColumnFieldName(intCount) & ",NULL,''," & mvarColumnFieldName(intCount) & "))"
                    Else
                       strGroup = strGroup & "," & mstrColumnGroup(intCount)
                       strGroupSel = strGroupSel & " || LTrim(DECODE(" & mvarColumnFieldName(intCount) & ",NULL,''," & mvarColumnFieldName(intCount) & "))"
                    End If
                End If
             End If
             ReDim Preserve arrGroupCol(intRow)
             arrGroupCol(intRow) = intCount - 1
             intRow = intRow + 1
         End If
     Next intCount
     GetSelect = strSelect
End Function

Private Sub Class_Terminate()
    Erase mvarColumnWidth()
    Erase mvarColumnOrderType()
    Erase mvarColumnIsFix()
    Erase mvarColumnIsMust()
    Erase mvarColumnIsFind()
    Erase mblnColumnMayChoose()
    Erase mvarColumnFieldID()
    Erase mvarColumnFieldName()
    Erase mvarColumnDesc()
    Erase mstrColumnGroup()
    Erase mvarColumnFieldType()
    Erase mvarColumnFieldSize()
    Erase mvarColumnCombine()
End Sub


⌨️ 快捷键说明

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