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

📄 ps_bomdao.cls

📁 即时通讯
💻 CLS
📖 第 1 页 / 共 2 页
字号:
    
Cwcl:
    FindMaterial = False
    Exit Function
End Function

' ************************************BOMDETAIL**********************************
'**************************************
'*    功 能 描 述 :新增一条BOMDETAIL数据
'*    输 入 参 数 :无
'*    输 出 能 数 :返回新增的明细ID
'**************************************
Public Function NewBomDetail(recSet As ADODB.Recordset, _
                             parentBomId As String, bomId As String, _
                             quantity As Integer) As String
    
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    NewBomDetail = ""
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bomdetail_new"          ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = parentBomId      ' 参数
    cmdProc.Parameters(2) = bomId            ' 参数
    cmdProc.Parameters(3) = quantity         ' 参数
    cmdProc.Parameters(4) = "OOOOO"          ' 参数
    
    ' 执行命令 把查询到的结果放在recSet中
    MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans    ' 开始事务
    
    On Error GoTo Cwcl
    
    cmdProc.Execute
    NewBomDetail = cmdProc.Parameters(4)

    MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans   ' 结束事务
    Exit Function
    
Cwcl:
    MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans   ' 回滚事务
    NewBomDetail = ""
End Function
'**************************************
'*    功 能 描 述 :修改一条BOM数据
'*    输 入 参 数 :无
'*    输 出 能 数 :True           -  成功
'*                 False          -  失败
'**************************************
Public Function ModifyBomDetail(recSet As ADODB.Recordset, _
                               parentBomId As String, bomId As String, _
                               quantity As Integer, bomdetailId As String) As Boolean
    
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    ModifyBomDetail = False
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bomdetail_modify"          ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = parentBomId              ' 参数
    cmdProc.Parameters(2) = bomId                    ' 参数
    cmdProc.Parameters(3) = quantity                 ' 参数
    cmdProc.Parameters(4) = bomdetailId              ' 参数
    
    ' 执行命令 把查询到的结果放在recSet中
    MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans    ' 开始事务
    
    On Error GoTo Cwcl
    
    cmdProc.Execute
    ModifyBomDetail = True

    MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans   ' 结束事务
    Exit Function
    
Cwcl:
    MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans   ' 回滚事务
    ModifyBomDetail = False
End Function
'**************************************
'*    功 能 描 述 :删除一条BOM列表中的记录
'*    输 入 参 数 :无
'*    输 出 能 数 :True           -  成功
'*                 False          -  失败
'**************************************
Public Function DeleteBom(recSet As ADODB.Recordset, _
                                bomId As String) As Boolean
    
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    DeleteBom = False
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bom_delete"          ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = bomId              ' 参数
    
    ' 执行命令 把查询到的结果放在recSet中
    MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans    ' 开始事务
    
    On Error GoTo Cwcl
    
    cmdProc.Execute
    DeleteBom = True

    MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans   ' 结束事务
    Exit Function
    
Cwcl:
    MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans   ' 回滚事务
    DeleteBom = False
End Function
'**************************************
'*    功 能 描 述 :删除一个生产计划单的所有PSBOM记录
'*    输 入 参 数 :无
'*    输 出 能 数 :True           -  成功
'*                 False          -  失败
'**************************************
Public Function DeleteBomBySchemeId(recSet As ADODB.Recordset, _
                                psId As String) As Boolean
    
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    DeleteBomBySchemeId = False
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bom_deleteBySchemeId"          ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = psId              ' 参数
    
    ' 执行命令 把查询到的结果放在recSet中
    MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans    ' 开始事务
    
    On Error GoTo Cwcl
    
    cmdProc.Execute
    DeleteBomBySchemeId = True

    MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans   ' 结束事务
    Exit Function
    
Cwcl:
    MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans   ' 回滚事务
    DeleteBomBySchemeId = False
End Function
'**************************************
'*    功 能 描 述 :删除一条与BOM记录相关的BOM明细记录 指向此BOM的明细
'*    输 入 参 数 :无
'*    输 出 能 数 :True           -  成功
'*                 False          -  失败
'**************************************
Public Function DeleteBomDetailByBom(recSet As ADODB.Recordset, _
                                bomId As String) As Boolean
    
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    DeleteBomDetailByBom = False
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bomdetail_deleteByBom"          ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = bomId              ' 参数
    
    ' 执行命令 把查询到的结果放在recSet中
    MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans    ' 开始事务
    
    On Error GoTo Cwcl
    
    cmdProc.Execute
    DeleteBomDetailByBom = True

    MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans   ' 结束事务
    Exit Function
    
Cwcl:
    MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans   ' 回滚事务
    DeleteBomDetailByBom = False
End Function
'**************************************
'*    功 能 描 述 :删除一条BOM明细列表中的记录
'*    输 入 参 数 :无
'*    输 出 能 数 :True           -  成功
'*                 False          -  失败
'**************************************
Public Function DeleteBomDetail(recSet As ADODB.Recordset, _
                                bomdetailId As String) As Boolean
    
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    DeleteBomDetail = False
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bomdetail_delete"          ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = bomdetailId              ' 参数
    
    ' 执行命令 把查询到的结果放在recSet中
    MainForm.g_application.m_databaseCon.m_adoConnection.BeginTrans    ' 开始事务
    
    On Error GoTo Cwcl
    
    cmdProc.Execute
    DeleteBomDetail = True

    MainForm.g_application.m_databaseCon.m_adoConnection.CommitTrans   ' 结束事务
    Exit Function
    
Cwcl:
    MainForm.g_application.m_databaseCon.m_adoConnection.RollbackTrans   ' 回滚事务
    DeleteBomDetail = False
End Function
'**************************************
'*    功 能 描 述 :根据BOM ID找到BOM明细记录
'*    输 入 参 数 :无
'*    输 出 能 数 :True           -  成功
'*                 False          -  失败
'**************************************
Public Function FindDetailBom(recSet As ADODB.Recordset, _
                              parenBomId As String) As Boolean
    Dim cmdProc As ADODB.Command          ' 执行存储过程的命令
    
    FindDetailBom = False
    Set cmdProc = New ADODB.Command
    Set cmdProc.ActiveConnection = MainForm.g_application.m_databaseCon.m_adoConnection
    
    ' 执行存储过程的命令的设置
    cmdProc.CommandText = "ps_bom_findDetailBom"    ' 指定存储过程的名子
    cmdProc.CommandType = adCmdStoredProc
    cmdProc.Parameters.Refresh
    cmdProc.Parameters(1) = parenBomId            ' 参数
    
    On Error GoTo Cwcl
    
    ' 执行命令 把查询到的结果放在recSet中
    With recSet
        .CursorLocation = adUseClient
        .CursorType = adOpenDynamic
        .LockType = adLockOptimistic
        .Open cmdProc
    End With
    
    With recSet
        If Not .EOF Then
            FindDetailBom = True
        Else
            FindDetailBom = False
        End If
    End With
    
    Exit Function
    
Cwcl:
    FindDetailBom = False
    Exit Function
End Function

'**************************************
'*    功 能 描 述 :计算BOM表中各BOM及子BOM的成本,并修改其成本
'*    输 入 参 数 :bomId - 要计算成本的BOM的ID
'*    输 出 能 数 :无
'**************************************
Public Function CalBomCost(bomId As String) As Double
    Dim ret As Boolean
    Dim rec As ADODB.Recordset     ' 数据操作数据集对象
    Dim bomRec As ADODB.Recordset  ' 本BOM记录
    Dim cost As Double
    Dim detailNum As Integer       ' 一个明细的数量
    Dim detailCost As Double       ' 一个明细的成本
    Dim detailFee As Double        ' 一个明细的加工费
    
    Set rec = New ADODB.Recordset
    Set bomRec = New ADODB.Recordset
    
    ret = FindDetailBom(rec, bomId)   ' 到数据库查找其所有子BOM列表
    
    If ret Then                 ' 如果找到明细则增加到树中
        cost = 0                ' 成本设置成 0
        With rec
            Do While Not .EOF
                
                '[>>自定义填充内容
                ' 把本行数据加入树中
                detailCost = CalBomCost(Trim(.Fields("bomId")))
                
                
                
                detailNum = CInt(.Fields("quantity"))
'                detailCost = CDbl(.Fields("bomCost"))
                detailFee = CDbl(.Fields("fee"))
                
                cost = cost + detailNum * (detailCost + detailFee)

                '<<]
         
                '动态集指针加1,同时将计数器加1(Fixed)
                .MoveNext
            Loop
        End With
        ' 修改本条BOM表的成本
        ModifyBomCost rec, cost, bomId
    Else     ' 如果没找到明细则返回原本的成本
        ret = FindById(bomRec, bomId)   ' 找到本物料BOM
        cost = CDbl(bomRec.Fields("bomCost"))
        bomRec.Close
    End If
    rec.Close
    Set rec = Nothing
    Set bomRec = Nothing
    CalBomCost = cost
End Function

⌨️ 快捷键说明

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