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

📄 modmain.bas

📁 里面的内容包括:基盘存管理本信息管理库存管理入库管理出库管理等功能
💻 BAS
📖 第 1 页 / 共 2 页
字号:
            '详细信息表中的该种物品的数量为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 + -