📄 bomsinglemform.frm
字号:
HFG_detail.TextMatrix(HFG_detail.row, 6) = Trim("")
' HFG_detail.TextMatrix(HFG_detail.row, 7) = Trim("") ' 当为空时为新增BOM表,不空为修改
' HFG_detail.TextMatrix(HFG_detail.Row, 8) = "" ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
HFG_detail.TextMatrix(HFG_detail.row, 9) = "3" ' 0-原料 1-零件 2-产品 3-工序
HFG_detail.TextMatrix(HFG_detail.row, 10) = bomprocessid
HFG_detail.TextMatrix(HFG_detail.row, 11) = Trim(m_parentBom.relatePartId) ' 相关零件
Else
HFG_detail.TextMatrix(HFG_detail.row, 0) = "Y"
HFG_detail.TextMatrix(HFG_detail.row, 1) = bomName
HFG_detail.TextMatrix(HFG_detail.row, 2) = Trim(.Fields("工序名称"))
HFG_detail.TextMatrix(HFG_detail.row, 3) = Trim("0")
HFG_detail.TextMatrix(HFG_detail.row, 4) = Trim("0")
' HFG_detail.TextMatrix(HFG_detail.Row, 5) = "数量" ' 明细的数量
HFG_detail.TextMatrix(HFG_detail.row, 6) = Trim("")
HFG_detail.TextMatrix(HFG_detail.row, 7) = Trim("") ' 当为空时为新增BOM表,不空为修改
' HFG_detail.TextMatrix(HFG_detail.Row, 8) = "" ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
HFG_detail.TextMatrix(HFG_detail.row, 9) = "3" ' 0-原料 1-零件 2-产品 3-工序
HFG_detail.TextMatrix(HFG_detail.row, 10) = bomprocessid
HFG_detail.TextMatrix(HFG_detail.row, 11) = Trim(m_parentBom.relatePartId) ' 相关零件
End If
End With
End If
m_recordset.Close
ListToTextbox
T_ProcessName.Enabled = False
End Sub
Private Sub m_selectProduction_Click()
' 选择一种产品
Dim qf As New QueryFom
qf.m_currentQuery = QUERY_PRODUCTION1
qf.show vbModal
Set qf = Nothing
SelectedProduction ' 调用选择了产品后的算函数
End Sub
'**************************************
'* 功 能 描 述 :当用户选选项择一个产品时的处理函数
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function SelectedProduction()
Dim ret As Boolean
' 如果此原料已有BOM记录,则调出些条BOM的信息
ret = m_bomDAO.FindByMaterial(m_recordset, _
MainForm.g_application.m_queryResultId, _
"2")
If ret Then ' 找到了BOM记录
' 把选择的原料的BOM资料读出来显示在界面
With m_recordset
HFG_detail.TextMatrix(HFG_detail.row, 0) = "Y"
HFG_detail.TextMatrix(HFG_detail.row, 1) = Trim(.Fields("name"))
HFG_detail.TextMatrix(HFG_detail.row, 2) = Trim(.Fields("processName"))
HFG_detail.TextMatrix(HFG_detail.row, 3) = Trim(.Fields("fee"))
HFG_detail.TextMatrix(HFG_detail.row, 4) = Trim(.Fields("bomCost"))
' HFG_detail.TextMatrix(HFG_detail.Row, 5) = "数量" ' 明细的数量
HFG_detail.TextMatrix(HFG_detail.row, 6) = Trim(.Fields("description"))
HFG_detail.TextMatrix(HFG_detail.row, 7) = Trim(.Fields("bomId")) ' 当为空时为新增BOM表,不空为修改
' HFG_detail.TextMatrix(HFG_detail.Row, 8) = "" ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
HFG_detail.TextMatrix(HFG_detail.row, 9) = "2" ' 0-原料 1-零件 2-产品 3 - 工序
HFG_detail.TextMatrix(HFG_detail.row, 10) = _
MainForm.g_application.m_queryResultId
End With
m_recordset.Close
C_modify_Click ' 显示产品的BOM树
Else ' 没找到BOM记录 ,查找物料记录
m_recordset.Close
ret = m_bomDAO.FindMaterial(m_recordset, _
MainForm.g_application.m_queryResultId, _
"2")
If ret Then
' 把选择的原料的资料读出来显示在界面
With m_recordset
HFG_detail.TextMatrix(HFG_detail.row, 0) = "Y"
HFG_detail.TextMatrix(HFG_detail.row, 1) = Trim(.Fields("materialName"))
HFG_detail.TextMatrix(HFG_detail.row, 2) = Trim("")
HFG_detail.TextMatrix(HFG_detail.row, 3) = Trim("0")
HFG_detail.TextMatrix(HFG_detail.row, 4) = Trim("0")
' HFG_detail.TextMatrix(HFG_detail.Row, 5) = "数量" ' 明细的数量
HFG_detail.TextMatrix(HFG_detail.row, 6) = Trim("")
HFG_detail.TextMatrix(HFG_detail.row, 7) = Trim("") ' 当为空时为新增BOM表,不空为修改
' HFG_detail.TextMatrix(HFG_detail.Row, 8) = "" ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
HFG_detail.TextMatrix(HFG_detail.row, 9) = "2" ' 0-原料 1-零件 2-产品
HFG_detail.TextMatrix(HFG_detail.row, 10) = _
MainForm.g_application.m_queryResultId
End With
End If
m_recordset.Close
End If
ListToTextbox
End Function
Private Sub T_bomCost_Change()
Call OnTextChanged
End Sub
'Private Sub T_bomCost_KeyPress(KeyAscii As Integer)
' InputFieldLimit T_bomCost, 5, KeyAscii
'End Sub
Private Sub T_fee_Change()
Call OnTextChanged
End Sub
'Private Sub T_fee_KeyPress(KeyAscii As Integer)
' InputFieldLimit T_fee, 5, KeyAscii
'End Sub
Private Sub T_memo_Change()
Call OnTextChanged
End Sub
Private Sub T_name_Change()
Call OnTextChanged
End Sub
Private Sub T_name_Click()
MsgBox "click"
End Sub
Private Sub T_number_Change()
Call OnTextChanged
End Sub
Private Sub T_number_KeyPress(KeyAscii As Integer)
InputFieldLimit T_number, 6, KeyAscii
End Sub
Private Sub T_ProcessName_Change()
Call OnTextChanged
End Sub
Private Sub TsLabel_Click(Index As Integer)
If Index = 1 Then
Dim partMsg As New partsingleform ' 零件查看窗体的调用
If Trim(HFG_detail.TextMatrix(HFG_detail.row, 9)) = 1 Then
If yhqxpd(MainForm.g_application.m_userId, Trim(str(PART_MODIFY))) Then
partMsg.m_operatorType = 1 ' 修改
Else
partMsg.m_operatorType = 2 ' 查看
End If
partMsg.m_partId = Trim(HFG_detail.TextMatrix(HFG_detail.row, 10))
partMsg.show vbModal
End If
Set partMsg = Nothing
End If
End Sub
Private Sub TV_bomManage_GotFocus()
' MsgBox "ss"
End Sub
'**************************************
'* 功 能 描 述 :操作树的点击操作
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub TV_bomManage_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button And vbRightButton Then
PopupMenu PM_treeOperator
End If
End Sub
'**************************************
'* 功 能 描 述 :当输入框中的数据修改时的处理函数
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub OnTextChanged()
If m_onTextChange Then
HFG_detail.TextMatrix(HFG_detail.row, 1) = Trim(T_name.text)
HFG_detail.TextMatrix(HFG_detail.row, 2) = Trim(T_ProcessName.text)
HFG_detail.TextMatrix(HFG_detail.row, 3) = Replace(Trim(T_fee.text), "¥", "")
HFG_detail.TextMatrix(HFG_detail.row, 4) = Replace(Trim(T_bomCost.text), "¥", "")
HFG_detail.TextMatrix(HFG_detail.row, 5) = Trim(T_number.text)
HFG_detail.TextMatrix(HFG_detail.row, 6) = Trim(T_memo.text)
StatMaterialList
End If
End Sub
'**************************************
'* 功 能 描 述 :把list中的一条记录提取到各个TEXTBOX中去
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub ListToTextbox()
m_onTextChange = False
T_name.text = Trim(HFG_detail.TextMatrix(HFG_detail.row, 1))
T_ProcessName.text = Trim(HFG_detail.TextMatrix(HFG_detail.row, 2))
T_fee.text = "¥" & Trim(HFG_detail.TextMatrix(HFG_detail.row, 3))
T_bomCost.text = "¥" & Trim(HFG_detail.TextMatrix(HFG_detail.row, 4))
T_number.text = Trim(HFG_detail.TextMatrix(HFG_detail.row, 5))
T_memo.text = Trim(HFG_detail.TextMatrix(HFG_detail.row, 6))
GetMaterialFirstSupplier Trim(HFG_detail.TextMatrix(HFG_detail.row, 10))
' 改变BOM名称的显示COLOR
If Trim(HFG_detail.TextMatrix(HFG_detail.row, 9)) = 1 Then ' 零件 蓝色
TsLabel(8).Visible = True
If Trim(HFG_detail.TextMatrix(HFG_detail.row, 7)) = "" Then
TsLabel(8).caption = "NB"
Else
If m_bomDAO.CheckBomSupplier(Trim(HFG_detail.TextMatrix(HFG_detail.row, 7))) Then
TsLabel(8).caption = "BF"
Else
TsLabel(8).caption = "BS"
End If
End If
TsLabel(1).ForeColor = &HFF0000
Else ' 非零件 黑色
TsLabel(8).Visible = False
TsLabel(1).ForeColor = &H80000012
End If
m_onTextChange = True
End Sub
'**************************************
'* 功 能 描 述 :把HFG_detail中的子BOM列表放入数据库中及树中
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub SaveListToTree()
Dim i As Integer ' 循环变量
Dim id As String ' 记录的ID
Dim ret As Boolean
ClearSubTree
' 把列表中的数据保存到数据库中,并把结点加入到树中
If m_currentLevel = 1 Or m_currentLevel = 0 Then ' 根结点处理
ret = Check(0, 1)
If ret = False Then
GoTo EXITSUB
End If
If Trim(HFG_detail.TextMatrix(1, 7)) = "" Then ' 如果要新增BOM记录
id = m_bomDAO.NewBom(m_recordset, _
Trim(HFG_detail.TextMatrix(1, 1)), _
Trim(HFG_detail.TextMatrix(1, 6)), _
CDbl(HFG_detail.TextMatrix(1, 3)), _
Trim(HFG_detail.TextMatrix(1, 2)), _
CDbl(HFG_detail.TextMatrix(1, 4)), _
Trim(HFG_detail.TextMatrix(1, 10)), _
Trim(HFG_detail.TextMatrix(1, 9)), _
Trim(HFG_detail.TextMatrix(1, 11)))
Else ' 修改BOM记录
id = Trim(HFG_detail.TextMatrix(1, 7))
ret = m_bomDAO.ModifyBom(m_recordset, _
Trim(HFG_detail.TextMatrix(1, 1)), _
Trim(HFG_detail.TextMatrix(1, 6)), _
CDbl(HFG_detail.TextMatrix(1, 3)), _
Trim(HFG_detail.TextMatrix(1, 2)), _
CDbl(HFG_detail.TextMatrix(1, 4)), _
Trim(HFG_detail.TextMatrix(1, 10)), _
Trim(HFG_detail.TextMatrix(1, 9)), _
id, _
Trim(HFG_detail.TextMatrix(1, 11)))
End If
If id <> "" Then ' 新增BOM表成功
CreateLastNode ' 新建树的总结点
TV_bomManage.Nodes(1).Tag = id ' 保存bom的ID进入树结点
TV_bomManage.Nodes(1).text = HFG_detail.TextMatrix(1, 1)
' HFG_detail.TextMatrix(1, 10) = "1" ' 把当前结点改成修改
' 把新加入的结点存入当前列表的父节点中
m_parentBom.bomCost = Trim(HFG_detail.TextMatrix(1, 4))
m_parentBom.bomId = Trim(HFG_detail.TextMatrix(1, 7))
m_parentBom.description = Trim(HFG_detail.TextMatrix(1, 6))
m_parentBom.fee = Trim(HFG_detail.TextMatrix(1, 3))
m_parentBom.materialId = Trim(HFG_detail.TextMatrix(1, 10))
m_parentBom.materialType = Trim(HFG_detail.TextMatrix(1, 9))
m_parentBom.name = Trim(HFG_detail.TextMatrix(1, 1))
m_parentBom.processName = Trim(HFG_detail.TextMatrix(1, 2))
m_parentBom.relatePartId = Trim(HFG_detail.TextMatrix(1, 11))
TV_bomManage.Nodes(1).Selected = True
m_currentLevel = 1 ' 设置当前结点为根结点
m_currentNode = TV_bomManage.SelectedItem.Index ' 当前选中的结点
Set m_currentSelectNode = TV_bomManage.Nodes(1)
' m_detailRowCount = 1 ' 当前明细中的行数
' 重新计算根节点的成本
m_bomDAO.CalBomCost Trim(TV_bomManage.Nodes(1).Tag)
ReadChildrenNodes id, m_currentSelectNode ' 读取子BOM列表
ClearAllLine ' 清除子BOM列表的所有行
ClearAllText
' 模拟用户点击根节点操作
TV_bomManage_NodeClick TV_bomManage.SelectedItem
m_collapseAll_Click
Else ' 新增BOM表成功
MainForm.g_msgText = "新增记录失败!"
HMsgBox MainForm.g_msgText, 0, 1
End If
Else ' 子BOM列表达式
' 对每一行BOM表进行处理
For i = 1 To HFG_detail.Rows - 1
If T
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -