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

📄

📁 VB开发的ERP系统
💻
📖 第 1 页 / 共 5 页
字号:
            End If
            
            '1.首先进行为空或为零判断(Fixed)
            
            For Jsqte = Qslz To .Cols - 1
                
                '字段不能为空
                If GridInt(Jsqte, 5) = 1 Then
                    If Len(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
                        Tsxx = GridStr(Jsqte, 2)
                        Lrywlz = Jsqte
                        GoTo Lrcwcl
                        Exit For
                    End If
                End If
                
                '字段不能为零
                If GridInt(Jsqte, 5) = 2 Then
                    If Val(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
                        Tsxx = GridStr(Jsqte, 2)
                        Lrywlz = Jsqte
                        GoTo Lrcwcl
                        Exit For
                    End If
                End If
            Next Jsqte
            
            
            
        Next Rowjsq
        
        '单据分录行数不能为零(Fixed)
        If Lng_RowCount = 0 Then
            Tsxx = "单据分录行数不能为零!"
            Call Xtxxts(Tsxx, 0, 1)
            Exit Function
        End If
        
        '[>>
        '此处可以定义整张单据不能通过有效性检查的理由
        '<<]
    End With  '网格
    
    
    '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
    
    '对存盘进行事务处理(Fixed)
    On Error GoTo Swcwcl
    Cw_DataEnvi.DataConnect.BeginTrans
    
    '判断单据状态以进行不同处理
    
    '1.先对单据主表进行处理
    If Trim(Lab_OperStatus) = "2" Then
        
        '新增单据
        
        
        '2.开始存盘
        
        '打开单据表动态集
        If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
        Rec_VouchMain.Open "Select * From Qc_EnvironmentReport Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
        
        With Rec_VouchMain
            '将网格中有效数据行写入单据表
            For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
                If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
                    Exit For
                End If
                .AddNew
                .Fields("ReportDate") = CDate(LrText(0).Text)                                                    '单据日期
                
                .Fields("Reporter") = Xtczy                                                                      '制单人
                .Fields("ItemId") = Trim(WglrGrid.TextMatrix(Rowjsq, 1))                                         '取样点
                .Fields("Result") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls)))             '检验结果
                .Fields("Remark") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))             '备注
                .Update
            Next Rowjsq
            Lab_BillId.Caption = .Fields("ReportDate")
        End With
    Else
        '修改单据
        
        '1.删除原单据子表中所有内容
        Cw_DataEnvi.DataConnect.Execute (" Delete From Qc_EnvironmentReport  Where ReportDate='" & Trim(Lab_BillId.Caption) & "'")

        
        '打开单据主表动态集
        If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
        Rec_VouchMain.Open "Select * From Qc_EnvironmentReport Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
        
        With Rec_VouchMain
            '将网格中有效数据行写入单据表
            For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
                If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
                    Exit For
                End If
                .AddNew
                .Fields("ReportDate") = CDate(LrText(0).Text)                                                    '单据日期
                
                .Fields("Reporter") = Xtczy                                                                      '制单人
                .Fields("ItemId") = Trim(WglrGrid.TextMatrix(Rowjsq, 1))                                         '取样点
                .Fields("Result") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls)))             '检验结果
                .Fields("Remark") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)))             '备注
                .Update
            Next Rowjsq
            Lab_BillId.Caption = .Fields("ReportDate")
        End With
    End If
    
    
    Cw_DataEnvi.DataConnect.CommitTrans
    
    Sub_SaveBill = True
    Tsxx = "单据存盘完毕!"
    Call Xtxxts(Tsxx, 0, 4)
    
    '标识单据发生改动
    Bln_BillChange = True
    
    '设置单据改变后的状态
    Lab_OperStatus = "1"
    Call Sub_OperStatus("10")
    Rec_Query.Requery
    Rec_Query.Find "ReportDate='" & Trim(Lab_BillId.Caption) & "'"
    
    Exit Function
    
Swcwcl:       '数据存盘时出现错误
    Cw_DataEnvi.DataConnect.RollbackTrans
    With WglrGrid
        If Err.Number = -2147217887 Then
            Tsxx = "单据中第  " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条分录录入数据超出允许范围!"
            Call Xtxxts(Tsxx, 0, 1)
            Changelock = True
            .Select Rowjsq, Qslz
            WglrGrid.SetFocus
            Changelock = False
            Exit Function
        Else
            Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
            Call Xtxxts(Tsxx, 0, 1)
            Exit Function
        End If
    End With
    
Lrcwcl:        '录入错误处理(存盘前逐行有效性判断)
    With WglrGrid
        Call Xtxxts("(第 " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条单据分录)-" & Tsxx, 0, 1)
        Changelock = True
        .Select Rowjsq, Lrywlz
        WglrGrid.SetFocus
        Changelock = False
        Exit Function
    End With
    
