- ベストアンサー
アクセスで重複データが消えてしまうのですが…
アクセスで商品管理を行っています。 商品コードと数量を入力して各メーカーへの注文書を作成しますが、同じ日に同じ商品コードを選択すると2回目以降のデータが無視されてしまい困っています。 同じ商品であっても注文書に反映されるようにするにはどうしたらよいでしょうか?(複数行で表示されても、数量を合計して一行で表示されても構いません。)どなたか詳しい方助けてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
商品コードと日付(登録、販売等)を固有のキー(主キー)にしてませんか? その場合は登録できませんので、エラーがでます。 >複数行でひょうじされても 主キーの設定を変更になります。 1.商品コード、日付、枝番を主キーにする。 2.日付に時刻値も含める。(2005/8/11 9:00と2005/8/11 10:00は別になります。) 3.別に管理用の主キーを作成して、現在のキーを固有にしない。 >数量を合計して一行で表示 前のレコードを検索して呼び出して、数量を上書き どちらがいいのでしょうか?
その他の回答 (2)
- ttyp03
- ベストアンサー率28% (277/960)
Accessはほとんどわからないし、どういったテーブル構成になっているかわからないですが、恐らく現状は商品コードのみがユニークキーになっているのではないですか? 対処法としてはユニークキーを無くす、もしくはユニークキーを増やすことで対処できると思います。 増やす場合は発注元や注文日時にでもしておけば良いかと思います。 つまり商品コード+発注元+注文日時が同じデータは重複を許さないという設定になります。
お礼
ご回答ありがとうございます。 ユニークキーとはNo.3の方の言われる主キーのことでしょうか? 主キーを解除したらちゃんと別々のデータとしてレポートでも反映されるようになりました。 どうもありがとうございました。
- laputart
- ベストアンサー率34% (288/843)
テーブルの構造はどうなっていますか。 (1)商品マスター(商品コード、商品名、単価....)と (2)注文書テーブル(注文書番号(連番)、商品コード、日付、数量....) とがあると思うのですがリレーションシップはどのように設定されていますか? それをフォームで入力行われていると思うのですが、無視されるとは エラー表示も出ない設定ですか? (テストで)注文書のテーブルかクエリーへ直接入力するとどうなりますか? 1行追加されるはずですよね。 そのあたりを詳しくお聞かせ下さい。
補足
早速のご回答ありがとうございます。 まず入力方法ですが、フォームで入力したものがテーブルに記載され(もちろんテーブルは2行になっています)そのテーブルを元に発注日に条件を指定してクエリーを作成して、そのクエリーよりレポートへ出力します。 繰り返しますが、入力内容はテーブル、クエリーにも2行で書き表されています。レポートの中だけで無視されてしまうのです。エラーメッセージも表示されません。 よろしくお願いします。
お礼
ありがとうございます。 ご指摘の通り商品コードが主キーとなっていました。 主キーを外すことによってちゃんと2行で表示されるようになりました。 合計した方がかっこいいですがとりあえずこれで我慢します。 アドバイスありがとうございました。