来自「VB开发的ERP系统」· 代码 · 共 1,480 行 · 第 1/5 页

TXT
1,480
字号
        KeyAscii = 0
    End Select
    
End Sub

Private Sub Form_Load()
    
    '确定转帐过程编码
    Call SeleTranBm
    
    '窗体的Caption
    Me.Caption = ReportTitle
    Me.Left = (Screen.Width - Me.Width) / 2
    Me.Top = (Screen.Height - Me.Height) / 2
    
    '报表主标题及报表编码
    ReportTitle = "转帐凭证列表"
    XtReportCode = "cwzz_AutoAccList"
    Load Dyymctbl
    
    '以下为文本框处理程序
    TextGroupCode = "cwzz_AutoAccL"
    Call Drwbkxx(TextGroupCode, Textvar(), Textboolean(), Textint(), Textstr())  '读入文本框录入信息
    Call Wbkcsh
    
    '调 入 网 格
    GridCode = "cwzz_AutoAccList"          '网格属性编码
    Call BzWgcsh(CzxsGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
    Qslz = GridInf(1)
    Sjhgd = GridInf(2)
    Szzls = CzxsGrid.Cols - 1
    
    '填 充 网 格
    Call Cxnrtcwg
    
    '初始化toolbar,tab卡状态
    StTab.Tab = 0
    StTab.TabEnabled(1) = False
    Frame1.Enabled = False
    Lrzt = 0            '初始为非编辑状态
    
    '[自定义
    
    Chk_Vouch.Value = vbChecked
    
    '填充凭证类型下拉框
    Call FillImageCombo(ImgCmbClass, "Cwzz_AccVouchClass", 2)
    
    '填充会计期间列表框(年度默认为用户选择年度)
    Call Sub_FillPeriod(Combo_Kjqj, Xtyear, Xtmm)
    
    '自定义]
End Sub

Private Sub Cxnrtcwg()                               '查询内容填充网格
    
    Sqlstr = "SELECT Cwzz_VouchClass.VouchClassName AS VouchClassName, Cwzz_AutoTranMain.TranClass, " & _
    "Cwzz_AutoTranMain.TranCode, Cwzz_AutoTranMain.TranName," & _
    "Cwzz_AutoTranMain.VouchClassCode, Cwzz_AutoTranMain.EndTranDate," & _
    "Cwzz_AutoTranMain.Bill FROM Cwzz_AutoTranMain LEFT OUTER JOIN " & _
    "Cwzz_VouchClass ON " & _
    "Cwzz_AutoTranMain.VouchClassCode = Cwzz_VouchClass.VouchClassCode " & _
    "Where Cwzz_AutoTranMain.TranClass='" & TranClassCode & "' ORDER BY Cwzz_AutoTranMain.TranCode"
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    With RecTemp
        CzxsGrid.Clear 1
        CzxsGrid.Rows = .RecordCount + CzxsGrid.FixedRows
        If .EOF And .BOF Then
            Exit Sub
        End If
        Jsqte = CzxsGrid.FixedRows
        Do While Not .EOF
            If Jsqte >= CzxsGrid.Rows Then
                CzxsGrid.AddItem ""
            End If
            Call Jltcwg(RecTemp, Jsqte)
            CzxsGrid.RowHeight(Jsqte) = Sjhgd
            .MoveNext
            Jsqte = Jsqte + 1
        Loop
    End With
    
End Sub

Private Sub Jltcwg(Jlbrec As ADODB.Recordset, Rowjsq As Long)                                     '记录内容填充网格
    
    With Jlbrec
        CzxsGrid.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls)) = Trim(.Fields("TranCode"))
        CzxsGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)) = Trim(.Fields("TranName"))
        CzxsGrid.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls)) = Trim(Trim(.Fields("VouchClassCode")) & " " & Trim(.Fields("VouchClassName")))
        CzxsGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)) = Trim(.Fields("Bill") & "")
        CzxsGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)) = IIf(Trim(.Fields("EndTranDate") & "") = "", "", Format(Trim(.Fields("EndTranDate") & ""), "yyyy-mm-dd"))
    End With
    
End Sub