End Function


'选择首张,上张,下张,末张
Private Sub Sub_First()             '首 张
    
    With Rec_Query
        If .RecordCount = 0 Then
            Exit Sub
        End If
        .MoveFirst
        Lab_BillId.Caption = .Fields("ReportDate")
        Call Sub_ShowBill
    End With
    
End Sub

Private Sub Sub_Prev()             '上 张
    
    With Rec_Query
        If .RecordCount = 0 Then
            Exit Sub
        End If
        If Not .BOF Then
            .MovePrevious
        End If
        If Not .BOF Then
            Lab_BillId.Caption = .Fields("ReportDate")
        Else
            .MoveNext
        End If
        Call Sub_ShowBill
    End With
    
End Sub

Private Sub Sub_Next()             '下 张
    With Rec_Query
        If .RecordCount = 0 Then
            Exit Sub
        End If
        If Not .EOF Then
            .MoveNext
        End If
        If Not .EOF Then
            Lab_BillId.Caption = .Fields("ReportDate")
        Else
            .MovePrevious
        End If
        Call Sub_ShowBill
    End With
    
End Sub

Private Sub Sub_Last()              '末 张
    
    With Rec_Query
        If .RecordCount = 0 Then
            Exit Sub
        End If
        .MoveLast
        Lab_BillId.Caption = .Fields("ReportDate")
        Call Sub_ShowBill
    End With
    
End Sub
    
'[>>===================以下为根据实际业务需要自定义过程区域=============================<<]




Private Sub Sub_FillGrid()
    Dim Rec_Temp As New ADODB.Recordset      '临时使用动态集
    Dim Jsqte As Long                        '临时使用计数器
    Sqlstr = "Select distinct ItemId,ItemName,stand From Qc_WorkEnvirItem Where Style='3' Order By ItemId"
    Set Rec_Temp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    If Rec_Temp.RecordCount > 0 Then                        '工作环境有检验项目
        With Rec_Temp
            Jsqte = WglrGrid.FixedRows
            Do While Not .EOF
                If Jsqte >= WglrGrid.Rows Then
                    WglrGrid.AddItem ""
                    WglrGrid.RowHeight(Jsqte) = Sjhgd
                End If
                WglrGrid.TextMatrix(Jsqte, 0) = "*"
                WglrGrid.TextMatrix(Jsqte, 1) = Trim(.Fields("ItemId") & "")
                WglrGrid.TextMatrix(Jsqte, Sydz("001", GridStr(), Szzls)) = Trim(.Fields("ItemName") & "")
                WglrGrid.TextMatrix(Jsqte, Sydz("002", GridStr(), Szzls)) = Trim(.Fields("stand") & "")
                .MoveNext
                Jsqte = Jsqte + 1
            Loop
            .MoveFirst
        End With
    
    End If
End Sub
'[>>===================以上为根据实际业务需要自定义过程区域=============================<<]

'===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
Private Sub Sub_AdjustGrid()
    
    '调 整 网 格
    With WglrGrid
        '加 1 保持一行录入行
        If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
            .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
            For Jsqte = .FixedRows To .Rows - 1
                .RowHeight(Jsqte) = Sjhgd
            Next Jsqte
        End If
        
        '判断是否有辅助行和录入行,如没有则加行
        Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
            .AddItem ""
            .RowHeight(.Rows - 1) = Sjhgd
        Loop
    
    End With
    
End Sub

Private Sub Lrzdbz()                                                      '录入字段帮助
    
    If Not Ydcommand.Visible Then
        Exit Sub
    End If
    
    With WglrGrid
        Valilock = True
        
        '处理通用部分
        Changelock = True        '调入另外窗体必须加锁
        Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
        Changelock = False
        
        If Len(Xtfhcs) <> 0 Then
            If GridInt(.Col, 7) = 0 Then
                Ydtext.Text = Xtfhcs
            Else
                Ydtext.Text = Xtfhcsfz
            End If
        End If
        
        Valilock = False
        If Ydtext.Visible Then
            Ydtext.SetFocus
        End If
    End With
    
End Sub



Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
    Call Cxxswbk
End Sub

Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
    Fun_Drfrmyxxpd = True
    With WglrGrid
        
        '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
        If Ydtext.Visible Or YdCombo.Visible Then
            Call Lrsjhx
            If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
                Fun_Drfrmyxxpd = False
                Exit Function
            End If
        End If
        
        '进行行有效性判断
        If Not Sjhzyxxpd(.Row) Then
            Fun_Drfrmyxxpd = False
            Exit Function
        End If
        
    End With
    
End Function



Private Sub WglrGrid_EnterCell()                                                 '显示当前数据行相关信息
    
    With WglrGrid
        If .Row >= .FixedR

⌨️ 快捷键说明

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