📄 modmain.bas
字号:
'详细信息表中的该种物品的数量为0
sngOrdQty = 0
End If
End With
With rsSalDA
'判断数据集rsSalDA中的记录数是否为0
If .RecordCount <> 0 Then
'数据集rsSalDA中的记录数不为0,将strSalPro指定的物品数量赋值
'给变量sngSalQty,以表示出库详细信息表中的该种物品的数量
sngSalQty = !sqty
Else
'数据集rsSalDA中的记录数为0,将变量sngSalQty置为0,以表示出库
'详细信息表中的该种物品的数量为0
sngSalQty = 0
End If
End With
'判断数据集rsMatQty中的记录是否为0
If rsMatQty.RecordCount = 0 Then
'数据集rsMatQty中的记录为0,将变量sngMatQty值设为0,
'以表示物品汇总信息表中的该种物品的数量为0
sngMatQty = 0
Else
'数据集rsMatQty中的记录不为0,将strSalPro指定的物品数量赋值
'给变量sngMatQty,以表示物品汇总信息表中的该种物品的数量
With rsMatQty
.MoveFirst
sngMatQty = CSng(!qty)
End With
End If
'根据变量sngOrdQty 、sngMatQty和sngSalQty的值,判断是否还
'有strSalPro指定的物品
If (sngOrdQty + sngMatQty - sngSalQty) - CCur(strSalQty) < 0 Then
'仓库中没有strSalPro指定的物品,设置函数返回值为False
SaleTooLarge = False
Else
'仓库中还有strSalPro指定的物品,设置函数返回值为False
SaleTooLarge = True
End If
rsMatQty.Close
Set rsMatQty = Nothing
End Function
Public Function SaleUnPr(strSaleID As String, strSalPro As String) As Currency
'定义返回物品累计信息表中记录的数据集对象rsMat
Dim rsMat As ADODB.Recordset
'定义返回已审核的入库详细信息表中记录的数据集对象rsOrdDA
Dim rsOrdDA As ADODB.Recordset
'定义返回未审核的出库详细信息表中记录的数据集对象rsSalDA
Dim rsSalDA As ADODB.Recordset
'定义存储sql语句的变量strSQL
Dim strSQL As String
'定义存储已审核的入库单中的物品数量sngOrdQty和出库数量的变量sngSalQty
Dim sngOrdQty, sngSalQty As Single
'定义存储已审核的入库单中的物品价格CurOrdPrice和出库单
'中的物品价格的变量CurSalPrice
Dim CurOrdPrice, CurSalPrice As Currency
'初始化数据集对象rsMat、rsOrdDA和rsSalDA
Set rsMat = New ADODB.Recordset
Set rsOrdDA = New ADODB.Recordset
Set rsSalDA = New ADODB.Recordset
'设置并执行sql语句,以返回数据集对象rsMat,使其包含物
'品汇总信息表中的物品名称为strSalPro 的物品的可用数量和价格
strSQL = "select qty,price from mat_head where p_id='" & strSalPro & "'"
rsMat.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
'设置并执行sql语句,以返回数据集对象rsOrdDA,使其包含未审核的入
'库详细信息表中的物品名称为strSalPro的物品的编号、数量和价格
strSQL = "select p_id,sum(qty) as oqty,sum(price) as oprice from " & _
"order_detail_a where p_id='" & strSalPro & "' group by p_id"
rsOrdDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
'设置并执行sql语句,以返回数据集对象rsSalDA,使其包含出库详细
'信息表中的物品名称为strSalPro的物品的编号、数量和价格
strSQL = "select p_id,sum(qty) as sqty,sum(price) as sprice from " & _
"sale_detail_a where p_id='" & strSalPro & "' and sale_id<>'" & _
strSaleID & "' group by p_id"
rsSalDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
With rsOrdDA
'判断数据集rsOrdDA中的记录数是否为0
If .RecordCount <> 0 Then
'数据集rsOrdDA中的记录数不为0,将strSalPro指定的物品数量和价格赋值
'给变量sngOrdQty和CurOrdPrice,以表示入库详细信息表中的该种物品的数量和价格
sngOrdQty = !oqty
CurOrdPrice = !oprice
Else
'数据集rsOrdDA中的记录数为0,将变量sngOrdQty和CurOrdPrice置为0,以表示入库
'详细信息表中的该种物品的数量和价格为0
sngOrdQty = 0
CurOrdPrice = 0
End If
End With
With rsSalDA
'判断数据集rsSalDA中的记录数是否为0
If .RecordCount <> 0 Then
'数据集rsSalDA中的记录数不为0,将strSalPro指定的物品数量和价格赋值
'给变量sngSalQty和CurSalPrice,以表示入库详细信息表中的该种物品的数量和价格
sngSalQty = !sqty
CurSalPrice = !sprice
Else
'数据集rsSalDA中的记录数为0,将变量sngSalQty和CurSalPrice置为0,以表示入库
'详细信息表中的该种物品的数量和价格为0
sngSalQty = 0
CurSalPrice = 0
End If
End With
With rsMat
'判断数据集rsMat中的记录数是否为0
If rsMat.RecordCount = 0 Then
'数据集rsMat中的记录数为0,设置函数返回值为0,以表示仓库中该物品的数量为0
SaleUnPr = 0
Else
'根据变量sngOrdQty 、!qty和sngSalQty的值,判断是否还有strSalPro指定的物品,
'并设置函数返回值,以表示当前物品的平均价格
If sngOrdQty + CSng(!qty) - sngSalQty <> 0 Then
SaleUnPr = CCur(Round((CurOrdPrice + CCur(!price) - CurSalPrice) _
/ (sngOrdQty + CSng(!qty) - sngSalQty), 2))
End If
End If
End With
rsMat.Close
rsOrdDA.Close
rsSalDA.Close
Set rsMat = Nothing
Set rsOrdDA = Nothing
Set rsSalDA = Nothing
End Function
Public Function Sale_Price(strSaleID As String, strSaleNum As String, _
strSaleUnPr As String, strSaleQty As String) As Currency
'定义返回物品累计信息表中记录的数据集对象rsMatSale
Dim rsMatSale As ADODB.Recordset
'定义返回已审核的入库详细信息表中记录的数据集对象rsOrdDA
Dim rsOrdDA As ADODB.Recordset
'定义返回未审核的出库详细信息表中记录的数据集对象rsSalDA
Dim rsSalDA As ADODB.Recordset
'定义存储sql语句的变量strSQL
Dim strSQL As String
Dim sngOrdQty, sngSalQty As Single
Dim CurOrdPrice, CurSalPrice As Currency
Set rsMatSale = New ADODB.Recordset
Set rsOrdDA = New ADODB.Recordset
Set rsSalDA = New ADODB.Recordset
strSQL = "select qty,price from mat_head where p_id='" & strSaleNum & "'"
rsMatSale.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
strSQL = "select p_id,sum(qty) as oqty,sum(price) as oprice from " & _
"order_detail_a where p_id='" & strSaleNum & "' group by p_id"
rsOrdDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
strSQL = "select p_id,sum(qty) as sqty,sum(price) as sprice from " & _
"sale_detail_a where p_id='" & strSaleNum & "' and sale_id<>'" & _
strSaleID & "'group by p_id"
rsSalDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
With rsOrdDA
If .RecordCount <> 0 Then
sngOrdQty = !oqty
CurOrdPrice = !oprice
Else
sngOrdQty = 0
CurOrdPrice = 0
End If
End With
With rsSalDA
If .RecordCount <> 0 Then
sngSalQty = !sqty
CurSalPrice = !sprice
Else
sngSalQty = 0
CurSalPrice = 0
End If
End With
With rsMatSale
If .RecordCount <> 0 Then
If (sngOrdQty + CSng(!qty) - sngSalQty) - CSng(strSaleQty) < 0.00000001 Then
Sale_Price = CurOrdPrice + CCur(!price) - CurSalPrice
Else
Sale_Price = Round((CCur(strSaleUnPr) * CSng(strSaleQty)), 2)
End If
End If
End With
rsMatSale.Close
rsOrdDA.Close
rsSalDA.Close
Set rsMatSale = Nothing
Set rsOrdDA = Nothing
Set rsSalDA = Nothing
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -