📄 frmfinancebook.frm
字号:
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 + -