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

📄 productschemematerialform.frm

📁 即时通讯
💻 FRM
📖 第 1 页 / 共 3 页
字号:
            Object.Visible         =   0   'False
            Caption         =   "查询"
            Key             =   "cx"
            ImageKey        =   "cx"
         EndProperty
         BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
            Object.Visible         =   0   'False
            Caption         =   "打印"
            ImageKey        =   "dy"
         EndProperty
         BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
            Caption         =   "刷新"
            Key             =   "sx"
            ImageKey        =   "sx"
         EndProperty
         BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
            Object.Visible         =   0   'False
            Style           =   3
         EndProperty
         BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
            Caption         =   "退出"
            Key             =   "tc"
            ImageKey        =   "tc"
         EndProperty
      EndProperty
      BorderStyle     =   1
      Begin VB.TextBox Text1 
         Alignment       =   1  'Right Justify
         Appearance      =   0  'Flat
         ForeColor       =   &H80000006&
         Height          =   270
         Left            =   8280
         TabIndex        =   11
         Text            =   "Text1"
         Top             =   120
         Width           =   975
      End
      Begin VB.CheckBox Check1 
         Caption         =   "全部物料"
         Height          =   375
         Left            =   3600
         TabIndex        =   10
         Top             =   120
         Width           =   1095
      End
   End
   Begin VB.Menu PM_productBill 
      Caption         =   "制作生产单"
      Visible         =   0   'False
      Begin VB.Menu m_partProductManager 
         Caption         =   "生产管理"
      End
      Begin VB.Menu m_productBill 
         Caption         =   "生产单"
      End
      Begin VB.Menu m_cooperateBill 
         Caption         =   "外协单"
      End
      Begin VB.Menu m_produceList 
         Caption         =   "生产单列表"
      End
      Begin VB.Menu m_cooperateList 
         Caption         =   "外协单列表"
      End
      Begin VB.Menu m_setFinishNum 
         Caption         =   "信息"
      End
   End
End
Attribute VB_Name = "ProductSchemeMaterialForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'**************************************
'*    模 块 名 称 :生产计划单物料显示窗体
'*    功 能 描 述 :显示和管理生产计划单的物料,可以显示生产计划单的各种原料及物料
'*    程序员姓名  : 陈齐国
'*    最后修改人  : 陈齐国
'*    最后修改时间:2005/09/7
'**************************************
Option Explicit

Public m_productSchemeId As String                 ' 生产计划单的编号
Public m_schemeNum As Double                      ' 计划生产产品的数量
Public m_schemeState As String                     ' 生产计划单的状态

Private m_bomDAO As PS_BomDAO                      ' 操作生产计划单BOM表的类
Private m_dao As ProductSchemeDAO                  ' 生产计划单数据库操作类
Private m_recordset As ADODB.Recordset             ' 数据操作数据集对象

Private m_listType As String                      ' 当前显示的物料列表类型
                                                   ' 0 全 1 原料 2 零件
'**************************************
'*    功 能 描 述 :设置完成数量
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub C_set_Click()
    Dim ret As Boolean
    
    If Trim(HFG_materialList.TextMatrix(HFG_materialList.row, 0)) <> "" And _
        Trim(T_setToNum.text) <> "" Then
        ret = m_dao.SetPsMaterialNum(m_recordset, Trim(HFG_materialList.TextMatrix(HFG_materialList.row, 0)), _
                               CDbl(T_setToNum.text))
        If ret Then
            HFG_materialList.TextMatrix(HFG_materialList.row, 9) = T_setToNum.text
        End If
    End If
End Sub
'**************************************
'*    功 能 描 述 :改变显示选项时刷列表
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub Check1_Click()
    refreshlist
End Sub

Private Sub Form_Load()
    Set m_bomDAO = New PS_BomDAO
    Set m_dao = New ProductSchemeDAO
    Set m_recordset = New ADODB.Recordset
    m_listType = "2"      ' 显示零件的列表
    
    Me.caption = "生产计划单物料管理"
    Me.Height = 5475
    Me.Width = 9525
    SetToCenter Me
    
    F_setFinishNum.Visible = False
    
    
    refreshlist
End Sub
'**************************************
'*    功 能 描 述 :刷新列表的标题栏
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub RefreshListTitle()
    HFG_materialList.Cols = 14

    HFG_materialList.TextMatrix(0, 0) = "psMaterialId"
    HFG_materialList.TextMatrix(0, 1) = "psId"
    HFG_materialList.TextMatrix(0, 2) = "物料名称"
    HFG_materialList.TextMatrix(0, 3) = "工序名称"
    HFG_materialList.TextMatrix(0, 4) = "工 序 费"
    HFG_materialList.TextMatrix(0, 5) = "总工序费"
    HFG_materialList.TextMatrix(0, 6) = "成本单价"
    HFG_materialList.TextMatrix(0, 7) = "总 成 本"
    HFG_materialList.TextMatrix(0, 8) = "数    量"
    HFG_materialList.TextMatrix(0, 9) = "完成数量"
    HFG_materialList.TextMatrix(0, 10) = "bomId"
    HFG_materialList.TextMatrix(0, 11) = "materialType"
    HFG_materialList.TextMatrix(0, 12) = "materialId"
    HFG_materialList.TextMatrix(0, 13) = "已下单数量"
    
                                                         '设置列对齐方式  7-右对齐 5-居中对齐 2-左对齐
    HFG_materialList.ColAlignment(0) = 2
    HFG_materialList.ColAlignment(1) = 2
    HFG_materialList.ColAlignment(2) = 2
    HFG_materialList.ColAlignment(3) = 2
    HFG_materialList.ColAlignment(4) = 8
    HFG_materialList.ColAlignment(5) = 8
    HFG_materialList.ColAlignment(6) = 8
    HFG_materialList.ColAlignment(7) = 8
    HFG_materialList.ColAlignment(8) = 8
    HFG_materialList.ColAlignment(9) = 8
    HFG_materialList.ColAlignment(10) = 2
    HFG_materialList.ColAlignment(11) = 8
    HFG_materialList.ColAlignment(12) = 2
    HFG_materialList.ColAlignment(13) = 8
    
    HFG_materialList.ColWidth(0) = 1
    HFG_materialList.ColWidth(1) = 1
    HFG_materialList.ColWidth(10) = 1
    HFG_materialList.ColWidth(11) = 1
    HFG_materialList.ColWidth(12) = 1

End Sub
'**************************************
'*    功 能 描 述 :建立物料清单
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub CreateSchemeMaterial()
    Dim ret As Boolean
    Dim newBomId As String
    Dim sourceBomId As String
    
    m_dao.DeletePsMaterial m_recordset, m_productSchemeId
    
    ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)   ' 找到生产计划单的顶级物料
    
    ' 重新计算生产计划单BOM的成本
    m_bomDAO.CalBomCost Trim(m_recordset.Fields("bomId"))
    
    If ret Then                            ' 把本条记录存在计划单的物料清单中
        MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans
        On Error GoTo ENDADDMATERIAL
        With m_recordset
            newBomId = m_dao.NewSchemeMaterial(m_recordset, _
                m_productSchemeId, _
                Trim(.Fields("name")), _
                Trim(.Fields("processName")), _
                CDbl(.Fields("fee")) * m_schemeNum, _
                CDbl(.Fields("fee")), _
                CDbl(.Fields("bomCost")), _
                CDbl(.Fields("bomCost")) * m_schemeNum, _
                m_schemeNum, _
                0, _
                Trim(.Fields("bomId")), _
                Trim(.Fields("materialType")), _
                Trim(.Fields("materialId")), _
                0)
        
        
        FindMaterial (Trim(.Fields("bomId"))), CDbl(m_schemeNum)
        End With
        MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans
        GoTo ENDSUB
ENDADDMATERIAL:
        MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans
        MainForm.g_msgText = "本生产计划单的物料加载时出错,可能是物料数量太大的原因!"
        HMsgBox MainForm.g_msgText, 0, 1
    Else
        MainForm.g_msgText = "本计划单产品的BOM数据不存在,请先建立!"
        HMsgBox MainForm.g_msgText, 0, 1
'        Unload Me
        Exit Sub
    End If
ENDSUB:
    m_recordset.Close
End Sub
'**************************************
'*    功 能 描 述 :从生产计划单中计算出此生产计划单所需的各种原料及数量
'*                 从一个BOM的子BOM中查找
'*    输 入 参 数 :bomId  -  要找的BOM树的上一级节点的BOM   ID
'*                 number -  生产此种物料其上一级的数量
'*    输 出 能 数 :无
'**************************************
Private Sub FindMaterial(bomId As String, number As Double)
    Dim ret As Boolean
    Dim sourceRec As ADODB.Recordset     ' 数据操作数据集对象
    Dim targetRec As ADODB.Recordset     ' 目标数据集
    Dim newpsMaterialId As String               ' 生产计划单物料编号
    
    Dim schemeNum As Double              ' 计划生产的数量
    Dim usableNum As Double              ' 一种物料当前仓库中的可用数量
    Dim needProductNum As Double         ' 还需要生产的数量
    Dim madeBillNum As Double            ' 标志已下单的数量
    
    Set sourceRec = New ADODB.Recordset
    Set targetRec = New ADODB.Recordset
    
    ret = m_bomDAO.FindDetailBom(sourceRec, bomId)   ' 到数据库查找其所有子BOM列表
    
    If ret Then                 ' 如果找到明细则增加到树中
        With sourceRec
            Do While Not .EOF
                schemeNum = number * CDbl(.Fields("quantity"))
                usableNum = m_dao.GetPositionUsableNum(Trim(.Fields("materialId")))
                needProductNum = schemeNum - usableNum
                If needProductNum < 0 Then
                    needProductNum = 0
                End If
                
                madeBillNum = schemeNum - needProductNum
                '[>>自定义填充内容
                newpsMaterialId = m_dao.NewSchemeMaterial(targetRec, _
                    m_productSchemeId, _
                    Trim(.Fields("name")), _
                    Trim(.Fields("processName")), _
                    CDbl(.Fields("fee")) * CDbl(.Fields("quantity")) * number, _
                    CDbl(.Fields("fee")), _
                    CDbl(.Fields("bomCost")), _
                    CDbl(.Fields("bomCost")) * CDbl(.Fields("quantity")) * number, _
                    CDbl(.Fields("quantity")) * number, _
                    CInt(madeBillNum), _
                    Trim(.Fields("bomId")), _
                    Trim(.Fields("materialType")), _
                    Trim(.Fields("materialId")), _
                    CInt(madeBillNum))
                                   
                FindMaterial Trim(.Fields("bomId")), _
                             needProductNum
                '<<]
         
                '动态集指针加1,同时将计数器加1(Fixed)
                .MoveNext
            Loop
        End With
    End If
    sourceRec.Close
End Sub

Private Sub Form_Resize()
        HFG_materialList.Height = Me.Height - 1400
        HFG_materialList.Width = Me.Width - 350
    
'    Image1.Stretch = False
    
    If (HFG_materialList.Height > HFG_materialList.Height - 300) Or (HFG_materialList.Width > HFG_materialList.Width - 200) Then
        HFG_materialList.Height = HFG_materialList.Height + 400

⌨️ 快捷键说明

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