- ベストアンサー
在庫数の取得
T_zaikoというテーブルに 日付 品名 品番 入庫 出庫 在庫数 2006/08/01 りんご 0001 3 3 2006/08/01 りんご 0001 1 2 2006/08/01 りんご 0002 8 2 6 2006/08/02 りんご 0001 棚卸 6 2006/08/03 りんご 0002 棚卸 8 があります。 これを品番は関係なしで在庫数を求めたいのですが どうすればいいのでしょうか? 日付 品名 入庫 出庫 在庫数 2006/08/01 りんご 3 3 2006/08/01 りんご 1 2 2006/08/01 りんご 8 2 8 2006/08/02 りんご 棚卸 12 2006/08/03 りんご 棚卸 14 というようにしたいのです。 上から順に入庫のときは足して出庫のときは引いていくと棚卸のときがおかしくなります。 どうすればいいのでしょうか? activereportへ出力したいのです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
T_zaikoからデータを取得する際に、 ・日付 ・品名 ・在庫数 ・データタイプ(入庫、出庫、棚卸) ORDER BY 日付、品名の昇順? という形式で取り、activereportではデータタイプを見て挙動(罫線の種類等のレイアウト面)を変えるというのは如何でしょうか? なお、 ・入庫は在庫数+入庫数 ・出庫は在庫数-出庫数 というのはわかるのですが、棚卸というのは在庫数に対してどのような演算を行うのでしょうか?
その他の回答 (2)
- Uminchw
- ベストアンサー率20% (1/5)
入庫のときは+します。 出庫のときはーします。 棚卸数(実残)を別フィールドに持っている場合は在庫数を棚卸数とします。 棚卸数(帳簿残)を求めるのなら棚卸数を在庫数とします。
テーブルと言われていますが、Accessでなく、ExcelのVBAでしょうか? Accessなら「入庫」フィールドに「棚卸」という文字データは入れられないと思いますので... また、ご質問の例では在庫が合っていないように見えます。 8/2時点で品番0001の帳簿残が2であったが、棚卸しで実在庫は8であったため在庫数に6を追加した。 また、8/3時点で品番0002の帳簿残が8であったが、棚卸しで実在庫は16であったため在庫数に8を追加した。 従って、品番は関係なしで集計した場合、8/3の時点で在庫は8+16=24であるはずなので、多分質問文で24と書くところを14と書いてしまったのだと推察します。 それはともかく、入庫データに数値型と文字型が混在するのがネックです。 入庫データを、一旦、バリアント型の変数(例:var入庫)で受けてから、 If VarType(var入庫) = vbString Then などとし、状況を切り分けないとうまくいかないと思います。