【问题标题】:MS Access VBA query. Select followed by a count of the resultMS Access VBA 查询。选择后跟结果的计数
【发布时间】:2015-10-14 18:23:44
【问题描述】:

我最近问了一个类似的question。但是,我认为我不知道当时我想用我的 VBA 完成什么程度。我正在使用 Access 2010 并在表单中创建 on_click 命令。

所以我的意图是创建一个查询,我打算采取的方法如下:

varSQL2 = "SELECT * FROM Inventory WHERE Part_ID=" & rs!Part_ID & ";"
Set rs2 = db.OpenRecordset(varSQL2, dbOpenDynaset)
varStock_Level = rs2!Stock_Level +rs!Quantity

rs!quantityrs!Part_ID 来自我代码前面的另一个查询。 stock_levelpart_IDInventory 表中的字段。

我现在需要能够创建一个查询来计算有多少记录是由于 varSQL2 而返回的。所以我可以按照以下方式做一些事情:

varSQL2 = "SELECT * FROM Inventory WHERE Part_ID=" & rs!Part_ID & ";"
Set rs2 = db.OpenRecordset(varSQL2, dbOpenDynaset)
varStock_Level = rs2!Stock_Level +rs!Quantity
    if count >1 then 
      ....[code]....
    end if

我真的不知道从哪里开始,我对子查询有点困惑。我相信我需要 2 个查询而不是一个。任何帮助表示赞赏。

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    有几种方法:

    1. 使用 COUNT 函数创建查询(与您在参考问题中所做的类似)
    2. 使用您的查询,使用rs2.movelast 并使用rs2.RecordCount 读出计数
    3. 使用域计数

      Dim lngRows As Long lngRows = DCount("*", "Inventory", "Part_ID='" & rs!Part_ID & "'")

    【讨论】:

      【解决方案2】:

      凭记忆:

      rs.movelast
      debug.print rs.recordCount
      

      在使用RecordCount 之前,您必须始终Movelast。我的表/查询很大,可能很耗时。

      【讨论】:

      • 然后我将其称为if rs2.recordcount>1?
      • 它看起来运行良好!在很多情况下,这比预期的要容易得多。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多