在 table 字段中访问 2013 年增加的数量

access 2013 increasing quantity in a table field

美好的一天。我对我的代码中发生的事情感到有些困惑。我有一个收集 txtQntyRecdcboSupplySource 的用户表单。我计算了lookupValue。它工作得很好。它成功地将 txtQntyRecd 放置在正确的 tblWarehouseLocations.WQuantity 位置。代码是:

    updateQnty = "UPDATE tblSupplySources INNER JOIN ((tblWarehouseLocations " & _
            "INNER JOIN tblSupplySource_WarehouseLocation ON tblWarehouseLocations.WLocation_ID = tblSupplySource_WarehouseLocation.SWLocation_ID)) " & _
            "ON tblSupplySources.SupplySourceID = tblSupplySource_WarehouseLocation.Supply_Source_ID " & _
            "SET tblWarehouseLocations.WQuantity = '" & Me.txtQntyRecd & "'" & _
              "WHERE (((tblSupplySource_WarehouseLocation.Supply_Source_ID)= " & Me.cboSupplySource & ") " & _
             " AND ((tblWarehouseLocations.WLocation_ID)=" & lookupValue & "))" 
     CurrentDb.Execute updateQnty, dbFailOnError

我想做的是将下一个数量添加到同一位置。如果我将 SET 语句更改为以下内容,我会得到奇怪的结果:

    SET tblWarehouseLocations.WQuantity = tblWarehouseLocations.WQuantity + '" & Me.txtQntyRecd & "'"

如果我在第一个语句中输入 200,我的 WQuantity 字段中会得到 200。当我更改为第二个语句并尝试将 1 添加到 200 时,我得到的结果是 211。如果我再次添加 1,结果是 223。再次添加 1,结果是 236。

有人可以解释发生了什么以及为什么结果不是 201、202 和 203 吗?将来我还需要从 WQuantity 中减去数量。

谢谢

您在整数周围添加引号并将其附加为字符串。将其更改为:

".....
SET tblWarehouseLocations.WQuantity = tblWarehouseLocations.WQuantity + " & val(Me!txtQntyRecd) & "....
...."

我已将 . 更改为 !,因为我认为它仍然是对象属性和控件之间的一个很好的区别,并在转换字符串时使用了 val 函数数字值到整数值。

这是您的完整查询:

' When I use values from controls, I like to store them in vars
Dim quantityReceived As integer
quantityReceived = val(Me!txtQntyRecd)

updateQnty = "UPDATE tblSupplySources INNER JOIN ((tblWarehouseLocations " & _
        "INNER JOIN tblSupplySource_WarehouseLocation ON tblWarehouseLocations.WLocation_ID = tblSupplySource_WarehouseLocation.SWLocation_ID)) " & _
        "ON tblSupplySources.SupplySourceID = tblSupplySource_WarehouseLocation.Supply_Source_ID " & _
        "SET tblWarehouseLocations.WQuantity = tblWarehouseLocations.WQuantity + " & quantityReceived & _
          " WHERE (((tblSupplySource_WarehouseLocation.Supply_Source_ID)= " & Me.cboSupplySource & ") " & _
         " AND ((tblWarehouseLocations.WLocation_ID)=" & lookupValue & "))" 

我解决了这个问题。我创建了一个 SELECT 查询来获取 WQuantity 中的当前数量。现在 quantityReceived = Me!txtQntyRecd + 当前数量。使用 SET tblWarehouseLocations.WQuantity = " & quantityReceived 它工作正常。但是,如果看起来很麻烦。

    ' lookupValue gives the index into the tblWarehouseLocations where WQuantity resides
    Dim lookupValue As Integer
lookupValue = DLookup("[WLocation_ID]", "[tblWarehouseLocations]", "[Location_Name] = '" & Me.cboWLocation & "'")

'Define SQL Query
strSQL = "select tblWarehouseLocations.WQuantity FROM tblWarehouseLocations WHERE (((tblWarehouseLocations.WLocation_ID)= " & lookupValue & "))"

Set rs = db.OpenRecordset(strSQL)

If IsNull(rs!WQuantity) Then
    dbvalue = 0
Else
    dbvalue = rs!WQuantity
End If

Dim quantityReceived As Integer
quantityReceived = Val(Me!txtQntyRecd) + dbvalue


updateQnty = "UPDATE tblSupplySources INNER JOIN ((tblWarehouseLocations " & _
    "INNER JOIN tblSupplySource_WarehouseLocation ON tblWarehouseLocations.WLocation_ID = tblSupplySource_WarehouseLocation.SWLocation_ID)) " & _
    "ON tblSupplySources.SupplySourceID = tblSupplySource_WarehouseLocation.Supply_Source_ID " & _
    "SET tblWarehouseLocations.WQuantity = " & quantityReceived & _
    " WHERE (((tblSupplySource_WarehouseLocation.Supply_Source_ID)= " & Me.cboSupplySource & ") " & _
    " AND ((tblWarehouseLocations.WLocation_ID)=" & lookupValue & "))"

    CurrentDb.Execute updateQnty, dbFailOnError