SQL Select语句仅在选择表单另一个查询时突然检索错误的值

时间:2017-09-20 23:06:23

标签: sql vba ms-access

我在Access数据库中有一个订单创建表单,用户在其中选择产品,并使用SQL select语句触发VBA代码以检索该产品的当前可用性。这就是它的设置方式:

  1. 我有一个Packages表,其中产品批次被添加到库存中。
  2. 我有一个OrderDetail表,产品批次中的商品分配给订单。
  3. 我有一个InventoryPrep查询,其中包含每批次的总打包数和字段,该数字总结了OrderDetail表中每批次分配的产品数。
  4. 然后我有一个Inventory查询,其中有一个计算字段,该字段从InventoryPrep查询中获取TotalPackaged字段,并从InventoryPrep查询中减去TotalAllocated字段。
  5. 以下是我的表单中的VBA代码,由[Batch]组合框的更新触发:

    Dim VBatch As String
    VBatch = Me.Batch.Value
    Dim VAvail As Double
    Dim mySQL As String
    Dim conn1 As ADODB.Connection
    Set conn1 = CurrentProject.Connection
    Dim rs1 As New ADODB.Recordset
    rs1.ActiveConnection = conn1
    
    mySQL = "SELECT Available FROM Inventory WHERE BatchID = " & "'" & VBatch & "'"
            rs1.Open mySQL
            rs1.MoveFirst
            VAvail = rs1.Fields("Available").Value
            Forms!ChangeOrders.ChangeOrderSubform.Form.Availability.Value = VAvail
            rs1.Close
            conn1.Close
            Set rs1 = Nothing
            Set conn1 = Nothing
    

    这已经好几周工作了,当包装商品被添加到Packages表中并且订单被添加到OrderDetail表中时,检索正确的可用金额。昨天它开始从InventoryPrep查询返回Packaged字段。

    我尝试了很多东西,然后从查询中创建了一个表,并使用SELECT语句在表中查找它。那很有效。我的查询设置有一些原因导致它停止识别我的计算字段。我需要帮助!

    这是我第一次发帖,希望这是足够的信息。我是Access和VBA的新手,但我从这个论坛的阅读中学到了很多东西。我希望有人可以帮助或让我知道其他信息可以解释这个问题。

1 个答案:

答案 0 :(得分:1)

要从表或查询中读取单个值,您的代码有点过头了。

对于此方案,Access具有DLookup function

VAvail = DLookup("Available", "Inventory", "BatchID = '" & VBatch & "'")
Forms!ChangeOrders.ChangeOrderSubform.Form.Availability.Value = VAvail

这就是所需要的一切。