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

📄

📁 VB开发的ERP系统
💻
📖 第 1 页 / 共 3 页
字号:
    Dim Zdlrqnr As String                           '字段录入修改前内容(用来判断内容是否修改)
    Dim Wbkbhlock As Boolean                        '文本框改变值锁
    Dim Changelock As Boolean                       '网格行列改变控制锁(用来区别用户改变.程序改变)
    Dim Gdtlock As Boolean                          '滚动条滚动控制(用来区别用户改变.程序改变)
    Dim Yxxpdlock As Boolean                        '字段有效性判断锁(内容不修改不需进行字段有效性判断)
    Dim Hyxxpdlock As Boolean                       '行有效性判断锁(字段内容不修改不需进行行有效性判断)
    Dim Valilock As Boolean                         '文本框失去焦点是否进行有效性控制(TRUE 为锁定*限用网格录入)
    Dim Shsfts As Boolean                           '删除记录行是否提示
    Dim Szzls As Integer                            '网格信息数组最大下标值(网格列数-1)
Private Sub Combo_KJQJ_Click()                      '会计科目
    PrivateYear = Mid(Trim(CStr(Combo_KJQJ.List(Combo_KJQJ.ListIndex))), 1, 4)
    PrivateMm = Right(Trim(CStr(Combo_KJQJ.List(Combo_KJQJ.ListIndex))), 2)
    If ShowBillLock = False Then
        Exit Sub
    End If
    Call ShowCostCollect            '显示数据
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)       '控制焦点转移
    Dim jdzygs As Integer
    jdzygs = 3
    Select Case KeyAscii
        Case vbKeyReturn
            If Kjjdzy(jdzygs) Then
            KeyAscii = 0
            End If
        Case 39           '屏蔽字符"'"
            KeyAscii = 0
    End Select
