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

📄 collate.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    Next i
    SaveSetting App.title, "Collate", "ColWidth", strColWidth
End Sub

Private Sub Form_Activate()
    Dim l As Long
    
    If mblnIsShowCard(0) Or mblnIsShowCard(1) Then Exit Sub
    Me.Enabled = False
    MsgForm.PleaseWait
    SetHelpID Me.HelpContextID
    msgCollate.Redraw = True
    mclsMainControl_ChildActive
    gclsSys.CurrFormName = Me.hwnd
    mintGridRow = 1
    RefreshGrid
    If msgCollate.Rows > 1 Then
        If mlngAcntID > 0 And mlngCurID > 0 Then
            For l = 1 To msgCollate.Rows - 1
                If mlngAcntID = msgCollate.TextMatrix(l, 0) And mlngCurID = msgCollate.TextMatrix(l, 1) Then Exit For
            Next l
            If l = msgCollate.Rows Then l = 1
        Else
            l = 1
        End If
        mblnReActive = False
        msgCollate.Row = l
        msgCollate.col = 1
        mlngAcntID = msgCollate.TextMatrix(l, 0)
        mlngCurID = msgCollate.TextMatrix(l, 1)
        mstrDate = msgCollate.TextMatrix(l, 4)
        SetButton
    Else
        mblnRowFail = True
        SetButton False
    End If
    SetColWidth
    Unload MsgForm
    Me.Enabled = True
End Sub

Private Sub Form_Deactivate()
    frmMain.SetEditUnEnabled
End Sub

Private Sub Form_Load()
    Dim edtErrReturn As ErrDealType
    
    On Error GoTo ErrHandle
'    MsgForm.PleaseWait
'    SetHelpID hwnd, 60010
    Set mclsSubClassform = New SubClass32.SubClass
    mclsSubClassform.hwnd = Me.hwnd
    mclsSubClassform.Messages(WM_GETMINMAXINFO) = True
    Set mclsGrid = New Grid
    Set mclsGrid.Grid = msgCollate
    gintDiff = 10
    mblnRowFail = False
    mblnIsShowCard(0) = False
    mblnIsShowCard(1) = False
'    gblnBySum = True
    gintMatchModel = 1
    gblnByDay = True
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
    Exit Sub
ErrHandle:
    edtErrReturn = Errors.ErrorsDeal
    
    If edtErrReturn = edtResume Then
         Resume
    Else
         On Error Resume Next
'         Unload MsgForm
         Unload Me
    End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = vbFormControlMenu Then
        Select Case True
            Case mblnIsShowCard(0)
                MsgBox "请先退出银行对帐单!", vbExclamation
                Cancel = True
                If frmBankDetail.WindowState = 1 Then frmBankDetail.WindowState = 0
                frmBankDetail.Show
                frmBankDetail.ZOrder 0
            Case mblnIsShowCard(1)
                MsgBox "请先退出企业银行帐!", vbExclamation
                Cancel = True
                If frmBankAccount.WindowState = 1 Then frmBankAccount.WindowState = 0
                frmBankAccount.Show
                frmBankAccount.ZOrder 0
        End Select
    End If
End Sub

Private Sub Form_Resize()
    Dim iHeight As Integer
    
    If (Me.Left + Me.width < 0) Or Me.Left > Screen.width Then Me.Left = 300
    cmdCollate(0).top = Me.Height - 2 * cmdCollate(0).Height - 90
    cmdCollate(0).Left = msgCollate.Left
    cmdCollate(1).top = cmdCollate(0).top
    cmdCollate(1).Left = cmdCollate(0).Left + cmdCollate(0).width + 3
    cmdCollate(2).top = cmdCollate(0).top
    cmdCollate(2).Left = cmdCollate(1).Left + cmdCollate(1).width + 3
    cmdCollate(3).top = cmdCollate(0).top
    cmdCollate(3).Left = cmdCollate(2).Left + cmdCollate(2).width + 3
    cmdCollate(4).top = cmdCollate(0).top
    cmdCollate(4).Left = cmdCollate(3).Left + cmdCollate(3).width + 3
    cmdCollate(5).top = cmdCollate(0).top
    cmdCollate(5).Left = cmdCollate(4).Left + cmdCollate(4).width + 3
    With msgCollate
        .Left = Me.ScaleLeft + 75
        .width = Me.width - .Left - 150
        iHeight = Me.Height - .top - 2 * cmdCollate(0).Height - 150
        .Height = IIf(iHeight < 0, 0, iHeight)
    End With
End Sub

Private Sub mclsMainControl_ListEditMenu(ByVal intIndex As Integer)
    cmdCollate(intIndex).Value = True
End Sub

Private Sub mclsSubClassForm_WndProc(Msg As Long, wParam As Long, lParam As Long, Result As Long)
    Dim MinMax As MINMAXINFO

    If Msg = WM_GETMINMAXINFO Then
        CopyMemory MinMax, ByVal lParam, Len(MinMax)

        MinMax.ptMinTrackSize.x = 580
        MinMax.ptMinTrackSize.x = 580
        MinMax.ptMinTrackSize.y = 280

        CopyMemory ByVal lParam, MinMax, Len(MinMax)
        Result = 0
    End If
End Sub

Private Sub GetBalance(ByVal intRow As Integer)
    Dim dtmStartDate As Date, dtmEndDate As Date
'    Dim intYear As Integer  ', bytPeriod As Byte
    Dim dblBillBalance As Double, dblBankBalance As Double
    Dim dblBankDebit As Double, dblBankCredit As Double
    Dim dblBillDebit As Double, dblBillCredit As Double
    Dim lngAcnID As Long, lngCurID As Long
    Dim bytCurDec As Byte  ',recBankBalance As rdoresultset
    Dim recBankMiss As rdoResultset, reccur As rdoResultset
    Dim recBillMiss As rdoResultset, strSql As String  ', strAcnYearStartDate As String
    Dim strQueryName As String
    
    On Error GoTo ErrHandle
    lngAcnID = CLng(msgCollate.TextMatrix(intRow, 0))
    lngCurID = CLng(msgCollate.TextMatrix(intRow, 1))
    If Trim$(msgCollate.TextMatrix(intRow, 4)) <> "" Then
        dtmStartDate = CDate(msgCollate.TextMatrix(intRow, 4))
    Else
        Exit Sub
    End If
    If Trim$(msgCollate.TextMatrix(intRow, 5)) <> "" Then
        dtmEndDate = CDate(msgCollate.TextMatrix(intRow, 5))
    End If
    If Trim$(msgCollate.TextMatrix(intRow, 7)) <> "" Then
        dblBillBalance = CDbl(msgCollate.TextMatrix(intRow, 7))
    Else
        dblBillBalance = 0
    End If
'    intYear = gclsBase.FYearOfDate(dtmEndDate)
'    bytPeriod = CByte(gclsBase.PeriodOfDate(dtmStartDate))
    
    '取币种小数位数
    strSql = "SELECT * FROM Currencys WHERE lngCurrencyID=" & lngCurID
    Set reccur = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If Not reccur.EOF Then bytCurDec = reccur!bytCurrencydec
    reccur.Close
    
    '取银行帐帐面余额
    dblBankBalance = BankBalance(lngAcnID, lngCurID, Format(dtmEndDate, "yyyy-mm-dd"))
    '取对帐单未达
    BillMiss lngAcnID, lngCurID, dblBillDebit, dblBillCredit
    '取银行帐未达
    BankMiss lngAcnID, lngCurID, msgCollate.TextMatrix(intRow, 4), msgCollate.TextMatrix(intRow, 5), dblBankDebit, dblBankCredit
    If Not gclsBase.ControlAccount Then
        BankVoucherMiss lngAcnID, lngCurID, msgCollate.TextMatrix(intRow, 4), msgCollate.TextMatrix(intRow, 5), dblBankDebit, dblBankCredit
    End If
    
    If dblBankBalance <> 0 Then
        msgCollate.TextMatrix(intRow, 6) = FormatShow(dblBankBalance, bytCurDec)
    End If
    If dblBankBalance + dblBillCredit - dblBillDebit <> 0 Then
        msgCollate.TextMatrix(intRow, 8) = FormatShow(dblBankBalance + dblBillCredit - dblBillDebit, bytCurDec)
    End If
    If dblBillBalance + dblBankDebit - dblBankCredit <> 0 Then
        msgCollate.TextMatrix(intRow, 9) = FormatShow(dblBillBalance + dblBankDebit - dblBankCredit, bytCurDec)
    End If
    If msgCollate.TextMatrix(intRow, 7) <> "" Then
        msgCollate.TextMatrix(intRow, 7) = FormatShow(msgCollate.TextMatrix(intRow, 7), bytCurDec)
    End If
    Exit Sub
ErrHandle:
    msgCollate.TextMatrix(intRow, 4) = ""
End Sub

Private Sub BankVoucherMiss(ByVal lngAcnID As Long, ByVal lngCurID As Long, ByVal strSD As String, _
    ByVal strED As String, ByRef dblDebit As Double, dblCredit As Double)
    Dim recB As rdoResultset, strSql As String
    
    strSql = "SELECT VoucherDetail.intDirection intDirection,VoucherDetail.dblCurrencyAmount dblAmount " _
          & " FROM Voucher, VoucherDetail Where Voucher.lngVoucherID = VoucherDetail.lngVoucherID " _
          & " AND Voucher.lngVoucherSourceID IN (1,2,3,4,14,16) AND Voucher.blnIsVoid=0 AND " _
          & "VoucherDetail.lngAccountID=" & lngAcnID & " AND VoucherDetail.lngCurrencyID=" _
          & lngCurID & " AND Voucher.strDate>='" & strSD & "' AND Voucher.strDate<='" & strED _
          & "' AND VoucherDetail.blnIsClosed=0"
    Set recB = gclsBase.BaseDB.OpenResultset(strSql, rdOpenForwardOnly)
    While Not recB.EOF
        If recB("intDirection") = 1 Then
            dblDebit = dblDebit + recB("dblAmount")
        Else
            dblCredit = dblCredit + recB("dblAmount")
        End If
        recB.MoveNext
    Wend
End Sub


Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
    If mblnIsShowCard(0) Then Unload frmBankDetail
    If mblnIsShowCard(1) Then Unload frmBankAccount
    SaveColWidth
    Set mclsGrid = Nothing
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
End Sub

'Private Sub MakeListEditMenu()
'    Dim intCnt As Integer
'
'    With frmMain
'        For intCnt = .mnuListEditMenu.Count - 1 To 1 Step -1
'            Unload .mnuListEditMenu(intCnt)
'        Next
'
'        Utility.CloneMenu .mnuEditEdit, .mnuListEditMenu(0)
'        .mnuListEditMenu(0).Caption = "修改(&E)"
'
'        Load .mnuListEditMenu(1)
'        Utility.CloneMenu .mnuEditNew, .mnuListEditMenu(1)
'        .mnuListEditMenu(1).Caption = "新增(&N)"
'        Load .mnuListEditMenu(2)
'        Utility.CloneMenu .mnuEditDel, .mnuListEditMenu(2)
'        .mnuListEditMenu(2).Caption = "删除(&D)"
'    End With
'End Sub
'

Private Sub mclsMainControl_ChildActive()
    Dim vntMessage As Variant
    
    '响应消息
    For Each vntMessage In mclsMainControl.Messages
        If vntMessage = Message.msgClass Then '接收到银行对帐改变消息
            mclsMainControl.Messages.Remove CStr(vntMessage) '清除银行对帐改变消息
        End If
    Next
    mclsMainControl.Messages.Clear
'    gclsSys.CurrFormName = Me.hwnd
End Sub

Private Sub msgCollate_DblClick()
    If cmdCollate(2).Enabled Then cmdCollate(2).Value = True
End Sub

Private Sub RefreshGrid()
    Dim i As Integer, strSql As String
    
    msgCollate.Cols = 0
'    Set Data1.Resultset = gclsBase.BaseDB.rdoQueries("Collate0"). _
        OpenResultset(rdOpenStatic)
    strSql = "SELECT * FROM Collate0 Order by Collate0.""银行科目"""
    Set Data1.Resultset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If Not Data1.Resultset.EOF Then Data1.Resultset.MoveLast
    For i = 2 To msgCollate.Cols - 1
        msgCollate.FixedAlignment(i) = flexAlignCenterCenter
        If i > 5 Then msgCollate.ColAlignment(i) = flexAlignRightCenter
    Next i
    For i = 1 To msgCollate.Rows - 1
        If Trim$(msgCollate.TextMatrix(i, 4)) <> "" Then GetBalance i
        msgCollate.RowHeight(i) = 300
    Next i
    Data1.Resultset.Close
    msgCollate.FixedCols = 0
    mclsGrid.SetupStyle
End Sub

Private Sub msgCollate_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
    Case vbKeyUp, vbKeyDown
'        mblnRowFail = False
'        mlngAcntID = msgCollate.TextMatrix(msgCollate.Row, 0)
'        mlngCurID = msgCollate.TextMatrix(msgCollate.Row, 1)
'        mstrDate = msgCollate.TextMatrix(msgCollate.Row, 4)
'        SetButton
    Case vbKeySpace
        If cmdCollate(2).Enabled Then cmdCollate(2).Value = True
    End Select
