Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否使用VBA在Access表中执行加法/减法?_Vba_Ms Access - Fatal编程技术网

是否使用VBA在Access表中执行加法/减法?

是否使用VBA在Access表中执行加法/减法?,vba,ms-access,Vba,Ms Access,我正在使用查询中的数据填充一个诱人的in Access。到目前为止,我已经填充了3列(添加、删除、购买),我正试图找到其中三列的总数。问题是,很多人没有价值观,其中一些是负值。我该怎么做呢?我有rs2(“添加”)、rs2(“删除”)和rs2(“购买”)中的数据。因此,所有的增加值(如果有的话)都是正值,所有的删除值都是负值(如果有的话),所有的购买值都是正值 我想做一个循环,可能 我将记录数取为intRsCount=25 With rs2 While Not .EOF l

我正在使用查询中的数据填充一个诱人的in Access。到目前为止,我已经填充了3列(添加、删除、购买),我正试图找到其中三列的总数。问题是,很多人没有价值观,其中一些是负值。我该怎么做呢?我有rs2(“添加”)、rs2(“删除”)和rs2(“购买”)中的数据。因此,所有的增加值(如果有的话)都是正值,所有的删除值都是负值(如果有的话),所有的购买值都是正值

我想做一个循环,可能

我将记录数取为intRsCount=25

With rs2
    While Not .EOF
        lngCompanyID = rs2("CompanyID")
        lngUnitPrice = rs2("UnitPrice")
         strSQL2 = "SELECT AddQty from qryAddx WHERE InvValue = " & lngUnitPrice & "  And CompanyId = " & lngCompanyId
        strSQL3 = "SELECT DeleteQty from qryUsedx where UnitValue=" & lngUnitPrice & "  And CompanyId = " & lngCompanyId
        strSQL4 = "SELECT BuyQty from qryVoidx where InvValue =" & lngUnitPrice & "  And CompanyId = " & lngCompanyId

        Set rs3 = CurrentDb.OpenRecordset(strSQL2)
        Set rs4 = CurrentDb.OpenRecordset(strSQL3)
        Set rs5 = CurrentDb.OpenRecordset(strSQL4)
            If rs3.recordCount > 0 Then
              rs2.Edit
              rs2("Added") = rs3("Addqty")
              rs2.Update
            End If
            If rs4.recordCount > 0 Then
                rs2.Edit
                rs2("Delete") = rs4("DelQty")
                rs2.Update
            End If
            If rs5.recordCount > 0 Then
                rs2.Edit
                rs2("Buy") = rs5("BuyQty")
                rs2.Update
            End If
        rs2.MoveNext
        Set rs3 = Nothing
        Set rs4 = Nothing
        Set rs5 = Nothing
    Wend
End With

这是我的密码。我正在尝试添加添加、删除和购买的总和,并将其放入rs2(“小计”),然后对所有25行执行此操作。我不太熟悉ACCESS以及它如何处理空值和负值(所有删除值都是负值)。谢谢。

如果rs2是一个记录集,您可以参考以下列:
rs2.fields(“Add”).Value

做循环通过行,与

if rs2.recordcount > 0 then
    rs2.movefirst
    while not rs2.eof
        'put your commands here
    wend
end if
  • DSum()
    效率低下。如果您正在运行许多操作,它可能会很慢,但在其他情况下也可以
  • Nz()
    将空值转换为零

你肯定试过更多吗?你能分享更多有用的东西吗?这将更全面地填写可用信息。(例如,您正在为所有25条记录计算一个总和,每条记录都是单独的?)我正在寻找三列的总和。所以我有25行和3列。我试图遍历这三列,找到所有25行的ADD、DELETE和BUY的总和。这是解决方案的主要部分。另一部分似乎是记录总数的整数变量,更好地处理空值。有点难说,这个问题很模糊。
Dim strCriteria as String

With rs2
While Not .EOF

    strCriteria = "InvValue = " & !UnitPrice & " And CompanyId = " & !CompanyID

    .Edit
    !Added = Nz(DSum("Addqty", "qryAddx", strCriteria), 0)
    !Delete = Nz(DSum("DeleteQty", "qryUsedx", strCriteria), 0)
    !Buy = Nz(DSum("BuyQty", "qryVoidx", strCriteria), 0)
    .Update

Wend
End With