⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bomsinglemform2.frm

📁 即时通讯
💻 FRM
📖 第 1 页 / 共 4 页
字号:
    
    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 + -