Database 使用Dlookup或记录集返回多个值

Database 使用Dlookup或记录集返回多个值,database,vba,ms-access,Database,Vba,Ms Access,我试图计算库存控制的FIFO审计分析。这些都是在MS Access 2010中完成的 1号机组已添加到今天的库存中。 第二单元明天增加 下周,当一个单元被选择用于消费时,理想情况下我们将使用单元1,但如果不是,我将构建一个查询来识别它。到目前为止,我已经使用DLookup函数在一定程度上实现了它 但是,我需要确定哪些特定的旧单元受到FIFO失败的影响。这就是德卢库普失败的地方 Unit # In Date Out Date A

我试图计算库存控制的FIFO审计分析。这些都是在MS Access 2010中完成的

1号机组已添加到今天的库存中。 第二单元明天增加

下周,当一个单元被选择用于消费时,理想情况下我们将使用单元1,但如果不是,我将构建一个查询来识别它。到目前为止,我已经使用DLookup函数在一定程度上实现了它

但是,我需要确定哪些特定的旧单元受到FIFO失败的影响。这就是德卢库普失败的地方

Unit #            In Date              Out Date
A                 1/1/13                1/14/13
B                 1/1/13                1/14/13
C                 1/4/13                1/13/13
D                 1/4/13                1/13/13
上述情况将导致我的查询两次抛出单元C和单元D,这很好。但是,当使用Dlookup时,查询中的每个记录只返回单位A。这是因为Dlookup被设计为只查找第一个符合条件的值,而不是所有记录

例如:

Inefficiently Used Unit                   Overlooked Unit
C                                              A
C                                              A 
D                                              A 
D                                              A  
这就是DLookup函数的外观:

DLookUp(“[集装箱]”、“集装箱效率”、“[承运人]=”、[承运人]、“[集装箱类型]=”、[集装箱类型]、“[集装箱类型]、”、[集装箱日期]、[集装箱日期]、“>和[集装箱过期]、”)

我需要设计它,使标准产生多个值

Inefficiently Used Unit                   Overlooked Unit
C                                              A
C                                              B 

我做了研究,看来使用记录集和VBA将是一种可行的方法。我现在正在处理这个问题(在复制语法时遇到了一些问题,我正在考虑使用FindFirst/FindNext和条件,然后循环),但对于这是否可行或如何编写此代码,我得到了相互矛盾的意见。

当您想从单行中的单个字段返回单个值时,请使用DLookup。如果要返回符合条件的记录计数,请使用DCount

如果您无法想象如何使用其中任何一个,那么您可能需要编写自己的函数并使用DAO记录集(或者ADO,如果您出于某种原因喜欢这样做)

你的问题似乎遗漏了一些重要信息。您希望计数还是希望能够看到实际匹配的行?不管答案是什么,您的问题实际上与表结构(数据库的设计)和SQL有很大关系。在不了解表的设计的情况下,几乎不可能为您提供能够工作的SQL

您的最后两个图表有些误导。您是否希望查询返回两行,第一列显示一种类型的单位,第二列显示另一种类型的单位?如果是这样,您可能需要使用交叉表查询。标准查询确实可以进行分组,但不能将单个字段中的变量拆分为单独的列

再一次,您可以尝试创建一个符合您需要的查询,并在问题上发布SQL,其中包含一些您真正需要的描述。数据是以报告形式还是以表格形式?您希望它如何显示:分组、计数、单个