在庫管理の 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 が 2 回、ユニット D が 2 回吐き出されますが、これは問題ありません。ただし、クエリの各レコードは、Dlookup を使用すると Unit 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] < # " & [開始日] & "# And [終了日] > #" & [終了日] & "#"))
基準が複数の値を生成するように設計する必要があります。
Inefficiently Used Unit Overlooked Unit
C A
C B
私は調査を行いましたが、レコードセットと VBA を使用する方法が適しているようです。私は今これで遊んでいます(構文を複製するのに問題があり、条件付きでFindFirst/FindNextを使用してからループすることを検討しています)が、これが可能かどうか、またはこのコードの書き方について意見が対立しています。