📄 productschemematerialform.frm
字号:
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 + -