Private Sub Wbkcsh()                          '录入文本框初始化
    
    Dim Jsqte As Integer
    '最大录入文本框索引值
    Max_Text_Index = Textvar(1)
    ReDim TextValiJudgeLock(Max_Text_Index)
    For Jsqte = 0 To Max_Text_Index
        If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then   '如果文本框索引值不为0,即不是“编码”文本框
            If Textboolean(Jsqte, 1) Then   '如果该文本框处需要提供帮助
                If Jsqte <> 0 And Not Textboolean(Jsqte, 3) Then    '
                    Load Ydcommand1(Jsqte)
                End If
                Ydcommand1(Jsqte).Visible = True
                Ydcommand1(Jsqte).Move LrText(Jsqte).Left + LrText(Jsqte).Width, LrText(Jsqte).Top
            End If
            TextChangeLock = True
            LrText(Jsqte).Text = ""
            LrText(Jsqte).Tag = ""
            If Textint(Jsqte, 5) <> 0 Then   '如果字段录入长度不等于0
                LrText(Jsqte).MaxLength = Textint(Jsqte, 5)  '该文本框的最大录入长度赋值给文本框的MaxLength
            End If
            TextChangeLock = False
        End If
        TextValiJudgeLock(Jsqte) = True
    Next Jsqte
    
End Sub

Private Sub Form_Unload(Cancel As Integer)             '窗体卸载
    
    TranClassCode = ""
    Set Cxnrrec = Nothing
    Unload Dyymctbl
    Set Rec_AutoTranMain = Nothing
    Set Rec_AutoTranItem = Nothing
    Set RecTemp = Nothing
    
End Sub

Private Function Bclrsj() As Boolean                   '判断录入数据有效性,并保存数据
    
    Dim Jsqte As Integer
    For Jsqte = 0 To Max_Text_Index
        If Textint(Jsqte, 8) = 1 Then     '如果字段不能为空
            If Len(Trim(LrText(Jsqte).Text)) = 0 Then
                Tsxx = Textstr(Jsqte, 7) & "不能为空!"
                Call Xtxxts(Tsxx, 0, 1)
                LrText(Jsqte).SetFocus
                Bclrsj = False
                Exit Function
            End If
        Else
            If Textint(Jsqte, 8) = 2 Then   '如果字段不能为零
                If Val(Trim(LrText(Jsqte).Text)) = 0 Then
                    Tsxx = Textstr(Jsqte, 7) & "不能为零!"
                    Call Xtxxts(Tsxx, 0, 1)
                    LrText(Jsqte).SetFocus
                    Bclrsj = False
                    Exit Function
                End If
            End If
        End If
    Next Jsqte
    
    If ImgCmbClass.Text = "" Then
        Tsxx = tsLabel(2).Caption & "不能为空!"
        Call Xtxxts(Tsxx, 0, 1)
        ImgCmbClass.SetFocus
        Bclrsj = False
        Exit Function
    Else
        Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * from Cwzz_VouchClass Where VouchClassCode='" & Trim(GetComboKey(ImgCmbClass, 0)) & "'")
    End If
    
    '对需要进行事后判断的文本框录入内容进行有效性判断 (固定不变)
    For Jsqte = 0 To Max_Text_Index
        If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then   '需要进行有效性判断的字段存盘之前再进行判断。
            If Not TextYxxpd(Jsqte) Then
                Exit Function
            End If
        End If
    Next Jsqte
    
    On Error GoTo Swcwcl
    If Lrzt = 1 Then  '增 加一个新编码时
        With Rec_AutoTranMain
            If .State = 1 Then .Close
            .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranCode= '" + Trim(LrText(0).Text) + "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
            If Not .EOF Then
                Tsxx = "转帐编码重复!"
                Call Xtxxts(Tsxx, 0, 1)
                LrText(0).SetFocus
                Bclrsj = False
                Exit Function
            End If
            If .State = 1 Then .Close
            .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranName= '" + Trim(LrText(1).Text) + "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
            If Not .EOF Then
                Tsxx = "转帐名称重复!"
                Call Xtxxts(Tsxx, 0, 1)
                LrText(1).SetFocus
                Bclrsj = False
                Exit Function
            End If
            .AddNew
            .Fields("TranClass") = TranClassCode
            .Fields("TranCode") = Trim(LrText(0).Text)
            .Fields("TranName") = Trim(LrText(1).Text)
            .Fields("VouchClassCode") = Trim(GetComboKey(ImgCmbClass, 0))
            .Update
        End With
        Sqlstr = "SELECT cwzz_VouchClass.VouchClassCode,cwzz_VouchClass.VouchClassName, Cwzz_AutoTranMain.TranName, " & _
        "Cwzz_AutoTranMain.TranCode, Cwzz_AutoTranMain.VouchClassCode," & _
        "Cwzz_AutoTranMain.EndTranDate , Cwzz_AutoTranMain.Bill FROM Cwzz_AutoTranMain LEFT OUTER JOIN " & _
        "Cwzz_VouchClass ON " & _
        "Cwzz_AutoTranMain.VouchClassCode = Cwzz_VouchClass.VouchClassCode WHERE trancode = '" & Trim(LrText(0)) & "' and TranClass='" & TranClassCode & "'" & _
        "ORDER BY Cwzz_AutoTranMain.TranCode"
        Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
        With CzxsGrid
            .AddItem ""
            .RowHeight(.Rows - 1) = Sjhgd
            .Select .Rows - 1, Qslz
            Call Jltcwg(RecTemp, .Rows - 1)
        End With
        
        Tsxx = "保存成功!"
        Call Xtxxts(Tsxx, 0, 4)
        Call Cshlrxx(1)
        LrText(0).SetFocus
    Else  '修改转帐名称或转帐类型时 修改编辑状态
        With Rec_AutoTranMain
            If .State = 1 Then .Close
            .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranName= '" + Trim(LrText(1).Text) + "' and TranCode<>'" & Trim(LrText(0).Text) & "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
            If Not .EOF Then
                Tsxx = "转帐名称重复!"
                Call Xtxxts(Tsxx, 0, 1)
                LrText(1).SetFocus
                Bclrsj = False
                Exit Function
            End If
            If .State = 1 Then .Close
            .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranCode= '" + LrText(0).Text + "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
            If Not .EOF Then
                .Fields("TranName") = Trim(LrText(1).Text)
                .Fields("VouchClassCode") = Trim(GetComboKey(ImgCmbClass, 0))
            End If
            .Update
            .Close
        End With
        Sqlstr = "SELECT Cwzz_VouchClass.VouchClassName, Cwzz_AutoTranMain.TranName," & _
        "Cwzz_AutoTranMain.TranCode,Cwzz_AutoTranMain.VouchClassCode, Cwzz_AutoTranMain.EndTranDate," & _
        "Cwzz_AutoTranMain.Bill    FROM Cwzz_AutoTranMain LEFT OUTER JOIN " & _
        "Cwzz_VouchClass ON  Cwzz_AutoTranMain.VouchClassCode = Cwzz_VouchClass.VouchClassCode  WHERE trancode = '" & Trim(LrText(0)) & "' and TranClass='" & TranClassCode & "'"
        Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
        If Not RecTemp.EOF Then
            Call Jltcwg(RecTemp, CzxsGrid.Row)
        End If
    End If
    Bclrsj = True
    Exit Function
    
Swcwcl:
    Tsxx = "存盘过程中出现错误,请退出后重新进入!"
    Call Xtxxts(Tsxx, 0, 1)
    Exit Function
    
End Function

Private Sub Cshlrxx(lrztxx As Integer)              '初始化录入字段信息
    
    TextChangeLock = True       '关闭Chang事件
    If lrztxx = 1 Then              '新增状态
        For Jsqte = 0 To Max_Text_Index
            If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then  '文本框索引值
                TextChangeLock = True
                LrText(Jsqte).Text = ""
                LrText(Jsqte).Tag = ""
                TextChangeLock = False
            End If
            TextValiJudgeLock(Jsqte) = True
        Next Jsqte
        ImgCmbClass.Text = ""
    Else                            '其他状态,修改、非编辑
        With CzxsGrid
            LrText(0).Text = Trim(.TextMatrix(.Row, Sydz("001", GridStr(), Szzls)))
            LrText(1).Text = Trim(.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)))
            ImgCmbClass.Text = Trim(.TextMatrix(.Row, Sydz("003", GridStr(), Szzls)))
        End With
    End If
    TextChangeLock = False
    
End Sub

Private Sub Scdqjl()                 '删 除 当 前 记 录
    
    Dim Yhanswer As Integer
    If CzxsGrid.Row < CzxsGrid.FixedRows Then
        Exit Sub
    End If
    Tsxx = "请确认是否删除当前记录?"

⌨️ 快捷键说明

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