• ベストアンサー

アクセスで重複データが消えてしまうのですが…

アクセスで商品管理を行っています。 商品コードと数量を入力して各メーカーへの注文書を作成しますが、同じ日に同じ商品コードを選択すると2回目以降のデータが無視されてしまい困っています。 同じ商品であっても注文書に反映されるようにするにはどうしたらよいでしょうか?(複数行で表示されても、数量を合計して一行で表示されても構いません。)どなたか詳しい方助けてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

商品コードと日付(登録、販売等)を固有のキー(主キー)にしてませんか? その場合は登録できませんので、エラーがでます。 >複数行でひょうじされても 主キーの設定を変更になります。 1.商品コード、日付、枝番を主キーにする。 2.日付に時刻値も含める。(2005/8/11 9:00と2005/8/11 10:00は別になります。) 3.別に管理用の主キーを作成して、現在のキーを固有にしない。 >数量を合計して一行で表示 前のレコードを検索して呼び出して、数量を上書き どちらがいいのでしょうか?

kenchan2001
質問者

お礼

ありがとうございます。 ご指摘の通り商品コードが主キーとなっていました。 主キーを外すことによってちゃんと2行で表示されるようになりました。 合計した方がかっこいいですがとりあえずこれで我慢します。 アドバイスありがとうございました。

その他の回答 (2)

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

Accessはほとんどわからないし、どういったテーブル構成になっているかわからないですが、恐らく現状は商品コードのみがユニークキーになっているのではないですか? 対処法としてはユニークキーを無くす、もしくはユニークキーを増やすことで対処できると思います。 増やす場合は発注元や注文日時にでもしておけば良いかと思います。 つまり商品コード+発注元+注文日時が同じデータは重複を許さないという設定になります。

kenchan2001
質問者

お礼

ご回答ありがとうございます。 ユニークキーとはNo.3の方の言われる主キーのことでしょうか? 主キーを解除したらちゃんと別々のデータとしてレポートでも反映されるようになりました。 どうもありがとうございました。

  • laputart
  • ベストアンサー率34% (288/843)
回答No.1

テーブルの構造はどうなっていますか。 (1)商品マスター(商品コード、商品名、単価....)と (2)注文書テーブル(注文書番号(連番)、商品コード、日付、数量....) とがあると思うのですがリレーションシップはどのように設定されていますか? それをフォームで入力行われていると思うのですが、無視されるとは エラー表示も出ない設定ですか? (テストで)注文書のテーブルかクエリーへ直接入力するとどうなりますか? 1行追加されるはずですよね。 そのあたりを詳しくお聞かせ下さい。

kenchan2001
質問者

補足

早速のご回答ありがとうございます。 まず入力方法ですが、フォームで入力したものがテーブルに記載され(もちろんテーブルは2行になっています)そのテーブルを元に発注日に条件を指定してクエリーを作成して、そのクエリーよりレポートへ出力します。 繰り返しますが、入力内容はテーブル、クエリーにも2行で書き表されています。レポートの中だけで無視されてしまうのです。エラーメッセージも表示されません。 よろしくお願いします。

関連するQ&A

  • 重複データの合計

    コード 商品名 個数 合計 10001 机 赤 1 10090 椅子 青 4 10025 箪笥 茶 5 10001 机 赤 3 以上のようなデータがあります。商品コードは3000種類くらいあるのですが、商品コード毎に並べ替えて個数を合計したいです。 また可能であれば、コード毎に並べ替えた各一番最後の行の合計のセルに数字が自動で反映出来ないでしようか⁈ よろしくお願いします。

  • Access リレーションとデータの参照について

    パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。 只今、注文実績管理をする為にアクセスを構築していますが思うようにできません。 職場でPCの相談する相手がいないため、大変困っています。どなたかお知恵をください。 相談の内容ですが、【C】の注文テーブルにある「注文番号」と「数量」と「日付」で 期間中の発注実績の集計をしたいと考えています。 【B】と【C】がまったく関連付けることができません。 【A】顧客テーブル    (1)ID(オートナンバー)    (2)発注コード    (3)氏名     (注)顧客テーブルにある「発注コード」がローマ字と数字の組み合わせで        、これでリレーションシップを設定したいのです。 【B】商品テーブル    (1)ID(オートナンバー)    (2)注文番号    (3)品名    (4)金額 【C】注文テーブル    (1)ID(オートナンバー)    (2)発注コード    (3)日付    (4)氏名    (5)注文番号1    (6)注文番号1(数量)    (7)注文番号2    (8)注文番号2(数量)    (9)注文番号3    (10)注文番号3(数量)     ・     ・     ・     注文番号50     注文番号50(数量)

  • ACCESSを使って重複しているデータを省きたい

    xlsデータをACCESSにインポートしています。 理由は、同じデータ(行)が混在しているシートを整理したいからです。 <各項目名> 整理番号 契約日 注文時間 商品コード 品名 という項目なのですが、5000件中、1000件近くのたぶりがあります。 このダブリについて、「整理番号、契約日、品名」が同じであれば、先頭データだけを 表示するというやり方でかぶらないデータだけを抜き出すことはできないでしょうか。 (そもそも重複しているデータがあることも問題なのですが、相対先が どじっており、こちらでフォローしたい) mm クエリで対応したいのですがいい方法ありますでしょうか。

  • Access DLOOKUPについて

    Access DLOOKUPについて こんにちは。Access2010でのDlookupについてお教えください。 ■注文テーブル オーダーID,商品コード,数量,お店番号 001,A01,1,お店1号 001,A02,5,お店1号 002,B01,3,お店2号 002,B02,3,お店2号 ※同一オーダーIDで商品コードが重複する事は無 ■確認用注文テーブル 商品コード,数量,お店番号 A01ですよ,1お店1号 B02です,3,お店2号 ※なんと、オーダーIDがありません。さらに商品コードに変な文字列も入っています。 ■やりたい事 フォームに「判定」というテキストボックスを配置しました。 コントロールソースで以下の条件にあっているなら○、あっていないなら×と表示したいです。 ○注文テーブル.商品コードと確認用注文テーブル.商品コードを比較。 注文テーブル.商品コードのデータが確認用注文テーブル.商品コードに含まれていること。 ○注文テーブル.数量と確認用注文テーブル.数量がイコールであること。 ○注文テーブル.お店番号と確認用注文テーブル.お店番号がイコールであること。 これらを満たしていれば、○、満たしていなければ×と表示したいです。 Dlookupでなくても、何か他に方法がありましたらお教えください。 宜しくお願いします。

  • Accessの操作について質問です。

    Access2002をつかっています。 登録コード,商品コード,数量(1),原価・・・と並んだテーブル1と 商品ジャンルコード,商品コード,商品名,原価,数量・・と並んだテーブル2があります。 テーブル2からテーブル1にある商品コードと同じものを抜き出したいと思います。 商品ジャンルコード(テーブル2),商品コード(テーブル1にありテーブル2にもある商品コード),商品名(テーブル2),原価(テーブル2),数量(テーブル1と同数),・・ というデータを新たに作りたいです。 データ1の特徴 ・登録コードが違い、他の列は全て同じの行がある。 ・数量は全て1 データ2の特徴 ・数量は1以外が多い ・原価、数量が違い、他の列は全て同じ行がある。 例えば、テーブル1にある商品コードAという商品はテーブル1では数量1で計10行あり、 テーブル2には数量6と数量4と数量3で3行になっているという形です。 テーブル2からテーブル1の数量10を抜き取ったデータを作りたいです。10はテーブル2の計13のどの行からとってもいいです。 わかりづらくて申し訳ございませんが、わかる方いらっしゃいましたらお願いします。

  • ACCESS SQLでの重複値の制御

    ACCESSを利用して簡易的なシステムを構築しております。 複数テーブルからデータ抽出しているのですが、以下のようなレコードで、 重複している列の表示のみを何も表示しないように制御したいと考えています。 <SQL> SELECT A.HCD AS 商品CD, A.HNM AS 商品名称, A.棚卸数量, B.仕入日, B.数量 AS 仕入数量 FROM XXXXX_T A, WWWWW_T B WHERE A.HCD = B.品目コード 実際に抽出すると、同一商品で複数回の仕入が発生しますので、 同じ商品CD、商品名称が何回も表示されてしまいます。 抽出結果としては正しいのですが、見た目的に商品CD、商品名称は最初の1度 だけ表示するよう制御できればと考えています。 以上ですが、何か分かる方がいらっしゃいましたらご回答頂けると助かります。

  • access 帳票形式での Sum関数について

    お世話になります、 access2003を使っています、 テーブル商品があり、以下3つの列があります 商品名 単価 数量 フォーム集計をテーブル商品を元に帳票形式で作りました 帳票の1行にテキストボックス”金額”を追加してそのコントロールソースの値を [単価]*[数量]にしました。 帳票の1行づつは 商品名 、単価、 数量、金額([単価]*[数量]) の4つの列が並びます。 上記までは一行づつ計算して金額の値は正確に表示されます。 このフォームのフッターに帳票の各業の金額の合計を求めるため テキストボックス”合計金額”をつくり コントロールソースを =Sum([金額]) にしたのですが、明らかに合計金額が違った数値が出てきます。 出てきた金額が何をどう計算して出てきたのか見当が付きません どのようにしたら正確な合計金額が得られるのでしょうか? 何方かお教えいただけますようお願い致します、

  • ACCESS

    皆さんのお力添えを頂けますでしょうか? Microsoft ACCESSにおけるレコードの入力について 現在access2010を使い以下のプログラムを作成しています。 (1)テーブル : T_注文明細 (フィールド名)ー(データ型) ・注文ID ー オートナンバー ・商品No ー テキスト ・数量 ー 数値 (2)テーブル : T_注文数 数量として1~10までの数値が入れてあります。 (フィールド名)ー (データ型) ・数量 ー 数値 (3)テーブル: T_商品 (フィールド名)ー (データ型) ・商品Noーテキスト ・商品名ーテキスト ・金額ー通貨 (4)フォーム : F_商品一覧 商品リストが画像付き(商品1種類につき1画像)で示されており、画像をクリックすると 別のフォーム:F_商品○○(添付写真のようなフォームが商品毎に作成されている)へと進みます。 (5)フォーム : F_商品○○ コントロールボックスと、注文ボタンを配置しており それぞれボタンにコードを埋め込んでいます。 ・コントロールボックスについて 値集合ソース : T_注文数 値集合タイプ : テーブル/クエリ 上記(2)のT_注文数をソースに数量:1~10を選択します ・注文ボタンについて 以下の内容でコードを書いています。 Private Sub btn1_Click() Dim oRs As DAO.Recordset 'テーブル読み込み(レコードセット作成) Set oRs = CurrentDb.OpenRecordset("T_注文明細", dbOpenDynaset) 'レコードが見つかった場合 If oRs.NoMatch = False Then 'レコードの内容を書き換えます oRs.Edit oRs("数量").Value = Me.cmbsuuryou5.Value oRs("商品No").Value = "商品No○○" oRs.Update End If 'レコードセットの終了処理 oRs.Close Set oRs = Nothing MsgBox "注文しました。", vbOKOnly + vbInformation, "注文" End Sub 以上を踏まえ、現在下記の点で困っております 問題1: 数量を選択して、注文ボタンを押すとT_注文明細のフィールドに 内容が反映されますが、常に先頭のレコードが上書きされてしまいます。 希望は最新のレコードとしてテーブルに挿入され、既存のレコードを上書きすることなくレコード数を増やしたいのですが、うまくいき ません。 問題2: F_注文にて複数種類の商品をそれぞれ複数個注文した際に T _注文明細に複数のレコードが挿入(注文 ID,商品 No,数量)が挿入されてほしいのですが、 現状では問題 1と同様に、常に先頭のレコードの商品Noと数量だけが上書きされていまい、注文履歴が積み上がりません。 解決せずに困っております。 どなたか、ご教授頂けますでしょうか? よろしくお願いいたします。

  • 重複したデータを1つにまとめる方法

    はじめまして。困っているので教えてください。 ピボットした後のデータなのですが、A列に 商品コード、B列以後には 売上高が月別に表示されています。 もともと世界各国のデータをまとめたものなので、同じ商品が各国で売られており、A列には同じ商品コードがたくさんあります。 この重複したコード・月別の売上高を1行に合計してまとめたいのですが、良い方法が思いつきません。 1000行以上もあるデータなのですが、今までは1つ1つ SUMをしてまとめていました。 とても時間がかかるので、何か良い方法があれば教えてください!

  • Access select句でのサブクエリ

    Access2010でのサブクエリについてお教えください。 注文テーブル 商品コード,数量,フラグ A,3,x B,2,x C,1,x A,3,y B,4,y C,3,y このようなテーブルがあります。 SELECT 商品コード,数量 FROM 注文テーブル GROUP BY 商品コード A,6 B,6 C,4 やりたい事はフラグがxの数量も表示たいと思っています。結果としては、下記の結果が欲しいです。 A,6,3 B,6,2 C,4,1 select句でサブクエリを作りました。 SELECT 商品コード,数量,(SELCT 数量 FROM 注文テーブル WHERE フラグ='x' GROUP BY 商品コード) FROM 注文テーブル GROUP BY 商品コード しかしこのコードを実行すると、「このサブクエリでは1つのレコードしか返せません」と表示されます。 どこを修正したら正しいデータを取得することができるでしょうか?

専門家に質問してみよう