0

我正在尝试计算库存控制的 FIFO 审计分析。这一切都在 MS Access 2010 中完成。

单元 1 已添加到今天的库存中。明天增加第 2 单元。

下周选择一个单位进行消费时,理想情况下我们使用的是 Unit 1,但如果不是,我正在构建一个查询来识别这一点。到目前为止,我已经使用 DLookup 函数在一定程度上使其工作。

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

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("[Container]","Container Efficiency","[Carrier]='" & [Carrier] & "' And [Container Type]='" & [Container Type] & "' And [In Date] < # " & [In Date] & "# And [Out Date] > #" & [Out Date] & "#"))

我需要对其进行设计,以便标准产生多个值。

Inefficiently Used Unit                   Overlooked Unit
C                                              A
C                                              B 

我做了研究,似乎使用 Recordsets 和 VBA 将是要走的路。我现在正在玩这个(在复制语法时遇到了一些问题,并且正在考虑使用 FindFirst/FindNext 与标准,然后循环),但是对于这是否可能或如何编写此代码,我得到了相互矛盾的意见。

4

1 回答 1

1

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

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

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

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

再一次,您可以尝试进行一个查询来满足您的需求,并在您的问题上发布 SQL 并描述您真正要查找的内容。数据会在报告或表格中吗?您希望它如何显示:分组、计数、单独?

于 2013-09-25T22:55:15.823 回答