ms-access-SQL-DCount()函数中的多个条件



我使用的是MS Access 2007。

A: DCount("[Name]","[Main]","[Name] = 'Mark'")/
   DCount("[Entry]","[Main]","[Entry] = 1")

好的,所以我基本上是在计算有Mark这个名字的人的数量,我用它除以数据库中的Entry的数量=1。这很容易,但我正在尝试应用第三个条件,即

[位置]![城市]="芝加哥"

,但Access不允许我这样做(它找不到表,即使它在我上面指定的表中。

   DCount("[Name]","[Main]","[Name] = 'Mark' AND [Location]![City] = 'Chicago'")/
   DCount("[Entry]","[Main]","[Entry] = 1")

我也尝试过在Design视图中使用Where子句过滤城市,但在上面的计算之后应用了该条件,因此无论城市如何,计算都是相同的。我只需要它来为芝加哥市进行上述计算。

DCount有可能发生这样的事情吗?

此外,如果你能告诉我如何按城市分组,同时分别计算每一个,我会很高兴地死去,但如果有人也能告诉我第一种方法,我也会非常感激。

感谢

什么是[Location]![城市]?我的回答是基于这样的假设,即它引用了名为Location的表中名为City的字段。

如果这是正确的,我认为你的问题是因为你试图根据一个字段指定一个条件,该字段不是你告诉DCount使用的([Main])的一部分。

在Microsoft文档中,域是"一个字符串表达式,用于标识构成域的记录集。它可以是表名,也可以是不需要参数的查询的查询名。"

因此,如果您希望DCount标准引用两个表中的字段,请将查询形式的表合并到一个"域"中。也许你的查询可能是这样的,"qryMainWithCity":

SELECT m.[Name], m.Entry, m.City_ID, l.City
FROM
    Main AS m
    INNER JOIN Location AS l
    ON m.City_ID = l.City_ID;

如果该查询适用于您的情况,那么您应该能够使用DCount表达式获得您想要的内容,如下所示:

DCount("*","qryMainWithCity","[Name] = 'Mark' AND City = 'Chicago'")

我刚刚发布了与@HansUp相同的答案。我有一种替代方法,那就是使用即时记录集查找:

  Dim varReturnValue as Variant
  varReturnValue = CurrentDB.OpenRecordset("SELECT Main.[Name] FROM Main INNER JOIN Location ON Main.City_ID = Location.City_ID WHERE Main.[Name] = 'Mark' AND Location.City = 'Chicago';")(0)

返回返回的记录集中的第一个字段(索引是从零开始的)。这样就不必保存查询。

最新更新