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
SQL-DCount()函数中的多个条件_Sql_Ms Access - Fatal编程技术网

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

SQL-DCount()函数中的多个条件,sql,ms-access,Sql,Ms Access,我正在使用MS Access 2007 A: DCount("[Name]","[Main]","[Name] = 'Mark'")/ DCount("[Entry]","[Main]","[Entry] = 1") 好的,我基本上是计算有姓名标记的人数,然后除以数据库中的条目数,它=1。这很容易,但我尝试应用第三个条件,在哪里 [地点]![城市]=“芝加哥” ,但Access不允许我这样做(它找不到表,即使它在我上面指定的表中) DCount("[Name]","[Main]",

我正在使用MS Access 2007

A: DCount("[Name]","[Main]","[Name] = 'Mark'")/
   DCount("[Entry]","[Main]","[Entry] = 1")
好的,我基本上是计算有姓名标记的人数,然后除以数据库中的条目数,它=1。这很容易,但我尝试应用第三个条件,在哪里

[地点]![城市]=“芝加哥”

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

   DCount("[Name]","[Main]","[Name] = 'Mark' AND [Location]![City] = 'Chicago'")/
   DCount("[Entry]","[Main]","[Entry] = 1")
我也尝试过在设计视图中使用Where子句过滤城市,但是在上面的计算之后会应用该条件,因此无论城市如何,计算都是相同的。我只需要它为芝加哥市执行上面的计算

使用DCount是否可以执行类似的操作

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


谢谢

什么是[Location]![City]?我的答案基于这样的假设:它引用了名为Location的表中名为City的字段

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

从中,域是“标识构成域的记录集的字符串表达式。它可以是不需要参数的查询的表名或查询名。”

因此,如果您希望DCount条件引用两个表中的字段,请将表以查询的形式合并到单个“域”中。您的查询可能类似于“qryMainWithCity”:

如果该查询适用于您的情况,那么您应该能够使用如下所示的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)

返回返回的记录集中的第一个字段(索引以零为基础)。这样你就不必保存查询了。

谢谢Hans,你已经帮了我好几次了,我真的很感激你。所以这可以用于交叉表查询,对吗?不客气,Jerry。我想它可以用于交叉表查询,但我不是真正需要询问的人,因为我很少使用它们。如果你遇到麻烦,你知道怎么问这里有个问题。对吗?:-)谢谢大卫,你也一直在帮助我,我很感激。
  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)