📄 bomsinglemform.frm
字号:
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()
Dim bomCost As Double ' 计算后的成本
' 计算成本
On Error GoTo EXITSUB
bomCost = m_bomDAO.CalBomCost(TV_bomManage.SelectedItem.Tag)
T_bomCost.text = bomCost
MainForm.g_msgText = "已重新计算成本!"
HMsgBox MainForm.g_msgText, hxxdOKOnly, hxxdInfomation
EXITSUB:
End Sub
Private Sub m_collapseAll_Click()
Dim hasChild As Boolean
Dim childNode As Node
hasChild = True
On Error GoTo EXITSUB
Set childNode = TV_bomManage.Nodes(1).Child
Do While hasChild
childNode.Expanded = False
Set childNode = childNode.Next
Loop
Exit Sub
EXITSUB:
hasChild = False
Exit Sub
End Sub
'**************************************
'* 功 能 描 述 :复制产品的BOM按钮处理函数
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_copyBom_Click()
Dim ret As Boolean
Dim sourceBomId As String ' 要被复制的BOM 的ID
Dim newBomId As String ' 新生成的BOM 的ID
Dim recSet As ADODB.Recordset ' 删除记录的数据集
Set recSet = New ADODB.Recordset
' 调用bom查询窗体
Dim qf As New QueryFom
qf.m_currentQuery = QUERY_BOM
qf.show vbModal
Set qf = Nothing
' 如果此原料已有BOM记录,则调出些条BOM的信息
ret = m_bomDAO.FindById(m_recordset, _
MainForm.g_application.m_queryResultId)
If ret Then ' 找到了BOM记录
ret = m_bomDAO.FindByMaterial(recSet, Trim(HFG_detail.TextMatrix(1, 10)), "2")
If ret Then ' 此产品的`BOM是存在的,则要删除此BOM记录及其明细
m_bomDAO.DeleteBomDetailByParentId recSet, Trim(recSet.Fields("bomId"))
m_bomDAO.DeleteBom recSet, Trim(recSet.Fields("bomId"))
End If
recSet.Close
' 把选择的原料的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 And m_currentLevel <= 1 Then
MainForm.g_msgText = "只有一行不能删除!"
HMsgBox MainForm.g_msgText, hxxdOKOnly, hxxdError
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_expandAll_Click()
Dim hasChild As Boolean
Dim childNode As Node
hasChild = True
On Error GoTo EXITSUB
Set childNode = TV_bomManage.Nodes(1).Child
Do While hasChild
childNode.Expanded = True
Set childNode = childNode.Next
Loop
Exit Sub
EXITSUB:
hasChild = False
Exit Sub
End Sub
'**************************************
'* 功 能 描 述 :修改当前树结点的根结点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_modiFirstNode_Click()
Dim ret As Boolean
Dim bomId As String
' 修改当前树的根结点
m_currentLevel = 1 ' 把当前设置成编辑根结点
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"))
HFG_detail.TextMatrix(HFG_detail.row, 11) = Trim(.Fields("relatePartId"))
If Trim(.Fields("materialType")) = "1" Then
HFG_detail.TextMatrix(HFG_detail.row, 10) = Trim(.Fields("materialId"))
End If
' 设置选择工序的按钮 ,只有零件才能选择工序
If Trim(.Fields("materialType")) = "1" Then
Command1.Visible = False
Else
Command1.Visible = False
End If
End With
m_recordset.Close
ListToTextbox
Else
m_recordset.Close
End If
End If
End Sub
'**************************************
'* 功 能 描 述 :新增一个没有子节点的节点的第一个子节点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub m_newChild_Click()
Dim ret As Boolean
Dim currentrow As Integer
Dim Index As Integer
Dim skey As String
Dim text As String
Dim iIndex As Integer
Dim oNodex As Node
m_currentLevel = JudgeLevel()
' 读出选中的父节结点信息,并把其信息存放入m_parentBom中
ret = m_bomDAO.FindById(m_recordset, Trim(TV_bomManage.SelectedItem.Tag)) ' 找到结点的记录
If ret Then
If Trim(m_recordset.Fields("materialType")) = "0" Then ' 原料不能新增子BOM
MainForm.g_msgText = "原料不能新增子BOM"
HMsgBox MainForm.g_msgText, hxxdOKOnly, hxxdError
Exit Sub
End If
ClearAllLine
ClearAllText
Set m_parentNode = TV_bomManage.SelectedItem
With m_recordset
'[>>自定义填充内容
' 把找到的BOM存入当前列表的父节点中
m_parentBom.bomCost = Trim(.Fields("bomCost"))
m_parentBom.bomId = Trim(.Fields("bomId"))
m_parentBom.description = Trim(.Fields("description"))
m_parentBom.fee = Trim(.Fields("fee"))
m_parentBom.materialId = Trim(.Fields("materialId"))
m_parentBom.materialType = Trim(.Fields("materialType"))
m_parentBom.name = Trim(.Fields("name"))
m_parentBom.processName = Trim(.Fields("processName"))
m_parentBom.relatePartId = Trim(.Fields("relatePartId") & " ") ' 相关零件
'<<]
End With
m_recordset.Close
End If
' 把本行数据加入树中
iIndex = m_parentNode.Index
skey = GetNextKey()
text = "新增节点"
On Error GoTo NODEEXIST
Set oNodex = TV_bomManage.Nodes.Add(iIndex, tvwChild, skey, text, 1, 2)
oNodex.EnsureVisible
oNodex.Tag = ""
oNodex.Selected = True
m_currentLevel = m_currentLevel + 1
NODEEXIST:
'
' ' 读出选中节点的信息,并显示在列表中
' ret = m_bomDAO.FindDetailBom(m_recordset, Trim(Node.Parent.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"))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -