📄 ps_bomsingleform.frm
字号:
'
' m_recordset.Close
' End If
'
' ' 读出选中节点的所有子节点,并显示在列表中
' ret = m_bomDAO.FindDetailBom(m_recordset, Trim(Node.Tag))
' HFG_detail.clear
' HFG_detail.Rows = 2
' RefreshListTitle
' If ret Then
' With m_recordset
' ' HFG_detail.Rows = m_recordset.RecordCount
' currentrow = 1
' Do While Not .EOF
' If currentrow > HFG_detail.Rows - 1 Then
' HFG_detail.AddItem ""
' End If
'
' '[>>自定义填充内容
' HFG_detail.TextMatrix(currentrow, 0) = "Y"
' HFG_detail.TextMatrix(currentrow, 1) = Trim(.Fields("name"))
' HFG_detail.TextMatrix(currentrow, 2) = Trim(.Fields("processName"))
' HFG_detail.TextMatrix(currentrow, 3) = Trim(.Fields("fee"))
' HFG_detail.TextMatrix(currentrow, 4) = Trim(.Fields("bomCost"))
' HFG_detail.TextMatrix(currentrow, 5) = Trim(.Fields("quantity")) ' 明细的数量
' HFG_detail.TextMatrix(currentrow, 6) = Trim(.Fields("description"))
' HFG_detail.TextMatrix(currentrow, 7) = Trim(.Fields("bomId")) ' 当为空时为新增BOM表,不空为修改
' HFG_detail.TextMatrix(currentrow, 8) = Trim(.Fields("bomDetailId")) ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
' HFG_detail.TextMatrix(currentrow, 9) = Trim(.Fields("materialType")) ' 0-原料 1-零件 2-产品
' HFG_detail.TextMatrix(currentrow, 10) = Trim(.Fields("materialId"))
' '<<]
' '设置数据行高度(Fixed)
' HFG_detail.RowHeight(currentrow) = 200
'
' '动态集指针加1,同时将计数器加1(Fixed)
' .MoveNext
' currentrow = currentrow + 1
' Loop
' End With
' ListToTextbox
' End If
' ListToTextbox
' m_recordset.Close
'
' m_currentLevel = JudgeLevel()
'
' ReadMaterialFinishMsg ' 读取与选中BOM对应的物料的完成情况
End Sub
'======================================================================================================================
'**************************************
'* 功 能 描 述 :读取与选中BOM对应的物料的完成情况
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function ReadMaterialFinishMsg()
Dim ret As Boolean
ret = m_productSchemeDAO.FindSchemeMaterialByPsidBomId(m_recordset, _
m_productSchemeId, _
Trim(TV_bomManage.SelectedItem.Tag))
If ret Then
T_requirement.text = Trim(m_recordset.Fields("quantity"))
T_requirement.Tag = Trim(m_recordset.Fields("psMaterialId"))
T_hadFinish.text = Trim(m_recordset.Fields("finish"))
T_setToNum.text = "0"
End If
m_recordset.Close
End Function
'**************************************
'* 功 能 描 述 :装载当前生产计划单的BOM树荫
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub LoadBomData()
Dim ret As Boolean
ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)
If ret Then ' 当前计划单的BOM数据己存在
CreateLastNode ' 新建树的总结点
TV_bomManage.Nodes(1).Tag = Trim(m_recordset.Fields("bomId")) ' 保存bom的ID进入树结点
TV_bomManage.Nodes(1).text = Trim(m_recordset.Fields("name"))
TV_bomManage.Nodes(1).Selected = True
ReadChildrenNodes Trim(m_recordset.Fields("bomId")), TV_bomManage.Nodes(1)
m_recordset.Close
Else ' 当前计划单的BOM数据不存在
m_recordset.Close
LoadProductionBom
ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)
If Not ret Then
Exit Sub
End If
CreateLastNode ' 新建树的总结点
TV_bomManage.Nodes(1).Tag = Trim(m_recordset.Fields("bomId")) ' 保存bom的ID进入树结点
TV_bomManage.Nodes(1).text = Trim(m_recordset.Fields("name"))
TV_bomManage.Nodes(1).Selected = True
ReadChildrenNodes Trim(m_recordset.Fields("bomId")), TV_bomManage.Nodes(1)
m_recordset.Close
End If
TV_bomManage_NodeClick TV_bomManage.Nodes(1)
End Sub
'**************************************
'* 功 能 描 述 :从产品BOM中载入BOM数据,如果生产计划单BOM数据已存在则删除
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub LoadProductionBom()
Dim ret As Boolean
Dim sourceBomId As String
ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)
If ret Then ' 如果找到则删除生产计划单中的BOM数据
m_bomDAO.DeleteBomBySchemeId m_recordset, m_productSchemeId
End If
m_recordset.Close
' 找到BOM表中产品的BOM记录
ret = m_productionBomDAO.FindByMaterial(m_recordset, m_productionId, 2)
If Not ret Then
MainForm.g_msgText = "本计划单产品的BOM结构不存在,请先建立!"
HMsgBox MainForm.g_msgText, 0, 1
m_recordset.Close
Exit Sub
Else
sourceBomId = Trim(m_recordset.Fields("bomId"))
m_recordset.Close
End If
' 根据物料BOMID新建生产BOM及其子BOM
CreatPsBomByBomId sourceBomId
End Sub
'**************************************
'* 功 能 描 述 :根据物料BOM ID 将BOM数据复制到生产计划单BOM表中
'* 输 入 参 数 :无
'* 输 出 能 数 :新建的生产计划单BOM记录ID
'**************************************
Private Function CreatPsBomByBomId(sourceBomId As String) As String
Dim recSet As ADODB.Recordset ' 数据集对象
Dim ret As Boolean
Dim newBomId As String ' 生产计划单中BOM记录的ID
Set recSet = New ADODB.Recordset
' 找到BOM表中的BOM记录
ret = m_productionBomDAO.FindById(recSet, sourceBomId)
' 新增生产计划单BOM记录
newBomId = m_bomDAO.NewBom(recSet, _
Trim(recSet.Fields("name")), _
Trim(recSet.Fields("description")), _
CDbl(recSet.Fields("fee")), _
Trim(recSet.Fields("processName")), _
CDbl(recSet.Fields("bomCost")), _
Trim(recSet.Fields("materialId")), _
Trim(recSet.Fields("materialType")), _
Trim(m_productSchemeId), _
Trim(recSet.Fields("relatePartId")))
MoveBomData sourceBomId, newBomId
Set recSet = Nothing
CreatPsBomByBomId = newBomId
End Function
'**************************************
'* 功 能 描 述 :从产品BOM表中把BOM数据复制到生产计划单BOM表中
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub MoveBomData(bomId As String, targetBomId As String)
Dim ret As Boolean
Dim sourceRec As ADODB.Recordset ' 数据操作数据集对象
Dim targetRec As ADODB.Recordset ' 目标数据集
Dim newBomId As String ' 新生成的BOM的ID号
Set sourceRec = New ADODB.Recordset
Set targetRec = New ADODB.Recordset
ret = m_productionBomDAO.FindDetailBom(sourceRec, bomId) ' 到数据库查找其所有子BOM列表
If ret Then ' 如果找到明细则增加到树中
With sourceRec
Do While Not .EOF
'[>>自定义填充内容
newBomId = m_bomDAO.NewBom(targetRec, _
Trim(.Fields("name")), _
Trim(.Fields("description")), _
CDbl(.Fields("fee")), _
Trim(.Fields("processName")), _
CDbl(.Fields("bomCost")), _
Trim(.Fields("materialId")), _
Trim(.Fields("materialType")), _
Trim(m_productSchemeId), _
Trim(.Fields("relatePartId")))
m_bomDAO.NewBomDetail targetRec, targetBomId, newBomId, CInt(.Fields("quantity"))
MoveBomData Trim(.Fields("bomId")), newBomId
'<<]
'动态集指针加1,同时将计数器加1(Fixed)
.MoveNext
Loop
End With
End If
sourceRec.Close
' Unload rec
End Sub
'**************************************
'* 功 能 描 述 :从BOM表中删除一个BOM节点及其子节点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub DeleteBomNode(bomId As String)
'
Dim ret As Boolean
DeleteSubBom bomId
m_bomDAO.DeleteBom m_recordset, bomId
' 删除与此BOM节点相联的BOM明细节点
m_bomDAO.DeleteBomDetailByBom m_recordset, bomId
End Sub
'**************************************
'* 功 能 描 述 :删除BOM表中的子节点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub DeleteSubBom(bomId As String)
Dim ret As Boolean
Dim rec As ADODB.Recordset ' 数据操作数据集对象
Set rec = New ADODB.Recordset
ret = m_bomDAO.FindDetailBom(rec, bomId) ' 到数据库查找其所有子BOM列表
If ret Then ' 如果找到明细则增加到树中
With rec
Do While Not .EOF
'[>>自定义填充内容
DeleteSubBom Trim(.Fields("bomId"))
m_bomDAO.DeleteBom rec, Trim(.Fields("bomId"))
m_bomDAO.DeleteBomDetail rec, Trim(.Fields("bomDetailId"))
'<<]
'动态集指针加1,同时将计数器加1(Fixed)
.MoveNext
Loop
End With
End If
rec.Close
Set rec = Nothing
End Sub
'**************************************
'* 功 能 描 述 :判断当前选中的节点是第几层
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function JudgeLevel() As Integer
Dim level As Integer
Dim temp As Node
level = 1
Set temp = TV_bomManage.SelectedItem
Do While temp <> TV_bomManage.SelectedItem.Root
Set temp = temp.Parent
level = level + 1
Loop
JudgeLevel = level
End Function
'**************************************
'* 功 能 描 述 :根据物料的ID判断当前物料在物料明细列表中是否存在
'* 输 入 参 数 :materialId - 物产ID
'* 输 出 能 数 :true - 已存在
'* false - 存在
'**************************************
Private Function ExistInList(materialId As String) As Boolean
Dim i As Integer ' 循环变量
ExistInList = False
For i = 1 To HFG_detail.Rows - 1
If Trim(HFG_detail.TextMatrix(i, 10)) = Trim(materialId) Then
ExistInList = True
End If
Next i
End Function
'**************************************
'* 功 能 描 述 :根据物料的ID找到当前物料的默认供应商次料,并显示
'* 输 入 参 数 :materialId - 物产ID
'* 输 出 能 数 :true - 已存在
'* false - 存在
'**************************************
Private Function GetMaterialFirstSupplier(materialId As String) As Boolean
Dim ret As Boolean
Dim bsdao As New BomSupplierRelationDAO ' 物料供应关系数据库操作类
Dim recSet As New ADODB.Recordset ' 查询结果数据集
ret = bsdao.GetMaterialFirstSupplier(recSet, materialId)
If ret Then
Text1.text = Trim(recSet.Fields("supplierName") & " ")
' T_suplierName.Tag = Trim(m_recordset.Fields("supplierId"))
' T_superinrtendent.text = Trim(m_recordset.Fields("SuperInrtendent"))
' T_tell.text = Trim(m_recordset.Fields("Phone"))
' T_address.text = Trim(m_recordset.Fields("Address"))
recSet.Close
Else
Text1.text = " "
End If
Set recSet = Nothing
Set bsdao = Nothing
GetMaterialFirstSupplier = ret
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -