0

在庫管理の 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を使用してからループすることを検討しています)が、これが可能かどうか、またはこのコードの書き方について意見が対立しています。

4

1 に答える 1

1

1 つの行の 1 つのフィールドから 1 つの値を返す場合は、DLookup を使用します。条件を満たすレコードの数を返したい場合は、DCount を使用します。

いずれかで動作させることが想像できない場合は、独自の関数を作成し、DAO レコードセット (または何らかの理由でそれを好む場合は ADO) を使用する必要があるかもしれません。

あなたの質問には重要な情報が欠けているようです。カウントが必要ですか、それとも実際に一致する行を表示できるようにしたいですか? 答えが何であれ、あなたの質問は実際にはテーブル構造 (データベースの設計) と SQL に大きく関係しています。テーブルの設計を知らなければ、機能する SQL を提供することはほとんど不可能です。

最後の 2 つの図はやや誤解を招きます。クエリが 2 つの行を返し、最初の列に 1 種類の単位が表示され、2 番目の列に別の種類の単位が表示されると思いますか? その場合は、おそらくクロス集計クエリを使用する必要があります。標準クエリは確かにグループ化を行うことができますが、単一フィールド内のバリエーションを個別の列に分割することはできません。

もう一度、必要なことを実行するクエリを作成し、実際に探しているものの説明を付けて質問に SQL を投稿してみてください。データはレポートまたはフォームに含まれますか? どのように表示しますか: グループ化、カウント、個別?

于 2013-09-25T22:55:15.823 に答える