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

📄

📁 VB开发的ERP系统
💻
📖 第 1 页 / 共 5 页
字号:
                    CxbbGrid1.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = .Fields("YbYsje")
                End If
                If .Fields("YbYsje") - .Fields("YbCancelje") <> 0 Then
                    CxbbGrid1.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = .Fields("YbYsje") - .Fields("YbCancelje")  '原币未核销金额
                    CxbbGrid1.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .Fields("YbYsje") - .Fields("YbCancelje")  '本次核销金额
                End If
            Else
                If .Fields("BbYsje") <> 0 Then                                                                  '本币应收/应付金额
                    CxbbGrid1.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = .Fields("BbYsje")
                End If
                If .Fields("Bbysje") - .Fields("BbCancelje") <> 0 Then
                    CxbbGrid1.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = .Fields("Bbysje") - .Fields("BbCancelje")  '本币未核销金额
                    CxbbGrid1.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .Fields("Bbysje") - .Fields("BbCancelje")  '本次核销金额
                End If
            End If
            
            CxbbGrid1.RowHeight(jsqte) = Sjhgd
            
            jsqte = jsqte + 1
            .MoveNext
            
        Loop
        
    End With
    
    ']以上为用户自定义部分
    
End Sub

'============================金额输入过程控制============================'

'输入本次核销金额(网格1)
Private Sub CxbbGrid_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
    With CxbbGrid
        If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
            Cancel = True
        End If
        If GridInt(.Col, 2) <> 0 Then
            CxbbGrid.EditMaxLength = GridInt(.Col, 2)
        Else
            CxbbGrid.EditMaxLength = 3000
        End If
    End With
End Sub

Private Sub CxbbGrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
    Call Sub_Lrxszxz(CxbbGrid, KeyAscii)
End Sub

Private Sub CxbbGrid_ChangeEdit()
    With CxbbGrid
        Select Case GridInt(.Col, 1)
        Case 8, 11
            Call Sub_Sjgskz(CxbbGrid, Xtjezws - Xtjexsws - 1, Xtjexsws)
        Case 9, 12
            Call Sub_Sjgskz(CxbbGrid, Xtslzws - Xtslxsws - 1, Xtslxsws)
        Case 10
            Call Sub_Sjgskz(CxbbGrid, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
        Case Else
            If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
                Call Sub_Sjgskz(CxbbGrid, GridInt(.Col, 3), GridInt(.Col, 4))
            End If
        End Select
    End With
End Sub

Private Sub CxbbGrid_AfterEdit(ByVal Row As Long, ByVal Col As Long)                                  '事后判断用户录入有效性
    With CxbbGrid
        Select Case Col
        Case Sydz("008", GridStr(), Szzls)
            
            '本次核销金额不能大于单据未核销金额或等于0,如大于则自动取未核销金额填入
            
            If (Val(.TextMatrix(Row, Col)) > Val(.TextMatrix(Row, Sydz("007", GridStr(), Szzls)))) Or Val(.TextMatrix(Row, Col)) = 0 Then
                .TextMatrix(Row, Col) = .TextMatrix(Row, Sydz("007", GridStr(), Szzls))
            End If
        End Select
    End With
End Sub

'输入本次核销金额(网格2)
Private Sub CxbbGrid1_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
    With CxbbGrid1
        If Not GridBoolean1(.Col, 1) Or .Row < .FixedRows Then
            Cancel = True
        End If
        If GridInt1(.Col, 2) <> 0 Then
            CxbbGrid1.EditMaxLength = GridInt1(.Col, 2)
        Else
            CxbbGrid1.EditMaxLength = 3000
        End If
    End With
End Sub

Private Sub CxbbGrid1_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
    Call Sub_Lrxszxz(CxbbGrid1, KeyAscii)
End Sub

Private Sub CxbbGrid1_ChangeEdit()
    With CxbbGrid1
        Select Case GridInt1(.Col, 1)
        Case 8, 11
            Call Sub_Sjgskz(CxbbGrid1, Xtjezws - Xtjexsws - 1, Xtjexsws)
        Case 9, 12
            Call Sub_Sjgskz(CxbbGrid1, Xtslzws - Xtslxsws - 1, Xtslxsws)
        Case 10
            Call Sub_Sjgskz(CxbbGrid1, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
        Case Else
            If GridInt1(.Col, 3) <> 0 Or GridInt1(.Col, 4) <> 0 Then
                Call Sub_Sjgskz(CxbbGrid1, GridInt1(.Col, 3), GridInt1(.Col, 4))
            End If
        End Select
    End With
End Sub

Private Sub CxbbGrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long)                                  '事后判断用户录入有效性
    With CxbbGrid1
        Select Case Col
        Case Sydz("008", GridStr1(), Szzls1)
            
            '本次核销金额不能大于单据未核销金额或等于0,如大于则自动取未核销金额填入
            
            If (Val(.TextMatrix(Row, Col)) > Val(.TextMatrix(Row, Sydz("007", GridStr1(), Szzls1)))) Or Val(.TextMatrix(Row, Col)) = 0 Then
                .TextMatrix(Row, Col) = .TextMatrix(Row, Sydz("007", GridStr1(), Szzls1))
            End If
        End Select
    End With
End Sub

'公用数值控制函数
Private Sub Sub_Lrxszxz(WglrGrid As VSFlexGrid, lrzfasc As Integer)                               '网格录入带有小数位及正负号数值字段
    If Not ((Chr(lrzfasc) >= "0" And Chr(lrzfasc) <= "9") Or (Chr(lrzfasc) = "." And InStr(1, WglrGrid.EditText, ".") = 0) Or lrzfasc = vbKeyBack Or (Chr(lrzfasc) = "-" And WglrGrid.EditSelStart = 0)) Then
        lrzfasc = 0
    End If
End Sub

Private Sub Sub_Sjgskz(WglrGrid As VSFlexGrid, zsws As Integer, xsws As Integer)                  '保证数值录入字段录入格式
    Dim xsdwz%, bccrd%
    xsdwz = InStr(1, WglrGrid.EditText, ".")
    bccrd = WglrGrid.EditSelStart
    If xsdwz = 0 Then
        WglrGrid.EditText = Mid(WglrGrid.EditText, 1, zsws)
        WglrGrid.EditSelStart = bccrd
        Exit Sub
    End If
    If zsws > xsdwz - 1 Then
        Zswstr = Mid(WglrGrid.EditText, 1, xsdwz - 1)
    Else
        Zswstr = Mid(WglrGrid.EditText, 1, zsws)
    End If
    xswstr = Mid(WglrGrid.EditText, xsdwz + 1, xsws)
    WglrGrid.EditText = Zswstr + "." + xswstr
    WglrGrid.EditSelStart = bccrd
End Sub

'以下为网格选中操作
Private Sub CxbbGrid_DblClick()
    With CxbbGrid
        
        CxbbGrid.EditCell   '调用网格编辑方法
        
        If .Row < .FixedRows Or .Col <> Sydz("002", GridStr(), Szzls) Then
            Exit Sub
        End If
        If CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) Then
            CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) = False
        Else
            CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) = True
        End If
    End With