End Sub
Private Sub Form_Load()                              '窗体装入
    '初始化各种锁值
    Changelock = False             '网格行列改变控制锁
    Gdtlock = False                '滚动条滚动控制
    Yxxpdlock = True               '字段有效性判断锁
    Hyxxpdlock = True              '行有效性判断锁
    Wbkbhlock = False              '文本框内容改变锁
    ShowBillLock = False
    PrivateYear = Xtyear
    PrivateMm = Xtmm
    
    '报表主标题及报表编码
    ReportTitle = "生产成本汇总表"
    XtReportCode = "CB_CostCollect"
    Load Dyymctbl

    '调入网格
    GridCode = "CB_CostCollect"  '网格属性编码
    Call BzWgcsh(WglrGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
    
    Qslz = GridInf(1)
    Sjhgd = GridInf(2)
    Pmbcsjhs = GridInf(3)
    Fzxwghs = GridInf(4)
    Sfblbzkd = GridInf(5)
    Shsfts = GridInf(6)
    Sfxshjwg = GridInf(7)
    Szzls = WglrGrid.Cols - 1
    For jsqte = WglrGrid.FixedRows To WglrGrid.Rows - 1
        WglrGrid.RowHeight(jsqte) = Sjhgd
    Next jsqte
    Call Sub_FillPeriod(Combo_KJQJ, PrivateYear, PrivateMm)     '显示会计期间
    '判断是否为空
    SqlStr = "Select Count(*) From Cb_CostObject"
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
    If RecTemp.Fields(0) <= 0 Then
        Call Sub_OperStatus("10")
    Else
        ShowBillLock = True
    End If
    
    Call ShowCostCollect                                        '显示报表汇总数据
End Sub

Private Sub Form_Resize()
    On Error Resume Next
    With WglrGrid
        .Width = Me.Width - 160
        .Height = Me.Height - .Top - 400
    End With
    With Pic_Title
        .Width = Me.Width - 160
    End With
    
    GsToolbar.Left = Me.Width - GsToolbar.Width - 140
End Sub
Private Sub Form_Unload(Cancel As Integer)           '窗体卸载
    '卸载打印页面窗体
    Unload Dyymctbl
End Sub
Private Sub Sub_ShowBill(Index As Integer)           '到费用表中找此归集部门的费用是否存在,如不存在到对象结构中找
    If Index = 0 Then
        SqlStr = "Select * From Cb_Fn_CostCollect1(" + CStr(PrivateYear) + "," + CStr(PrivateMm) + ") Union  " _
                    & "Select '99','产品总成本','',0,0,0,0,0,0,0,Sum(B),Sum(ThmonCost),Sum(C),Sum(D),Sum(TotalCost)  " _
                    & "From Cb_Fn_CostCollect1(" + CStr(PrivateYear) + "," + CStr(PrivateMm) + ")"
   Else
        SqlStr = "Select * from Cb_V_CostCollect Where Year=" + CStr(PrivateYear) + " And Period=" + CStr(PrivateMm) + " Union " _
                    & "Select '99','','','产品总成本','',0,0,0,0,0,0,0,Sum(B),Sum(ThmonCost),Sum(C),Sum(D),Sum(TotalCost)  " _
                    & "From Cb_V_CostCollect Where Year=" + CStr(PrivateYear) + " And Period=" + CStr(PrivateMm) + ""
   End If
                
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
    With RecTemp
        WglrGrid.Clear 1
        If .EOF Then
            Exit Sub
        Else
            WglrGrid.Rows = .RecordCount + WglrGrid.FixedRows
           '[>>显示单据头
            jsqte = WglrGrid.FixedRows
            Do While Not .EOF
                If jsqte >= WglrGrid.Rows Then
                    WglrGrid.AddItem ""
                End If
                '[>>显示单据分录
                Call Jltcwg(RecTemp, jsqte)             '显示数据
                Call WriteCostCollect                   '写成本汇总
                
                If Trim(.Fields("ObjectCode")) = "99" Then
                    WglrGrid.Cell(flexcpBackColor, jsqte, 0, jsqte, WglrGrid.Cols - 1) = Lab_Color(0).BackColor
                End If
                '<<]
                WglrGrid.RowHeight(jsqte) = Sjhgd
                .MoveNext
                jsqte = jsqte + 1
            Loop
        End If
    End With
    RecTemp.Close
End Sub
Private Sub Jltcwg(Jlbrec As ADODB.Recordset, jsqte As Long)   '记录内容填充网格
    With Jlbrec
        WglrGrid.TextMatrix(jsqte, 0) = "*"
        WglrGrid.TextMatrix(jsqte, Sydz("001", GridStr(), Szzls)) = Trim(.Fields("ObjectName") & "")        '对象名称
        WglrGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = Trim(.Fields("UnitName") & "")          '单位名称
        WglrGrid.TextMatrix(jsqte, Sydz("003", GridStr(), Szzls)) = Trim(.Fields("Quantity") & "")          '数量
        WglrGrid.TextMatrix(jsqte, Sydz("004", GridStr(), Szzls)) = Trim(.Fields("TotalQuantity") & "")     '累计数量
        WglrGrid.TextMatrix(jsqte, Sydz("005", GridStr(), Szzls)) = Trim(.Fields("PlanCost") & "")          '计划成本
        WglrGrid.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = Trim(.Fields("ThmonUnitCost") & "")     '单位成本
        WglrGrid.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = Trim(.Fields("LYearAver") & "")         '上年平均
        WglrGrid.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = Trim(.Fields("TYearAver") & "")         '本年平均
        WglrGrid.TextMatrix(jsqte, Sydz("009", GridStr(), Szzls)) = Trim(.Fields("A") & "")
        WglrGrid.TextMatrix(jsqte, Sydz("010", GridStr(), Szzls)) = Trim(.Fields("B") & "")
        WglrGrid.TextMatrix(jsqte, Sydz("011", GridStr(), Szzls)) = Trim(.Fields("ThmonCost") & "")         '实际成本
        WglrGrid.TextMatrix(jsqte, Sydz("012", GridStr(), Szzls)) = Trim(.Fields("C") & "")
        WglrGrid.TextMatrix(jsqte, Sydz("013", GridStr(), Szzls)) = Trim(.Fields("D") & "")
        WglrGrid.TextMatrix(jsqte, Sydz("014", GridStr(), Szzls)) = Trim(.Fields("TotalCost") & "")         '累计成本
    End With
End Sub
Private Sub Tlb_Action_ButtonClick(ByVal Button As MSComctlLib.Button)     '用户点击工具条
     
    '屏蔽文本框,下拉组合框有效性判断,即在网格单元内录入数据时,点帮助信息等,不执行文本框等验证,即不执行YdText或YdCombo的LostFocus事件.
    Valilock = True
    
    '屏蔽网格失去焦点产生的有效性判断
    Changelock = True
    Select Case Button.Key
        Case "ymsz"                                          '页面设置
            Dyymctbl.Show 1
        Case "yl"                                            '预 览
            Call bbyl(True)
        Case "dy"                                            '打 印
            Call bbyl(False)
        Case "bz"                                            '帮 助
            Call F1bz
        Case "fh"                                            '退 出
            Unload Me
    End Select
    '解 锁
    Valilock = False
    Changelock = False
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)        '支持热键操作,更确切地讲,是工具栏热键
    If Shift = 2 Then   'Ctrl的位屏蔽值=2
        Select Case UCase(Chr(KeyCode))
            Case "P"                   'Ctrl+P 打印
                If Tlb_Action.Buttons("dy").Enabled Then Call bbyl(False)
        End Select
    End If
