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

📄 ps_bomsingleform.frm

📁 即时通讯
💻 FRM
📖 第 1 页 / 共 5 页
字号:
'
'        m_recordset.Close
'    End If
'
'    ' 读出选中节点的所有子节点,并显示在列表中
'    ret = m_bomDAO.FindDetailBom(m_recordset, Trim(Node.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"))
'                HFG_detail.TextMatrix(currentrow, 2) = Trim(.Fields("processName"))
'                HFG_detail.TextMatrix(currentrow, 3) = Trim(.Fields("fee"))
'                HFG_detail.TextMatrix(currentrow, 4) = Trim(.Fields("bomCost"))
'                HFG_detail.TextMatrix(currentrow, 5) = Trim(.Fields("quantity"))                        ' 明细的数量
'                HFG_detail.TextMatrix(currentrow, 6) = Trim(.Fields("description"))
'                HFG_detail.TextMatrix(currentrow, 7) = Trim(.Fields("bomId"))        ' 当为空时为新增BOM表,不空为修改
'                HFG_detail.TextMatrix(currentrow, 8) = Trim(.Fields("bomDetailId"))                            ' 当为空时 - 新增明细(非根结点情况) 当不空时 - 修改明细(数量)
'                HFG_detail.TextMatrix(currentrow, 9) = Trim(.Fields("materialType"))                           ' 0-原料 1-零件 2-产品
'                HFG_detail.TextMatrix(currentrow, 10) = Trim(.Fields("materialId"))
'                '<<]
'                '设置数据行高度(Fixed)
'                HFG_detail.RowHeight(currentrow) = 200
'
'                '动态集指针加1,同时将计数器加1(Fixed)
'                .MoveNext
'                currentrow = currentrow + 1
'            Loop
'        End With
'        ListToTextbox
'    End If
'    ListToTextbox
'    m_recordset.Close
'
'    m_currentLevel = JudgeLevel()
'
'    ReadMaterialFinishMsg                      ' 读取与选中BOM对应的物料的完成情况
    
End Sub


'======================================================================================================================

'**************************************
'*    功 能 描 述 :读取与选中BOM对应的物料的完成情况
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Function ReadMaterialFinishMsg()
    Dim ret As Boolean

    ret = m_productSchemeDAO.FindSchemeMaterialByPsidBomId(m_recordset, _
                m_productSchemeId, _
                Trim(TV_bomManage.SelectedItem.Tag))
    If ret Then
        T_requirement.text = Trim(m_recordset.Fields("quantity"))
        T_requirement.Tag = Trim(m_recordset.Fields("psMaterialId"))
        T_hadFinish.text = Trim(m_recordset.Fields("finish"))
        T_setToNum.text = "0"
    End If
    m_recordset.Close
End Function
'**************************************
'*    功 能 描 述 :装载当前生产计划单的BOM树荫
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub LoadBomData()
    Dim ret As Boolean
    
    ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)
    
    
    If ret Then                     ' 当前计划单的BOM数据己存在
        CreateLastNode                           ' 新建树的总结点
        TV_bomManage.Nodes(1).Tag = Trim(m_recordset.Fields("bomId"))           ' 保存bom的ID进入树结点
        TV_bomManage.Nodes(1).text = Trim(m_recordset.Fields("name"))
        TV_bomManage.Nodes(1).Selected = True
        
        ReadChildrenNodes Trim(m_recordset.Fields("bomId")), TV_bomManage.Nodes(1)
        m_recordset.Close
    Else                            ' 当前计划单的BOM数据不存在
        m_recordset.Close
        LoadProductionBom
        
        ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)
        
        If Not ret Then
            Exit Sub
        End If
        
        CreateLastNode                           ' 新建树的总结点
        TV_bomManage.Nodes(1).Tag = Trim(m_recordset.Fields("bomId"))           ' 保存bom的ID进入树结点
        TV_bomManage.Nodes(1).text = Trim(m_recordset.Fields("name"))
        TV_bomManage.Nodes(1).Selected = True
        
        ReadChildrenNodes Trim(m_recordset.Fields("bomId")), TV_bomManage.Nodes(1)
        m_recordset.Close
    End If
    
    TV_bomManage_NodeClick TV_bomManage.Nodes(1)
