プロが教える店舗&オフィスのセキュリティ対策術

 いつもお世話になっております。売り上げ管理システムの開発で、商品と単価を一括した、商品マスタを作成して商品明細とリレーションをはっております。しかし、マスタの価格を変更してしまった場合過去に受注した全ての商品明細の単価が変わってしまい。前月の売り上げが変わってしまいます。例えば一ヶ月前のものについてのみ、単価マスタの変更の影響を受けさせなくする方法などはあるのでしょうか?よろしくお願いします。

A 回答 (3件)

考え方として商品Mと受注伝票(商品明細)の単価は別に用意する


必要があります。

伝票入力の際にフォームで商品Mを参照して単価などの情報を転記する
構造が必要です。

よってリレーションシップは商品コードなどに対応しますが
フォーム上で商品コード入力→商品Mより商品Mの内容表示→
数量などの入力→決定とする方法が一般的です。

他の方法として商品Mの有効期限を設けて、

同じ商品でも
商品名 開始日 終了日 単価
AAA   2005/4/1 2005/7/31 750 
AAA 2005/8/1 .... 730
などとして単価が代る度にこのレコードを追加していくなどのやり方も
ありますが....

 
    • good
    • 0

商品マスタとは別に単価マスタを作り履歴を持つか、商品明細に単価項目を設け登録時に商品マスタから参照した単価を持てばいいと思います。


そうすれば電子帳簿保存法にも対応出来ると思います。

そのときそのときの単価を保持すると考えれば商品マスタに保持している単価と商品明細に持っている単価の意味は違う物ですね。
    • good
    • 0

過去のデータを別テーブルに書き出すなどの処理が必要になるでしょうね。


リレーションの設定上でフィールドの連鎖更新を選択している場合は
過去のデータであろうと全て同一の最新情報に更新されてしまいます。

毎月、月次が確定したら更新処理を実行するルーチンを作られては如何ですか?

若しくは、リレーションの連鎖更新を解除して、単価が変わった場合、
指定した期間のデータを更新クエリーなどで更新するとか。
方法はいくつかあると思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!