End Sub
Private Sub WglrGrid_EnterCell()                                    '显示当前数据行相关信息
    With WglrGrid
        If .Row >= .FixedRows Then
            Lab_Row = Trim(Str(.Row - .FixedRows + 1))
        End If
    End With
End Sub
Private Sub Sub_OperStatus(Str_Status As String)                                    '工具条依据不同状态所进行的变化
    With Tlb_Action
        Select Case Str_Status
            Case "10"   '浏览
                '工具条
                '.Buttons("dy").Enabled = False      '打印
                '.Buttons("yl").Enabled = False      '预览
            Case "11"   '浏览
            Case "30"   '修改
        End Select
    End With
End Sub

Private Sub GsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)   '表格格式设置(通用)
    Select Case Button.Key
        Case "bcgs"                              '保存表格格式
            Call Bcwggs(WglrGrid, GridCode, GridStr())
        Case "hfmrgs"                            '恢复默认格式
            Call Hfmrgs(WglrGrid, GridCode, GridStr())
        Case "szxsxm"                            '设置显示项目
            Call Szxsxm(WglrGrid, GridCode)
    End Select
End Sub
Private Sub bbyl(bbylte As Boolean)                                     '打印预览(通用)
    Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
    Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
    Bbxbtgs = 1                                  '报表小标题行数
    Bbbwhgs = 1                                  '报表表尾行数
    ReDim Bbxbt(1 To Bbxbtgs)
    ReDim bbxbtzzxs(1 To Bbxbtgs)
    If Bbbwhgs <> 0 Then
        ReDim Bbbwh(1 To Bbbwhgs)
        ReDim Bbbwhzzxs(1 To Bbbwhgs)
    End If
    Bbzbt = ReportTitle
    bbxbtzzxs(1) = 1                             '报表行组织形式(0-居左 1-居中 2-居右)
    
    '判断是否为空
    SqlStr = "Select Count(*) From Cb_CostObject"
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
    If RecTemp.Fields(0) <= 0 Then
        Bbxbt(1) = ""
    Else
        Bbxbt(1) = Mid(CStr(Combo_KJQJ.List(Combo_KJQJ.ListIndex)), 1, 4) + "年" + Right(CStr(Combo_KJQJ.List(Combo_KJQJ.ListIndex)), 2) + "月"
    End If
    
    Call Scyxsjb(WglrGrid)                       '生成报表数据
    Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
    If Not bbylte Then
        Unload DY_Tybbyldy
    End If
End Sub
Sub WriteCostCollect()                                                  '写数据汇总
    With Cxnrrec
        If .State = 1 Then .Close
        .Open "Select * From Cb_ObjectComplete Where ObjectCode='" + Trim(RecTemp.Fields("ObjectCode")) + "' And Year=" + CStr(PrivateYear) + " And Period=" + CStr(PrivateMm) + "", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
        If Not .EOF Then
        .Fields("ThmonUnitCost") = Trim(RecTemp.Fields("ThmonUnitCost"))
        .Fields("ThmonCost") = Trim(RecTemp.Fields("ThmonCost"))
        .Fields("TotalQuantity") = Trim(RecTemp.Fields("TotalQuantity"))
        .Fields("TotalCost") = Trim(RecTemp.Fields("TotalCost"))
        .Fields("TYearAver") = Trim(RecTemp.Fields("TYearAver"))
        .Update
        End If
    End With
End Sub
Sub ShowCostCollect()                                                   '显示报表汇总数据
    '会计日历
    SqlStr = "Select Count(*) From gy_kjrlb where kjyear='" + Trim(Str(PrivateYear)) + "' And Period='" + CStr(PrivateMm) + "' " _
                    & "And CwzzJzbz='1'"
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
    If RecTemp.Fields(0) > 0 Then
        '显示数据
        Call Sub_ShowBill(1)
    Else
        '显示数据
        Call Sub_ShowBill(0)
    End If
End Sub

⌨️ 快捷键说明

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