End Sub
'**************************************
'*    功 能 描 述 :从产品BOM中载入BOM数据,如果生产计划单BOM数据已存在则删除
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub LoadProductionBom()
    Dim ret As Boolean
    Dim sourceBomId As String
    
    ret = m_bomDAO.FindProductionBomByScheme(m_recordset, m_productSchemeId, 2)
    
    If ret Then                            ' 如果找到则删除生产计划单中的BOM数据
        m_bomDAO.DeleteBomBySchemeId m_recordset, m_productSchemeId
    End If
    m_recordset.Close
    
    ' 找到BOM表中产品的BOM记录
    ret = m_productionBomDAO.FindByMaterial(m_recordset, m_productionId, 2)
    If Not ret Then
        MainForm.g_msgText = "本计划单产品的BOM结构不存在,请先建立!"
        HMsgBox MainForm.g_msgText, 0, 1
        m_recordset.Close
        Exit Sub
    Else
        sourceBomId = Trim(m_recordset.Fields("bomId"))
        m_recordset.Close
    End If
    
    ' 根据物料BOMID新建生产BOM及其子BOM
    CreatPsBomByBomId sourceBomId
End Sub
'**************************************
'*    功 能 描 述 :根据物料BOM ID 将BOM数据复制到生产计划单BOM表中
'*    输 入 参 数 :无
'*    输 出 能 数 :新建的生产计划单BOM记录ID
'**************************************
Private Function CreatPsBomByBomId(sourceBomId As String) As String
    Dim recSet   As ADODB.Recordset       ' 数据集对象
    Dim ret      As Boolean
    Dim newBomId As String                ' 生产计划单中BOM记录的ID
    
    Set recSet = New ADODB.Recordset
    ' 找到BOM表中的BOM记录
    ret = m_productionBomDAO.FindById(recSet, sourceBomId)
    ' 新增生产计划单BOM记录
    newBomId = m_bomDAO.NewBom(recSet, _
                                   Trim(recSet.Fields("name")), _
                                   Trim(recSet.Fields("description")), _
                                   CDbl(recSet.Fields("fee")), _
                                   Trim(recSet.Fields("processName")), _
                                   CDbl(recSet.Fields("bomCost")), _
                                   Trim(recSet.Fields("materialId")), _
                                   Trim(recSet.Fields("materialType")), _
                                   Trim(m_productSchemeId), _
                                   Trim(recSet.Fields("relatePartId")))
    
    MoveBomData sourceBomId, newBomId

    Set recSet = Nothing
    CreatPsBomByBomId = newBomId
End Function
'**************************************
'*    功 能 描 述 :从产品BOM表中把BOM数据复制到生产计划单BOM表中
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub MoveBomData(bomId As String, targetBomId As String)
    Dim ret As Boolean
    Dim sourceRec As ADODB.Recordset     ' 数据操作数据集对象
    Dim targetRec As ADODB.Recordset     ' 目标数据集
    Dim newBomId As String               ' 新生成的BOM的ID号
    
    Set sourceRec = New ADODB.Recordset
    Set targetRec = New ADODB.Recordset
    
    ret = m_productionBomDAO.FindDetailBom(sourceRec, bomId)   ' 到数据库查找其所有子BOM列表
    
    If ret Then                 ' 如果找到明细则增加到树中
        With sourceRec
            Do While Not .EOF
                
                '[>>自定义填充内容
                newBomId = m_bomDAO.NewBom(targetRec, _
                                   Trim(.Fields("name")), _
                                   Trim(.Fields("description")), _
                                   CDbl(.Fields("fee")), _
                                   Trim(.Fields("processName")), _
                                   CDbl(.Fields("bomCost")), _
                                   Trim(.Fields("materialId")), _
                                   Trim(.Fields("materialType")), _
                                   Trim(m_productSchemeId), _
                                   Trim(.Fields("relatePartId")))
                                   
                m_bomDAO.NewBomDetail targetRec, targetBomId, newBomId, CInt(.Fields("quantity"))
                
                MoveBomData Trim(.Fields("bomId")), newBomId
                '<<]
         
                '动态集指针加1,同时将计数器加1(Fixed)
                .MoveNext
            Loop
        End With
    End If
    sourceRec.Close