End Sub

Private Sub msgCollate_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim i As Integer, lHeigh As Long
    
    If msgCollate.Row = 0 Then Exit Sub
    If Button = vbRightButton Then
        MakeListEditMenu
        PopupMenu frmMain.mnuListEdit
    Else
        For i = 0 To msgCollate.Rows - 1
            lHeigh = lHeigh + msgCollate.RowHeight(i)
        Next i
        If y < msgCollate.RowHeight(0) Then
            msgCollate_MouseUp Button, Shift, x, msgCollate.RowHeight(0) * (msgCollate.Rows + 3)
        ElseIf y > lHeigh Then
            mblnRowFail = True
            mstrDate = ""
            SetButton False
        Else
            mblnRowFail = False
            mlngAcntID = msgCollate.TextMatrix(msgCollate.Row, 0)
            mlngCurID = msgCollate.TextMatrix(msgCollate.Row, 1)
            mstrDate = msgCollate.TextMatrix(msgCollate.Row, 4)
            SetButton
        End If
    End If
End Sub

Private Sub SetButton(Optional ByVal blnSel As Boolean = True)
    Dim i As Integer
    
    If Not blnSel Then
        For i = 0 To 5
            cmdCollate(i).Enabled = False
        Next i
    Else
        If mstrDate = "" Then
            cmdCollate(0).Enabled = False
            cmdCollate(1).Enabled = False
            cmdCollate(2).Enabled = False
            cmdCollate(3).Enabled = False
            cmdCollate(4).Enabled = True
            cmdCollate(5).Enabled = False
        Else
            cmdCollate(0).Enabled = True
            cmdCollate(1).Enabled = True
            cmdCollate(2).Enabled = True
            cmdCollate(3).Enabled = True
            cmdCollate(4).Enabled = False
            cmdCollate(5).Enabled = True
        End If
    End If
End Sub

Private Sub MakeListEditMenu()
    Dim intCnt As Integer
    
    With frmMain
        For intCnt = .mnuListEditMenu.Count - 1 To 1 Step -1
            Unload .mnuListEditMenu(intCnt)
        Next
                
        Utility.CloneMenu .mnuEditNew, .mnuListEditMenu(0)
        .mnuListEditMenu(0).Enabled = cmdCollate(0).Enabled
        .mnuListEditMenu(0).Caption = cmdCollate(0).Caption
        
        Load .mnuListEditMenu(1)
        Utility.CloneMenu .mnuEditDel, .mnuListEditMenu(1)
        .mnuListEditMenu(1).Enabled = cmdCollate(1).Enabled
        .mnuListEditMenu(1).Caption = cmdCollate(1).Caption
        
        Load .mnuListEditMenu(2)
        Utility.CloneMenu .mnuEditEdit, .mnuListEditMenu(2)
        .mnuListEditMenu(2).Enabled = cmdCollate(2).Enabled
        .mnuListEditMenu(2).Caption = cmdCollate(2).Caption
        
        Load .mnuListEditMenu(3)
        Utility.CloneMenu .mnuEditFilter, .mnuListEditMenu(3)
        .mnuListEditMenu(3).Enabled = cmdCollate(3).Enabled
        .mnuListEditMenu(3).Caption = cmdCollate(3).Caption
        
        Load .mnuListEditMenu(4)
        Utility.CloneMenu .mnuEditColumn, .mnuListEditMenu(4)
        .mnuListEditMenu(4).Enabled = cmdCollate(4).Enabled
        .mnuListEditMenu(4).Caption = cmdCollate(4).Caption
        
        Load .mnuListEditMenu(5)
        Utility.CloneMenu .mnuEditColumn, .mnuListEditMenu(5)
        .mnuListEditMenu(5).Enabled = cmdCollate(5).Enabled
        .mnuListEditMenu(5).Caption = cmdCollate(5).Caption
    End With
End Sub

Private Sub msgCollate_RowColChange()
    If msgCollate.Row = 0 Then Exit Sub
    If mblnReActive Then Exit Sub
    mblnRowFail = False
    mlngAcntID = msgCollate.TextMatrix(msgCollate.Row, 0)
    mlngCurID = msgCollate.TextMatrix(msgCollate.Row, 1)
    mstrDate = msgCollate.TextMatrix(msgCollate.Row, 4)
    SetButton
End Sub

⌨️ 快捷键说明

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