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

📄 frmfinancebook.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
Private mblnResponseChange As Boolean
Private mblnFirstChange As Boolean
Private mblnReportReset As Boolean
Private mintReferRow1 As Long
Private mintReferRow2 As Long
Private mintReferRow3 As Long
Private mintReferRow4 As Long
Private mblnIsCheckPlan As Boolean
Private mblnJustChooseWeek As Boolean
Private mblnErrHappened As Boolean
Private mstrRptPeriod As String
Private mstrFixedColText() As String
Private mblnCondIsChanged As Boolean        '报表条件是否改变.
Private mblnColumnWidthIsChanged As Boolean '栏目宽度是否改变.
Private mblnFreePosIsChanged As Boolean     '自由单元位置是否改变.
Private mblnGridTopIsChanged As Boolean     '报表表格高度是否改变.
Private mblnSortIsAscending As Boolean
Private mintFCIndex As Integer
Private mblnFCMouseUp As Boolean
Private mblnSortIsChanged As Boolean
Private mblnBaseError As Boolean
Private mblnOrient As Boolean
Private mbytDec As Byte                                 ' 数据的小数位数
Private mstrDec As String
Private mdblCostAmount() As Double
Private mblnIsIncludeTax As Boolean
Private mstrNewSelect As String
Private mstrNewWhere As String
Private mstrHF(6) As String
Private mblnIsPriceAnaly As Boolean
Private mintFCAlignment As Integer
Private mblnFormIsLoad As Boolean
Private mblnHasAccountTypeCol As Boolean
Private mclsFilter As FormCond                           '查询条件类
Private mintSpecialCols As Integer
Private mblnIsFatalErr As Boolean
Private mblnNoValidData As Boolean
Private mblnFreeCellLocked As Boolean
Private mblnIsAutoRefresh As Boolean

Private mblnColOrderAdjusted As Boolean '是否已经调整列的顺序
Private mblnAddZero As Boolean '是否已经加0
Private mblnClearZero As Boolean '是否已经清0
Private mblnQueryComplex As Boolean '查询是否太复杂

Private mstrValidSql As String   '保存合法的SQl
Private mlngValidColumns As Long   '保存合法的mclsfinancereport.columns
Private mblnDefinedReport As Boolean '是否定义了报表
Private mblnRefreshBarIsClick As Boolean

Private mlngValidColumnWidth() As Long
Private mlngValidColumnDesc() As String
Private mvarColumnIsFix() As Integer                  '是否固定栏目
Private mvarColumnIsChoosed() As Integer              '是否已选栏目
Private mvarReportFieldNO() As Long                   '报表栏目顺序
Private mvarColumnFieldName() As String               '栏目字段
Private mvarColumnFieldType() As String               '栏目字段类型
Private mvarColumnFieldSize() As Integer              '栏目字段长度
Private mvarColumnTableName() As String               '栏目字段所属表名
Private mvarColumnFieldID() As Variant                '栏目字段ID
Private mstrInitStockSql As String
Private mclsCell As FreeCellSet                                  '自由单元对象
Private mblnColumnIsSorted As Boolean
Private Function PeriodIsSame() As Boolean
    If mclsFinanceReport.IsReferPeriod And (mclsFinanceReport.OtherAnalyCond <> "" Or mclsFinanceReport.OtherReferCond <> "") Then
        PeriodIsSame = cmbOtherAnaly.Text = cmbOtherRefer.Text And cmbOtherAnaly.Text <> "自定义" And cmbOtherAnaly.Text <> "所有" And cmbOtherAnaly.Text <> ""
        PeriodIsSame = PeriodIsSame Or cmbAnalyDate.Text = cmbReferDate.Text And Trim(cmbAnalyDate.Text) <> "自定义" And Trim(cmbAnalyDate.Text) <> "所有" And cmbAnalyDate.Text <> ""
        PeriodIsSame = PeriodIsSame Or cmbAnalyDate.Text = cmbOtherAnaly.Text And Trim(cmbAnalyDate.Text) <> "自定义" And Trim(cmbAnalyDate.Text) <> "所有" And cmbAnalyDate.Text <> ""
        PeriodIsSame = PeriodIsSame Or cmbAnalyDate.Text = cmbOtherRefer.Text And Trim(cmbAnalyDate.Text) <> "自定义" And Trim(cmbAnalyDate.Text) <> "所有" And cmbAnalyDate.Text <> ""
        PeriodIsSame = PeriodIsSame Or cmbReferDate.Text = cmbOtherRefer.Text And Trim(cmbReferDate.Text) <> "自定义" And Trim(cmbReferDate.Text) <> "所有" And cmbReferDate.Text <> ""
        PeriodIsSame = PeriodIsSame Or cmbReferDate.Text = cmbOtherAnaly.Text And Trim(cmbReferDate.Text) <> "自定义" And Trim(cmbReferDate.Text) <> "所有" And cmbReferDate.Text <> ""
    ElseIf mclsFinanceReport.IsReferPeriod And (mclsFinanceReport.OtherAnalyCond = "" And mclsFinanceReport.OtherReferCond = "") Then
        PeriodIsSame = cmbAnalyDate.Text = cmbReferDate.Text And Trim(cmbAnalyDate.Text) <> "自定义" And Trim(cmbAnalyDate.Text) <> "所有" And cmbAnalyDate.Text <> ""
    ElseIf Not mclsFinanceReport.IsReferPeriod And mclsFinanceReport.DateCond1 = "" Then
        PeriodIsSame = PeriodIsSame Or cmbAnalyDate.Text = cmbReferDate.Text And Trim(cmbAnalyDate.Text) <> "自定义" And Trim(cmbAnalyDate.Text) <> "所有" And cmbAnalyDate.Text <> ""
    ElseIf Not mclsFinanceReport.IsReferPeriod And mclsFinanceReport.DateCond1 <> "" Then
        PeriodIsSame = False
    End If
End Function
Private Sub RefreshLblCaption()
    If mclsFinanceReport.IsReferPeriod And (mclsFinanceReport.OtherAnalyCond = "" And mclsFinanceReport.OtherReferCond = "") Then
        lblAnalyPeriod.Caption = "分析期"
        lblD.Caption = "比较期"
    ElseIf mclsFinanceReport.IsReferPeriod And (mclsFinanceReport.OtherAnalyCond <> "" And mclsFinanceReport.OtherReferCond <> "") Then
        lblAnalyPeriod.Caption = "分析期1"
        lblD.Caption = "比较期1"
        lblOtherAnaly.Caption = "分析期2"
        lblOtherRefer.Caption = "比较期2"
    ElseIf Not mclsFinanceReport.IsReferPeriod And mclsFinanceReport.DateCond1 <> "" Then
        lblAnalyPeriod.Caption = "分析期"
        lblD.Caption = "比较期"
    ElseIf Not mclsFinanceReport.IsReferPeriod And mclsFinanceReport.DateCond1 = "" Then
        lblAnalyPeriod.Caption = "分析期"
    End If
    If mclsFinanceReport.ViewId = 321 Or mclsFinanceReport.ViewId = 682 Then
        lblD.Caption = "对比期"
    End If
    
End Sub

Private Sub ABook_ColumnResize(col As Integer, ByVal width As Integer, bCancel As Integer)
    Dim intStart As Integer
    Dim lngColumns As Long
    Dim lngColWidth As Long
    On Error Resume Next
    lngColWidth = width
    If lngColWidth < 0 Then lngColWidth = 20
    lngColumns = grdAcntBook.FixedCols
    If width >= ABook.ColCount Then
        Utility.ShowMsg Me.hWnd, "列太宽!", vbOKOnly + vbInformation, App.title
        bCancel = 1
        Exit Sub
    End If
    If col <> -1 Then
        intStart = mlngColStart(mlngCurPage - 1)
        If mlngCurPage = 1 Or intStart = 0 Then
            grdAcntBook.ColWidth(intStart + col + mintSpecialCols) = lngColWidth * Screen.TwipsPerPixelX
            grdTitle.ColWidth(intStart + col + mintSpecialCols) = grdAcntBook.ColWidth(intStart + col + mintSpecialCols)
        Else
            If col < lngColumns - mintSpecialCols Then
                grdAcntBook.ColWidth(col + mintSpecialCols) = lngColWidth * Screen.TwipsPerPixelX
                grdTitle.ColWidth(col + mintSpecialCols) = grdAcntBook.ColWidth(col + mintSpecialCols)
            Else
                grdAcntBook.ColWidth(intStart + col - lngColumns + mintSpecialCols + mintSpecialCols) = lngColWidth * Screen.TwipsPerPixelX
                grdTitle.ColWidth(intStart + col - lngColumns + mintSpecialCols + mintSpecialCols) = grdAcntBook.ColWidth(intStart + col - lngColumns + mintSpecialCols + mintSpecialCols)
            End If
        End If
    End If
    '保存固定列的宽度
    If col < mclsFinanceReport.Columns - mclsFinanceReport.DataColumns Then
        mclsFinanceReport.ColumnWidth(col + 1) = grdAcntBook.ColWidth(col + mintSpecialCols)
    End If
    If Not DispartPage Then Exit Sub
    Select Case mclsFinanceReport.ViewId
        Case 247, 656, 547
            SetData True
        Case Else
            If mclsFinanceReport.ViewId = 308 And mclsFinanceReport.AccountTypeID = 16 Then
                SetData True
            Else
                SetData
            End If
    End Select
    mblnColumnWidthIsChanged = True
End Sub
Private Sub ABook_RowScroll(ByVal Distance As Long)
    Dim lngValue As Long
    lngValue = VScroll.Value + Distance
    If lngValue > VScroll.Max Then
        VScroll.Value = VScroll.Max
    ElseIf lngValue < VScroll.Min Then
        VScroll.Value = VScroll.Min
    Else
        VScroll.Value = lngValue
    End If
End Sub

Private Sub AnalyBeginDate_LostFocus()
    Dim dtmBeginDate As Date
    Dim dtmEndDate As Date
    Dim blnIsOverFlow As Boolean
    On Error Resume Next
    If AnalyBeginDate.Text = "" Then
        ShowMsg Me.hWnd, "请输入一个日期!", vbExclamation, App.title
    End If
'    If Not IsDate(AnalyBeginDate.Text) Then
'        ShowMsg Me.hwnd, "非法的日期!", vbExclamation, App.title
'    End If
    If AnalyBeginDate.Value > AnalyEndDate.Value Then
        ShowMsg Me.hWnd, "请输入小于截止时间的日期!", vbExclamation, App.title
        AnalyBeginDate.Text = Format(mclsFinanceReport.DateBegin, "yyyy-mm-dd")
    ElseIf AnalyBeginDate.Text = "" Or Not IsDate(AnalyBeginDate.Text) Then
        AnalyBeginDate.SetFocus
    Else
        If Format(AnalyBeginDate.Text, "yyyy-mm-dd") < Format(gclsBase.BeginDate, "yyyy-mm-dd") Then
        '    ShowMsg Me.hwnd, "分析期不能小于帐套启用日期!", vbExclamation, app.title
            AnalyBeginDate.Text = Format(mclsFinanceReport.DateBegin, "yyyy-mm-dd")
            Exit Sub
        ElseIf Format(AnalyBeginDate.Text, "yyyy-mm-dd") > Format(gclsBase.EndDate, "yyyy-mm-dd") Then
            AnalyBeginDate.Text = Format(mclsFinanceReport.DateBegin, "yyyy-mm-dd")
            Exit Sub
        End If
        mblnIsPeriodChanged = True
        If txtReportPeriod.Visible = True Then
            dtmBeginDate = CDate(AnalyBeginDate.Text)
            dtmEndDate = CDate(AnalyEndDate.Text)
            blnIsOverFlow = mclsFinanceReport.CanOverFlow(dtmBeginDate, dtmEndDate, txtReportPeriod.Text)
            AnalyEndDate.Text = Format(dtmEndDate, "yyyy-mm-dd")
            AnalyBeginDate.Text = Format(dtmBeginDate, "yyyy-mm-dd")
        End If
        If mblnResponseChange = False And (Format(AnalyBeginDate.Text, "yyyy-mm-dd") <> Format(mclsFinanceReport.DateBegin, "yyyy-mm-dd") Or blnIsOverFlow = False) Then
            mclsFinanceReport.AnalyPeriod = "自定义"
            cmbAnalyDate_Choose
            cmbAnalyDate.Text = "自定义"
        End If
        mblnResponseChange = False
    End If
End Sub

Private Sub AnalyEndDate_LostFocus()
    Dim dtmBeginDate As Date
    Dim dtmEndDate As Date
    Dim blnIsOverFlow As Boolean
    On Error Resume Next
    If AnalyEndDate.Text = "" Then
        ShowMsg Me.hWnd, "请输入一个日期!", vbExclamation, App.title
    End If
'    If Not IsDate(AnalyEndDate.Text) Then
'        ShowMsg Me.hwnd, "非法的日期!", vbExclamation, App.title
'    End If
    If AnalyBeginDate.Value > AnalyEndDate.Value Then
        ShowMsg Me.hWnd, "请输入大于开始时间的日期!", vbExclamation, App.title
        AnalyEndDate.Text = Format(mclsFinanceReport.DateEnd, "yyyy-mm-dd")
    ElseIf AnalyEndDate.Text = "" Or Not IsDate(AnalyEndDate.Text) Then
        AnalyEndDate.SetFocus
    Else
        If Format(AnalyEndDate.Text, "yyyy-mm-dd") < Format(gclsBase.BeginDate, "yyyy-mm-dd") Then
'            ShowMsg Me.hwnd, "分析期不能小于帐套启用日期!", vbExclamation, app.title
            AnalyEndDate.Text = Format(mclsFinanceReport.DateEnd, "yyyy-mm-dd")
            Exit Sub
         ElseIf Format(AnalyEndDate.Text, "yyyy-mm-dd") > Format(gclsBase.EndDate, "yyyy-mm-dd") Then
            AnalyEndDate.Text = Format(mclsFinanceReport.DateEnd, "yyyy-mm-dd")
            Exit Sub
       End If
        mblnIsPeriodChanged = True
        If txtReportPeriod.Visible = True Then
            dtmBeginDate = CDate(AnalyBeginDate.Text)
            dtmEndDate = CDate(AnalyEndDate.Text)
            If dtmBeginDate <> #12:00:00 AM# Then
                blnIsOverFlow = mclsFinanceReport.CanOverFlow(dtmBeginDate, dtmEndDate, txtReportPeriod.Text)
                AnalyEndDate.Text = Format(dtmEndDate, "yyyy-mm-dd")
                AnalyBeginDate.Text = Format(dtmBeginDate, "yyyy-mm-dd")
            End If
        End If
        If mblnResponseChange = False And (Format(AnalyEndDate.Text, "yyyy-mm-dd") <> Format(mclsFinanceReport.DateEnd, "yyyy-mm-dd") Or blnIsOverFlow = False) Then
            mclsFinanceReport.AnalyPeriod = "自定义"
            cmbAnalyDate_Choose
            cmbAnalyDate.Text = "自定义"
        End If
        mblnResponseChange = False
    End If
End Sub

Private Sub cmbAnalyDate_Choose()
    Dim D1 As Date
    Dim D2 As Date
    On Error GoTo ErrHandler
    If mblnFirstChange = True Or mblnReportReset = True Or (cmbAnalyDate.Text = mclsFinanceReport.DateCond And cmbAnalyDate.Text <> "自定义") Then
        Exit Sub
    End If
    If CDate(AnalyBeginDate.Text) = CDate(mclsFinanceReport.DateBegin) And CDate(AnalyEndDate.Text) = CDate(mclsFinanceReport.DateEnd) And cmbAnalyDate.Text = "自定义" Then
        Exit Sub
    End If
    If mclsFinanceReport.ViewId <> 321 And mclsFinanceReport.ViewId <> 682 And mclsFinanceReport.IsUseRefer = False Then
        If PeriodIsSame Then
            ShowMsg Me.hWnd, "分析期类型与比较期类型重复!", vbExclamation, App.title
            cmbAnalyDate.ReferRow = mintReferRow1
            Me.Refresh
            Exit Sub
        End If
    End If
    mstrAnalyDateOP = mclsFinanceReport.ExgPeriodType(cmbAnalyDate.Text)
     If Trim(cmbAnalyDate.Text) = "自定义" Then
        mclsFinanceReport.AnalyStart = CDate(AnalyBeginDate.Text)
        mclsFinanceReport.AnalyEnd = CDate(AnalyEndDate.Text)
        mblnCondIsChanged = True
        CreatNewCond
        mblnIsPeriodChanged = True
        Exit Sub
    End If
    If Trim(cmbAnalyDate.Text) = "所有" Then
        AnalyBeginDate.Value = CDate(gclsBase.BeginDate)
        AnalyEndDate.Value = CDate(gclsBase.EndDate)
    Else
        If txtReportPeriod.Text <> "期" Or cmbAnalyDate.Text <> "去年" Then
            gclsBase.GetBeginAndEndDate cmbAnalyDate.Text, gclsBase.BaseDate, D1, D2
            If D1 < CDate(gclsBase.BeginDate) Or D2 < CDate(gclsBase.BeginDate) Then
'                ShowMsg Me.hwnd, "分析期不能小于帐套启用日期!", vbExclamation, app.title
                If D2 < CDate(gclsBase.BeginDate) Then
                    cmbAnalyDate.Text = mclsFinanceReport.DateCond
                    Exit Sub
                End If
                If D1 < CDate(gclsBase.BeginDate) And D2 > CDate(gclsBase.BeginDate) Then
                    D1 = CDate(gclsBase.BeginDate)
                End If
            End If
            AnalyBeginDate.Value = D1
            AnalyEndDate.Value = D2
        ElseIf txtReportPeriod.Text = "期" And cmbAnalyDate.Text = "去年" Then
'            gclsBase.BeginYear
'            gclsBase.GetBeginAndEndDate cmbAnalyDate.Text, gclsBase.BaseDate, D1, D2
            Dim intLastYear As Integer
            intLastYear = Year(CDate(gclsBase.BaseDate))
            gclsBase.DateOfFanYear intLastYear - 1, D1, D2
            If D1 <> #12:00:00 AM# Then
                If D1 < CDate(gclsBase.BeginDate) Or D2 < CDate(gclsBase.BeginDate) Then
 '                   ShowMsg Me.hwnd, "分析期不能小于帐套启用日期!", vbExclamation, app.title
                    If D2 < CDate(gclsBase.BeginDate) Then
                        cmbAnalyDate.Text = mclsFinanceReport.DateCond
                        Exit Sub
                    End If
                    If D1 < CDate(gclsBase.BeginDate) And D2 > CDate(gclsBase.BeginDate) Then

⌨️ 快捷键说明

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