'    Unload rec
End Sub
'**************************************
'*    功 能 描 述 :从BOM表中删除一个BOM节点及其子节点
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub DeleteBomNode(bomId As String)
    '
    Dim ret As Boolean
    
    DeleteSubBom bomId
    
    m_bomDAO.DeleteBom m_recordset, bomId
    
    ' 删除与此BOM节点相联的BOM明细节点
    m_bomDAO.DeleteBomDetailByBom m_recordset, bomId
End Sub
'**************************************
'*    功 能 描 述 :删除BOM表中的子节点
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Sub DeleteSubBom(bomId As String)
    Dim ret As Boolean
    Dim rec As ADODB.Recordset     ' 数据操作数据集对象
    
    Set rec = New ADODB.Recordset
    
    ret = m_bomDAO.FindDetailBom(rec, bomId)   ' 到数据库查找其所有子BOM列表
    
    If ret Then                 ' 如果找到明细则增加到树中
        With rec
            Do While Not .EOF
                
                '[>>自定义填充内容
                
                DeleteSubBom Trim(.Fields("bomId"))

                m_bomDAO.DeleteBom rec, Trim(.Fields("bomId"))
                m_bomDAO.DeleteBomDetail rec, Trim(.Fields("bomDetailId"))
                '<<]
         
                '动态集指针加1,同时将计数器加1(Fixed)
                .MoveNext
            Loop
        End With
    End If
    rec.Close
    Set rec = Nothing
End Sub
'**************************************
'*    功 能 描 述 :判断当前选中的节点是第几层
'*    输 入 参 数 :无
'*    输 出 能 数 :无
'**************************************
Private Function JudgeLevel() As Integer
    Dim level As Integer
    Dim temp As Node
    
    level = 1
    Set temp = TV_bomManage.SelectedItem
    Do While temp <> TV_bomManage.SelectedItem.Root
        Set temp = temp.Parent
        level = level + 1
    Loop
    
    JudgeLevel = level
End Function
'**************************************
'*    功 能 描 述 :根据物料的ID判断当前物料在物料明细列表中是否存在
'*    输 入 参 数 :materialId  -  物产ID
'*    输 出 能 数 :true  -  已存在
'*                 false -  存在
'**************************************
Private Function ExistInList(materialId As String) As Boolean
    Dim i As Integer           ' 循环变量
    
    ExistInList = False
    For i = 1 To HFG_detail.Rows - 1
        If Trim(HFG_detail.TextMatrix(i, 10)) = Trim(materialId) Then
            ExistInList = True
        End If
    Next i
End Function
'**************************************
'*    功 能 描 述 :根据物料的ID找到当前物料的默认供应商次料,并显示
'*    输 入 参 数 :materialId  -  物产ID
'*    输 出 能 数 :true  -  已存在
'*                 false -  存在
'**************************************
Private Function GetMaterialFirstSupplier(materialId As String) As Boolean
    Dim ret As Boolean
    Dim bsdao As New BomSupplierRelationDAO   ' 物料供应关系数据库操作类
    Dim recSet As New ADODB.Recordset         ' 查询结果数据集

    ret = bsdao.GetMaterialFirstSupplier(recSet, materialId)

    If ret Then
        Text1.text = Trim(recSet.Fields("supplierName") & " ")
'        T_suplierName.Tag = Trim(m_recordset.Fields("supplierId"))
'        T_superinrtendent.text = Trim(m_recordset.Fields("SuperInrtendent"))
'        T_tell.text = Trim(m_recordset.Fields("Phone"))
'        T_address.text = Trim(m_recordset.Fields("Address"))
        recSet.Close
    Else
        Text1.text = " "
    End If


    Set recSet = Nothing
    Set bsdao = Nothing
    
    GetMaterialFirstSupplier = ret
End Function

⌨️ 快捷键说明

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