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

📄 bomsinglemform2.frm

📁 即时通讯
💻 FRM
📖 第 1 页 / 共 4 页
字号:
                                  "1")
    
    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) = "1"                           ' 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, _
                                  "1")
        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) = "1"                           ' 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_selectProduction_Click()
    Dim ret As Boolean
    
    ' 选择一种产品
    QueryFom.m_currentQuery = QUERY_Production
    QueryFom.show vbModal
    ' 如果此原料已有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-产品
            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, _
                                  "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("")
            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) = "2"                           ' 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 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_number_Change()
    Call OnTextChanged
End Sub

Private Sub T_number_KeyPress(KeyAscii As Integer)
    InputFieldLimit T_number, 3, KeyAscii
End Sub

Private Sub T_ProcessName_Change()
    Call OnTextChanged
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) = Trim(T_fee.text)
        HFG_detail.TextMatrix(HFG_detail.row, 4) = 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)
    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))
    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 = 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)))
        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)
        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))
            
            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                           ' 当前明细中的行数
            
            ReadChildrenNodes id, m_currentSelectNode     ' 读取子BOM列表
            
            ClearAllLine                                    ' 清除子BOM列表的所有行
            ClearAllText
            'm_recordset.Fields.Item(1).Name                ' 字段名子
        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 Trim(HFG_detail.TextMatrix(i, 0)) = "Y" Then ' 本行需要处理
                MoveOneLineToTree i
            ElseIf Trim(HFG_detail.TextMatrix(i, 8)) <> "" Then  ' 从BOM明细中删除此条BOM明细表
                m_bomDAO.DeleteBomDetail m_recordset, Trim(HFG_detail.TextMatrix(i, 8))
            End If
        Next i
    End If
    
EXITSUB:
End Sub
'**************************************
'*    功 能 描 述 :把一行数据放入数据库中及树中
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub MoveOneLineToTree(line As Integer)
    Dim ret As Boolean
    Dim id As String            ' BOM的ID
    Dim bomdetailId As String   ' BOM明细ID
    Dim skey As String
    Dim text As String
    Dim iIndex As Integer
    Dim oNodex As Node
    
    ret = Check(1, line)
    If ret = False Then
        Exit Sub
    End If
    
    ' 对BOM表进行操作
    If Trim(HFG_detail.TextMatrix(line, 7)) = "" Then   ' 如果要新增BOM记录
        id = m_bomDAO.NewBom(m_recordset, _
                 Trim(HFG_detail.TextMatrix(line, 1)), _
                 Trim(HFG_detail.TextMatrix(line, 6)), _
                 CDbl(HFG_detail.TextMatrix(line, 3)), _
                 Trim(HFG_detail.TextMatrix(line, 2)), _
                 CDbl(HFG_detail.TextMatrix(line, 4)), _
                 Trim(HFG_detail.TextMatrix(line, 10)), _
                 Trim(HFG_detail.TextMatrix(line, 9)))
        HFG_detail.TextMatrix(line, 7) = id
    Else                                            ' 修改BOM记录
        id = Trim(HFG_detail.TextMatrix(line, 7))
        ret = m_bomDAO.ModifyBom(m_recordset, _
                 Trim(HFG_detail.TextMatrix(line, 1)), _
                 Trim(HFG_detail.TextMatrix(line, 6)), _
                 CDbl(HFG_detail.TextMatrix(line, 3)), _
                 Trim(HFG_detail.TextMatrix(line, 2)), _
                 CDbl(HFG_detail.TextMatrix(line, 4)), _
                 Trim(HFG_detail.TextMatrix(line, 10)), _
                 Trim(HFG_detail.TextMatrix(line, 9)), _
                 id)
    End If
    
    ' 对BOM明细表进行操作
    If Trim(HFG_detail.TextMatrix(line, 8)) = "" Then  ' 新增BOM明细
        bomdetailId = m_bomDAO.NewBomDetail(m_recordset, _
                                            m_parentBom.bomId, _
                                            Trim(HFG_detail.TextMatrix(line, 7)), _
                                            CInt(HFG_detail.TextMatrix(line, 5)))
        HFG_detail.TextMatrix(line, 8) = bomdetailId
    Else                                               ' 修改BOM明细
        ret = m_bomDAO.ModifyBomDetail(m_recordset, _
                                            m_parentBom.bomId, _
                                            Trim(HFG_detail.TextMatrix(line, 7)), _
                                            CInt(HFG_detail.TextMatrix(line, 5)), _
                                            Trim(HFG_detail.TextMatrix(line, 8)))
    End If
    
    ' 把本行数据加入树中
    iIndex = TV_bomManage.SelectedItem.Index
    skey = GetNextKey()
    text = Trim(HFG_detail.TextMatrix(line, 1)) + "(" + Trim(HFG_detail.TextMatrix(line, 5)) + ")"
    On Error GoTo NODEEXIST
    Set oNodex = TV_bomManage.Nodes.Add(iIndex, tvwChild, skey, text, 1, 2)
    oNodex.EnsureVisible
    oNodex.Tag = id
    
    ReadChildrenNodes oNodex.Tag, oNodex         ' 把此BOM的各子BOM读入树中
    
    Exit Sub
        
NODEEXIST:
        
End Sub
'**************************************
'*    功 能 描 述 :从数据库中读取BOM的各级子BOM放在树上
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -