我正在尝试计算库存控制的FIFO审核分析。这一切都在MS Access 2010中完成。
单位1已添加到今日库存。 明天将添加第2单元。
下周当选择一个单位进行消费时,理想情况下我们正在使用单元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]&“'和[Container Type] ='”& [Container Type]&“'并且[在日期]<#“& [在日期]&”#和[外出日期]>#“& [外出日期]&”#“))
我需要设计它,以便标准产生多个值。
Inefficiently Used Unit Overlooked Unit
C A
C B
我做了研究,看起来使用Recordsets和VBA将是最佳选择。我现在正在玩这个(在复制语法时遇到一些麻烦,我正在考虑使用带有标准的FindFirst / FindNext,然后循环),但是如果可能或者如何编写这段代码,我会得到相互矛盾的意见。
答案 0 :(得分:1)
如果要从单个行中的单个字段返回单个值,请使用DLookup。如果要返回符合条件的记录数,请使用DCount。
如果您无法想象它可以与任何一个一起使用,那么您可能需要编写自己的函数并使用DAO记录集(如果您出于某种原因更喜欢它,则使用ADO)。
您的问题似乎缺少一些重要信息。您想要计数还是希望能够看到实际匹配的行?无论答案是什么,您的问题确实与您的表结构(数据库的设计)和SQL有很大关系。在不知道表的设计的情况下,几乎不可能为您提供可行的SQL。
你的最后两张图有点误导。您希望查询返回两行,在第一列中显示一种类型的单位,在第二列中显示另一种单位吗?如果是这样,您可能需要使用交叉表查询。标准查询确实可以进行分组,但它们不能将单个字段中的变体分解为单独的列。
再一次,您可以尝试创建一个满足您需求的查询,并在您的问题上发布SQL,并提供您真正想要的内容的描述。数据会以报告或表格形式出现吗?您希望如何显示:分组,计数,个人?