重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

在庫管理から売上(社内)管理のシステムを構築し、使っているのですが、売り単価が変更になった場合、過去の売上データが変わってしまいます。
商品コードは変更しないで単価を変えることは出来ませんか?

access暦は長いのですが、独学なので解からないことだらけです。どうぞよろしくお願いいたします。

A 回答 (4件)

>売り単価が変更になった場合過去の売上データが変わってしまいます。


原因は2通りあります。
1.リレーションで参照整合性のフィールドの連鎖更新が設定されている。そのため商品のマスタの売り単価が変更されると過去の売上のレコードまで変更されてしまう。
2.過去の売上データに売り単価のフィールドがなく保存されていない。そのため商品のマスタの売り単価を参照するので変更されれば変更後の金額でしか計算できない。

1の場合は売り単価が変更されると自動的に過去の売り単価も変更されてしまいます。連鎖更新が設定されていればチェックをはずし売り単価が変更になっても更新されないようにすれば大丈夫です。
2の場合は他の方が書いてありますが商品のマスタの売り単価のみで売り単価をクエリ等で演算している場合は売り単価が変更になれば変更後の金額でしか過去の売り単価も計算できません。
売上時の売り単価で過去のレコードも計算したいのであれば売上時の売り単価を保存するフィールドをそのテーブルに作り売上時の売り単価を保存するしかありません。

売り単価がいつ変更になったかが分かるテーブルでもあれば売上のレコードの売上日と売り単価変更日を参照してその時点での売り単価で計算することはでいますが。
    • good
    • 0
この回答へのお礼

何か設定があるはず!って思っておりました。
たぶん「連鎖更新」で回避できると思うので、がんばってみます。
貴重なお時間とアドバイスありがとうございました。

お礼日時:2005/08/26 17:26

私の場合、将来内容が変更になる可能性のあるものは、冗長になってもテーブルにそのデータ(この場合は売上テーブルの単価フィールドとして)を入れてしまいます。



どうしてもルックアップ系で使いたいのなら、
単価マスターの履歴管理をしなければならないでしょう。
単価マスターにサブコードなどを追加し、商品コードとそのサブコードを売上テーブルに保存するしかないでしょう。
でもコードが複雑になるのであまりお勧めしませんが...
    • good
    • 0
この回答へのお礼

単価マスターにサブコード。方法として大変参考になりました。ありがとうございました。

お礼日時:2005/08/26 17:19

過去の売上データが変わってしまうとのことですが、売上を選択クエリ上で演算結果として表示させている、ということでしょうか?


もしそうではなく、テーブル上に売上データを記録するフィールドがあって、アクションクエリ(更新/追加)で記録しているのだとすれば、そのクエリにWhere条件を追加することで対処できる気がするのですが・・・。
(例えば、fuuten_no_nekoさんがいわれているような「出庫日時」など)


私も独学なので、見当違いでしたら済みません。
    • good
    • 0
この回答へのお礼

すみません。説明が不足していまして。。。
リレーションを組んでいて、売上データには、ID・日付・数量の情報。商品マスタには、ID・品名・単価の情報。でクエリで売上金額を算出してるんです。
#04、O_cyanさんの参照整合性フィールドの連鎖更新・・・が、まずは簡単そうなのでトライしてみます。
ありがとうございました。

お礼日時:2005/08/26 17:15

データ構造を変更しなければならないでしょう。


例えば現在
商品マスタ
商品コード(PKey)、商品名、単価、. . . .

を二つのテーブルに分け

商品マスタ
商品コード(PKey)、商品名、. . . .

単価リスト
単価ID(Pkey)、商品コード、単価、開始日時、終了日時、. . . .

みたいにすれば、これでリレーションが取れます。出庫時の日時が記録されていなければ駄目ですが、もしそうならばそこから直さなければ。

とにかく基本的な部分の変更なので、かなりしんどいでしょう。ご健闘を祈ります
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
こんな方法もあるのか・・・と感心しております。
大変参考になりました。ありがとうございました。

お礼日時:2005/08/26 17:21

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

関連するカテゴリからQ&Aを探す