End Sub

Private Sub CxbbGrid_KeyPress(KeyAscii As Integer)      '用户按空格表示切换,按回车表示选中
    With CxbbGrid
        If .Row < .FixedRows Or .Col <> Sydz("002", GridStr(), Szzls) Then
            Exit Sub
        End If
        If Chr(KeyAscii) = " " Then
            Call CxbbGrid_DblClick
        End If
        
        If KeyAscii = vbKeyReturn Then
            CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) = True
        End If
    End With
End Sub

Private Sub CxbbGrid1_DblClick()
    
    CxbbGrid1.EditCell   '调用网格编辑方法
    
    With CxbbGrid1
        If .Row < .FixedRows Or .Col <> Sydz("002", GridStr1(), Szzls1) Then
            Exit Sub
        End If
        If CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) Then
            CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) = False
        Else
            CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) = True
        End If
    End With
End Sub

Private Sub CxbbGrid1_KeyPress(KeyAscii As Integer)      '用户按空格表示切换,按回车表示选中
    With CxbbGrid1
        If .Row < .FixedRows Or .Col <> Sydz("002", GridStr1(), Szzls1) Then
            Exit Sub
        End If
        If Chr(KeyAscii) = " " Then
            Call CxbbGrid1_DblClick
        End If
        
        If KeyAscii = vbKeyReturn Then
            CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) = True
        End If
    End With
End Sub

Private Sub Sub_SelectAll()                            '全选
    With CxbbGrid
        For jsqte = .FixedRows To .Rows - 1
            CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = True
        Next jsqte
    End With
    With CxbbGrid1
        For jsqte = .FixedRows To .Rows - 1
            CxbbGrid1.TextMatrix(jsqte, Sydz("002", GridStr1(), Szzls1)) = True
        Next jsqte
    End With
End Sub

Private Sub Sub_AbandonAll()                            '全消
    With CxbbGrid
        For jsqte = .FixedRows To .Rows - 1
            CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = False
        Next jsqte
    End With
    With CxbbGrid1
        For jsqte = .FixedRows To .Rows - 1
            CxbbGrid1.TextMatrix(jsqte, Sydz("002", GridStr1(), Szzls1)) = False
        Next jsqte
    End With
End Sub

Private Sub Sub_AutoSelect()                            '自动
    Dim Dbl_Yskhj As Double             '网格(应收款)未核销金额合计
    Dim Dbl_Dkhj As Double              '网格(到款、退款、预收款、应付款)未核销金额合计
    
    '先判断以哪方金额为核销基准(以金额小的一方)
    With CxbbGrid
        For jsqte = .FixedRows To .Rows - 1
            Dbl_Yskhj = Dbl_Yskhj + Val(.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)))
        Next jsqte
    End With
    
    With CxbbGrid1
        For jsqte = .FixedRows To .Rows - 1
            Dbl_Dkhj = Dbl_Dkhj + Val(.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)))
        Next jsqte
    End With
    
    If Dbl_Yskhj >= Dbl_Dkhj Then
        
        With CxbbGrid1
            For jsqte = .FixedRows To .Rows - 1
                CxbbGrid1.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = True
                .TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .TextMatrix(jsqte, Sydz("007", GridStr(), Szzls))
            Next jsqte
        End With
        
        With CxbbGrid
            For jsqte = .FixedRows To .Rows - 1
                If Dbl_Dkhj <> 0 Then
                    CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = True
                    If Dbl_Dkhj > Val(.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls))) Then
                        .TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .TextMatrix(jsqte, Sydz("007", GridStr(), Szzls))
                    Else
                        .TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = Dbl_Dkhj
                    End If
                    Dbl_Dkhj = Dbl_Dkhj - Val(.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)))
                End If
            Next jsqte
        End With
        
    Else
        
        With CxbbGrid

⌨️ 快捷键说明

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