📄 ps_bomdao.cls
字号:
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 + -