• 締切済み

Access2003 別のフォームから該当する値を取得する。

Access2003で製品を出庫する処理を作っています。 以下のような帳票形式のフォーム(製品出庫票)でデータを 入力します。  ロット番号  製品コード  製品名  出庫数    ABC001    101     ABC   10  [在庫]←コマンドボタン    EFG005    102    DEF    7      [在庫]         ・        ・       ・   ・ コマンドボタン[在庫]をクリックすると、別のフォームがポップアップ で開き、製品の在庫数がロット番号別に表示されるようにしています。  製品コード  ロット番号  在庫数   101     ABC001    11   101     XYZ005    10 ポップアップしたファームの在庫数を目視し、製品出庫票に出庫数を 入力しています(ここまではできています)。 そこで・・・在庫数を上回る値を入力した場合警告を出すようにしたい のですが、製品出庫票のロット番号とポップアップしたファームの 同番号との付け合せ方法がわかりません。 どすれば、ロット番号同士を付け合せ、出庫数と在庫数の比較が できるでしょうか? よろしくお願いします。

みんなの回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

DLookup関数はテーブルだけではなく、クエリーも指定できます。 ポップアップフォームに表示する在庫数はどうやって計算しているんでしょうか。 クエリーを指定しているのなら、そのクエリーを利用できます。 在庫コマンドボタンをクリックしたときに在庫数を計算しているのなら、その結果を既存のテーブルに書き込むのではなく、一時的に新規でテーブル作成してもいいのではないでしょうか。ポップアップフォームに表示している件数だけですからそんなに多くはないと思うので。

pon_s
質問者

お礼

何度もありがとうございます。 在庫の計算は・・・・ 月初(1日)から出庫日までの入出庫数の差に、前月末時点の残高 を加えた値を在庫数としています。 (入手出庫数は伝票テーブル、前月残高は残高テーブル) ポップアップフォームのレコードソースはクエリ(MSDEなので ストアド)にしています。確かにここに表示される件数は 数件ですから、ワーク用のテーブルを用意して、そこに在庫数を 書き込んでもいいですね。 参考にさせていただきます。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

別フォームからではなく、在庫数を登録しているテーブルから直接索引する方法ならDLookup関数を使えば可能です。 Private Sub 出庫数_Exit(Cancel As Integer) If 出庫数 > DLookup("在庫数", "在庫テーブル", "製品コード = " & 製品コード & " AND ロット番号 = '" & ロット番号 & "'") Then MsgBox "「出庫数>在庫数」です" Cancel = True End If End Sub

pon_s
質問者

お礼

回答ありがとうございます。 確かに在庫を登録しているテーブルがあればご指摘の方法で可能ですね。 しかし、製品の入出庫テーブルと、繰越数を管理するテーブルがあり、それらから当日の在庫数を算出しています。 ポップアップフォームを開くときに、在庫数をテーブルに書き込めば ご指摘の方法で対処だきると思うのですが、入力の都度、入出庫とは 別に在庫数を書くと、ファイルが容量大きくなりすぎるのが心配です。

関連するQ&A