📄 bomsinglemform2.frm
字号:
If m_operatorType = 0 Then ' 新增
m_currentLevel = 0 ' 当前操作的层为产品层
m_currentNode = 0 ' 当前没有选中的BOM树节点
m_detailRowCount = 1 ' 明细里面的数据行的行数
HFG_detail.TextMatrix(1, 10) = "0"
End If
End Sub
'**************************************
'* 功 能 描 述 :刷新BOM明细列表的标题栏
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub RefreshListTitle()
HFG_detail.TextMatrix(0, 0) = "."
HFG_detail.TextMatrix(0, 1) = "BOM名称"
HFG_detail.TextMatrix(0, 2) = "工序名称"
HFG_detail.TextMatrix(0, 3) = "工序费用"
HFG_detail.TextMatrix(0, 4) = "BOM成本"
HFG_detail.TextMatrix(0, 5) = "数量" ' 明细的数量
HFG_detail.TextMatrix(0, 6) = "备注"
HFG_detail.TextMatrix(0, 7) = "bomId" ' 明细联接到的BOM记录
HFG_detail.TextMatrix(0, 8) = "bomDetailId" ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
HFG_detail.TextMatrix(0, 9) = "materialType" ' 0-原料 1-零件 2-产品
HFG_detail.TextMatrix(0, 10) = "materialId" ' 物料ID
HFG_detail.ColWidth(0) = 200
End Sub
'**************************************
'* 功 能 描 述 :列表的点击操作
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub HFG_detail_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button And vbRightButton Then ' 用户点击右键,调出快捷菜单
If Trim(HFG_detail.TextMatrix(1, 10)) <> "" And _
Trim(HFG_detail.TextMatrix(1, 9)) = "2" And _
m_currentLevel = 0 Then ' 只有产品才可以复制BOM
m_copyBom.Visible = True
Else
m_copyBom.Visible = False
End If
PopupMenu PM_listOperator
ElseIf Button And vbLeftButton Then
' MainForm.g_msgText = "LEFT"
' HMsgBox MainForm.g_msgText, 0, 1
End If
End Sub
'**************************************
'* 功 能 描 述 :新增节点操作
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_newNode_Click()
' 新增节点
Dim s As Integer
s = TV_bomManage.Nodes.Count
s = Val(TV_bomManage.Nodes(1).Key)
'Add a node using tvwFirst
Dim skey As String
Dim iIndex As Integer
Dim oNodex As Node
On Error GoTo myerr 'if the treeview does not have a node selected
' the next line of code will return an error number 91
iIndex = TV_bomManage.SelectedItem.Index 'Check to see if a Node is selected
skey = GetNextKey() ' Get a key for the new Node
TV_bomManage.Nodes.Add iIndex, tvwFirst, skey, "First " & skey, 1, 2
Exit Sub
myerr:
'Display a messge telling the user to select a node
MsgBox ("You must select a Node to do an Add First" & vbCrLf _
& "If the TreeView is empty us Add Last to create the first node")
TV_bomManage.Nodes.Add , tvwLast, skey, "Last " & skey, 1, 2
Exit Sub
End Sub
Private Sub HFG_detail_SelChange()
ListToTextbox
End Sub
Private Sub m_calCost_Click()
' 计算成本
On Error GoTo EXITSUB
CalBomCost TV_bomManage.SelectedItem.Tag
MainForm.g_msgText = "已重新计算成本!"
HMsgBox MainForm.g_msgText, 0, 4
EXITSUB:
End Sub
'**************************************
'* 功 能 描 述 :复制产品的BOM按钮处理函数
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_copyBom_Click()
Dim ret As Boolean
Dim sourceBomId As String ' 要被复制的BOM 的ID
Dim newBomId As String ' 新生成的BOM 的ID
ret = m_bomDAO.FindByMaterial(m_recordset, Trim(HFG_detail.TextMatrix(1, 10)), "2")
If ret Then ' 此产品的`BOM是存在的,则要删除此BOM记录及其明细
m_bomDAO.DeleteBomDetailByParentId m_recordset, Trim(m_recordset.Fields("bomId"))
m_bomDAO.DeleteBom m_recordset, Trim(m_recordset.Fields("bomId"))
End If
m_recordset.Close
' 调用bom查询窗体
QueryFom.m_currentQuery = QUERY_BOM
QueryFom.show vbModal
' 如果此原料已有BOM记录,则调出些条BOM的信息
ret = m_bomDAO.FindById(m_recordset, _
MainForm.g_application.m_queryResultId)
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"))
sourceBomId = Trim(.Fields("bomId"))
' 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) = Trim(.Fields("materialType")) ' 0-原料 1-零件 2-产品
' HFG_detail.TextMatrix(HFG_detail.Row, 10) = Trim(.Fields("materialId"))
End With
m_recordset.Close
newBomId = BomCopy(sourceBomId) ' 复制BOM数据
HFG_detail.TextMatrix(HFG_detail.row, 7) = newBomId
ListToTextbox
Else
m_recordset.Close
End If
End Sub
'**************************************
'* 功 能 描 述 :删除一行
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_deleteRow_Click()
If HFG_detail.Rows < 3 Then
MainForm.g_msgText = "只有一行不能删除!"
HMsgBox MainForm.g_msgText, 0, 1
Exit Sub
End If
If HFG_detail.row > 0 Then
HFG_detail.TextMatrix(HFG_detail.row, 0) = "N"
HFG_detail.col = 0
HFG_detail.CellBackColor = vbBlue
End If
End Sub
'**************************************
'* 功 能 描 述 :修改当前树结点的根结点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_modiFirstNode_Click()
Dim ret As Boolean
Dim bomId As String
' 修改当前树的根结点
m_currentLevel = 0 ' 把当前设置成编辑根结点
If TV_bomManage.Nodes.Count > 0 Then
bomId = Trim(TV_bomManage.Nodes(1).Tag)
TV_bomManage.Nodes.clear
HFG_detail.clear
HFG_detail.Rows = 2
RefreshListTitle
' 根据BOM结点读出BOM数据
ret = m_bomDAO.FindById(m_recordset, _
bomId)
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) = Trim(.Fields("materialType")) ' 0-原料 1-零件 2-产品
HFG_detail.TextMatrix(HFG_detail.row, 10) = Trim(.Fields("materialId"))
End With
m_recordset.Close
ListToTextbox
Else
m_recordset.Close
End If
End If
End Sub
'**************************************
'* 功 能 描 述 :在当前根结点的基础上新增根结点,则当前的根结点变成了新根结点的子结点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_newFirstBom_Click()
'
' Dim s As String
' If m_currentLevel < 1 Then ' 当前正在编辑根结点,不能加入更多的行
' MainForm.g_msgText = "你现在正在建立根BOM,再建新的根结点!"
' HMsgBox MainForm.g_msgText, 0, 1
' Else
' CreateLastNode
' TV_bomManage.Nodes.Item(1).Parent = TV_bomManage.Nodes.Item(2)
' End If
End Sub
'**************************************
'* 功 能 描 述 :新增列表框中的行
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_newRow_Click()
'
If m_currentLevel < 1 Then ' 当前正在编辑根结点,不能加入更多的行
MainForm.g_msgText = "你现在正在建立根BOM,不能新建多行!"
HMsgBox MainForm.g_msgText, 0, 1
Else
HFG_detail.AddItem ""
m_detailRowCount = m_detailRowCount + 1
End If
End Sub
'**************************************
'* 功 能 描 述 :用户选择产品
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_selectBom_Click()
Dim ret As Boolean
' 选择一种BOM
QueryFom.m_currentQuery = QUERY_BOM
QueryFom.show vbModal
' 如果此原料已有BOM记录,则调出些条BOM的信息
ret = m_bomDAO.FindById(m_recordset, _
MainForm.g_application.m_queryResultId)
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) = Trim(.Fields("materialType")) ' 0-原料 1-零件 2-产品
HFG_detail.TextMatrix(HFG_detail.row, 10) = Trim(.Fields("materialId"))
End With
m_recordset.Close
ListToTextbox
Else
m_recordset.Close
End If
End Sub
Private Sub m_selectGoods_Click()
Dim ret As Boolean
' 选择一种原料
QueryFom.m_currentQuery = QUERY_GOODS
QueryFom.show vbModal
' 如果此原料已有BOM记录,则调出些条BOM的信息
ret = m_bomDAO.FindByMaterial(m_recordset, _
MainForm.g_application.m_queryResultId, _
"0")
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) = "0" ' 0-原料 1-零件 2-产品
HFG_detail.TextMatrix(HFG_detail.row, 10) = _
MainForm.g_application.m_queryResultId
End With
m_recordset.Close
Else ' 没找到BOM记录 ,查找物料记录
m_recordset.Close
ret = m_bomDAO.FindMaterial(m_recordset, _
MainForm.g_application.m_queryResultId, _
"0")
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("")
HFG_detail.TextMatrix(HFG_detail.row, 4) = Trim("")
' 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) = "0" ' 0-原料 1-零件 2-产品
HFG_detail.TextMatrix(HFG_detail.row, 10) = _
MainForm.g_application.m_queryResultId
End With
m_recordset.Close
End If
End If
ListToTextbox
End Sub
Private Sub m_selectPart_Click()
Dim ret As Boolean
' 选择一种零件
QueryFom.m_currentQuery = QUERY_PART
QueryFom.show vbModal
' 如果此原料已有BOM记录,则调出些条BOM的信息
ret = m_bomDAO.FindByMaterial(m_recordset, _
MainForm.g_application.m_queryResultId, _
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -