アクセスで重複するレコードを追加しない方法

このQ&Aのポイント
  • Office97のアクセスを利用しています。すでに作成されたデータベースがあります。この中に、複数のテーブル・クエリ・他(フォームやマクロなど)があります。分かる範囲でこのデータベースを触る許可はいただいています。ただし、テーブルや保存の方法、データ型などの基本しかわからない初心者です。
  • 今回は、あるテーブルにデータを大量に追加したいと思っています。その際、重複する(複数条件)データは追加しないようにしたいのです。
  • 方法をご教授ください。
回答を見る
  • ベストアンサー

アクセスで重複するレコードを追加しない方法

条件 Office97のアクセスを利用しています。 (会社のPCなので古いものしかありません) すでに作成されたデータベースがあります。 この中に、複数のテーブル・クエリ・他(フォームやマクロなど)があります。 分かる範囲でこのデータベースを触る許可はいただいています。 ただし、テーブルや保存の方法、データ型などの基本しかわからない初心者です。 状況 今回は、あるテーブルにデータを大量に追加したいと思っています。 その際、重複する(複数条件)データは追加しないようにしたいのです。 例えば、 【テーブルA】 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C           004   BB001   大阪    A           005   BB001   大阪    B    【テーブルB】             コード   場所   納場                AA001   東京    B                AA001   東京    C           → AA001   東京    D                  BB001   大阪    B 上記のテーブルが2つあり、テーブルAを元に、テーブルBのデータを追加する場合、 【テーブルA】 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C             AA001   東京    D           004   BB001   大阪    A           005   BB001   大阪    B というように表を更新したいと思っています。 上記の表のように「コード」が一致しても「納場」が一致しなければ追加を行いたいのです。 方法をご教授ください。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> 「一つの条件が一致した場合」しか利用できないのでは? ウィザードが作成したクエリは雛形なので、さらなる編集は可能です。 できあがったクエリをデザインビューで開いて見てください。 結合される列同士を結ぶ線があるので、もうひとつの条件となる列を同じように結びます。 (テーブルAの「列」をドラッグして、テーブルBの「列」にドロップ) そのあと、「不一致クエリウィザード」が作成した線を右クリックして内容を確認。 ご自身で追加した線を右クリックして、上記内容と合わせればOK。 なお、#1の方法では、テーブルBのレコードが減ります。 テーブルBを現状のまま残したいなら、テーブルBをコピーしておいてくださいね。

uchin55
質問者

補足

なるほど。 あとはこのデータを一括で追加するだけですね。 方法はどうしたらいいんでしょうか。 オートナンバーだと無理でしょうか?

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

テーブルAの仕様によりますね。何でも良いならそのままでもかまいません。 例示の【テーブルA】が5レコードの状態なら、以下のようになるだけです。 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C        006   AA001   東京    D           004   BB001   大阪    A           005   BB001   大阪    B 仕様がわからないままの「オートナンバー振りなおし」はリスクが大きいことに注意してください。

uchin55
質問者

補足

リスクは避けたいですが・・・ 不一致クエリを利用するだけでも、未登録(追加すべきレコード)が 判明するメリットはありますよね。 (500件が100件くらいには減るかも) そのデータを正規の入力方法で入力したほうがいいかも。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

必ず「作業前にMDBファイルをバックアップしてから」ですよ。 クエリ作成ウィザードに「不一致クエリ」がありませんかね? 「不一致クエリ」で【テーブルB】から抽出作成されたレコードが追加してはいけないレコードになります。 このクエリを開き、表示されたレコードを削除すれば、テーブルBには「追加するものだけ」が残ります。 ところで【テーブルA】にはオートナンバー列がありますが、どうなさるおつもり?

uchin55
質問者

補足

>不一致クエリ なるほど。 ですが、これは「一つの条件が一致した場合」しか利用できないのでは? >オートナンバー どうしましょうか。 一括追加を行ったら、ナンバリングされないですよね。

関連するQ&A

  • ACCESS テーブルを見比べて、一致しないレコードを追加したいです

    ACCESSで、以下のようにデータを追加をしたいです。 別々のテーブルで、データの一致しないものだけ追加したいです。 どのようにすればよいのでしょうか? Aテーブル、Bテーブル共に入力項目は全て同じです。 よろしくお願いします。  Aテーブル      Bテーブル    名前 個人データ  名前 個人データ   ・鈴木 ***     ・近藤 ***    ・近藤 ***     ・伊藤 ***   ・渡辺 ***     ・鈴木 *** 求める答え   ・鈴木 ***     ・近藤 ***    ・渡辺 ***   ・伊藤 *** たぶん、不一致クエリでBテーブルの伊藤さんだけ取り出して、Aテーブルに追加するという方法がやりやすいのでしょうか? よろしくお願いします。

  • Accessでの新規レコードの追加の方法

    Windows XP上でMicrosoft Access 2000を使用しています。 オートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加したいのですが、クエリやそれを基にしたフォームを介した方法はもちろんのこと、テーブルをデータシートビューで表示した状態でも追加することができません。 例えばレコードセレクタからレコード追加を選んでレコード保存を選んでも追加されません。 このテーブルに別のフィールドを追加してデータを入れるとレコードの追加が可能なのですが、オートナンバー型フィールド1つのみではうまくいきません。 どなたかオートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加する方法を御存知でしたら御教示下さいませ。

  • accessで重複を排除してデータ追加したい

    access2000使っています。 EXCELからリンクしたテーブルAのデータをテーブルB追加しています。テーブルBには累計というか履歴のようにデータを蓄積させています。 今は追加クエリでA→Bにデータ入れていますが、どうしても重複するものがあると警告メッセージが出てしまいます。フィールドは、日付*、コード*、金額、で*のものをキーにしています。 警告メッセージを出さず追加する方法、もしくは現在Bにある日付移行のものだけ追加する方法はないでしょうか?

  • レコードの一致方法

    テーブルA(マスター) [コード]、[商品名]        ○○○、△△△ テーブルB [コード]、[商品名]       ○○○、△△△ テーブルC [コード]、[商品名]       ×××、△△△ 以上のように、3つのテーブルの不一致クエリーなどを 抽出する場合、テーブルAとB同士の場合は、一致しないのはコードを結合線で結べば、すぐに出てきますが、テーブルAとCの比較の場合は、コードを結合線で結んだところで、違うのでうまくできません。 商品名は△△△なので、コードが違っていても、商品名はあっているので、不一致ではなく、一致しているというように考えたいのです。 △△△についてのコードは×××、○○○というように2つ以上持っているような感じですれば、うまくいくとおもっているのですが、こういう場合はテーブルAにコードのフィールドを2つ作っておいて、結合線でつなぐときに切り替えてするしかないのでしょうか? テーブルA(マスター)で、このような、2つのコードを持っているとおもわれる商品はレコード100以上あって、それをそれぞれ選びながら入力していかないかとおもうと、大変な作業化とおもっているのですが、アドバイスあればお願いします。

  • Accessで連続データってできますか?

    Aテーブル(データベース)からBテーブルに必要なレコードを抽出して、Bテーブルで編集しています。 Bテーブルで編集したレコードをCテーブルに移動する際に、連続データのフィールドが必要になったので、テーブルのオートナンバー型フィールドを一つ追加しましたが、うまくいきません。 追加クエリでB→Cに移動させるんですが、キー違反がでてクエリが動きません。 できれば、クエリで連続データを作成して、Cテーブルに追加させたいんですが、クエリで連続データって作れるものなのでしょうか?

  • このようなレコードの抽出・生成方法

    下記のようなテーブル、レコードがあるとします。 (テーブルAとテーブルBのコードは同意) テーブルA(PK:コードA,コードB,コードC,コードD) コードA コードB コードC コードD 000001 001 00 01 000001 001 00 02 000001 001 00 03 000001 002 00 01 000001 002 00 02 000001 002 00 03 テーブルB(PK:コードA,コードB) コードA コードB 000001 001 000001 002 ここでテーブルAに1件追加されたとします。 テーブルA コードA コードB コードC コードD 000001 001 00 01 000001 001 00 02 000001 001 00 03 000001 002 00 01 000001 002 00 02 000001 002 00 03 000001 001 00 04 ここで質問なのですが、 下記のようなレコードを生成するSQLを教えて欲しいのです。 イメージとしては、コードAとコードBをテーブルBから取得し、 他の項目は、上記で追加されたレコードをコピーといった感じです。 テーブルA コードA コードB コードC コードD 000001 001 00 01 000001 001 00 02 000001 001 00 03 000001 002 00 01 000001 002 00 02 000001 002 00 03 000001 001 00 04 000001 002 00 04 ←生成したいレコード わかりにくい質問で申し訳ないですが、 よろしくお願いいたします。

  • [Access] 2つのテーブルを1つに集計したい

    アプリケーションのライセンス数のカウントをしています。 下記のように、既に購入済みアプリを場所毎にカウントしているテーブルAと、現在使用しているアプリ数を場所毎にカウントしているテーブルBがあります。 クエリ(でなくてもいいのですが)を使用して一番したの<最終的に欲しいクエリ>のような形にしたいのですが、どのようにしたらいいでしょうか。。 アドバイス宜しくお願いしますm(_ _)m <テーブルA> アプリ 場所 所持 ===================== A 東京 10 A 大阪 20 A 京都 8 B 東京 20 B 大阪 21 B 京都 18 C 東京 8 C 大阪 5 C 京都 10 <テーブルB> アプリ 場所 使用 ===================== A 東京 5 A 大阪 18 A 京都 7 B 東京 18 B 大阪 21 B 京都 15 C 東京 4 C 大阪 3 C 京都 9 <最終的に欲しいクエリ> アプリ 場所 所持 使用 ============================= A 東京 10 5 A 大阪 20 18 A 京都 8 7 B 東京 20 18 B 大阪 21 21 B 京都 18 15 C 東京 8 4 C 大阪 5 3 C 京都 10 9

  • Accessでチェックボックス選択でレコード追加

    AccessDBで、下記のようなことをやりたいのですが、ご教授いただけないでしょ うか? 例)(実際の内容は違うのですが、例としてお伝えしやすい内容に変更していま す。) 野球のデータベースを作るとします。 野球の試合日のデータ(試合テーブル) 試合ID  0001 試合日  5月1日 天候   晴れ 試合相手 タイガース 試合場所 東京グランド こういった試合データが複数レコードある。 ここにチームのメンバ(メンバテーブル) A選手 B選手 ・・・・ Z選手 各選手の試合履歴を見るために各選手と試合データを結合させたいです。 5月1日の試合(試合ID0001)に、A,B,C選手が出場していたとしたら、 A 0001 B 0001 C 0001 を結びつけるようなテーブルを作ればよいと思うのですが、A,B,Cを入力して上 記レコードを作るのではなく、 A選手~Z選手のチェックボックスがあって、選択した選手の分だけ (今回でいうとA,B,C)が、 A 0001 B 0001 C 0001 というように0001と結合でするレコードを作りたいのです。 プルダウンでA,B,Cを選択する方法はわかるのですが、実際にやりたいのは、100 ぐらいの選択となるので、チェックボックスで選択したいのです。

  • 別のACCESSデータベースのテーブルのレコードを追加したいのです

    別のACCESSデータベースのテーブルのレコードを追加したいのです 同じ内容のデータベースが二つあります データベース1とデータベース2を其々別の人がデータを入力しています データベース1にデータベース2のテーブルで T_データT_データ明細の二つのレコードを追加したいのですがどの様にすればよいでしょうか ご指導をお願いいたします。

  • access2000のレコード追加方法

    もし、お分かりの方がいらっしゃれば ご協力のほど、お願いします。 今現在、あるデータの集計を行い、それらを最終的に 指定された数でわり、割った数の分および余った数だけ レコードに追加したいのです。 A|B|C 1|2|3 2|3|2 ↓ Cに入っている A|B|C 1|2|3 1|2|3 1|2|3 2|3|2 2|3|2 といった次第です。上記のような場合はVBAで 行うしかないのでしょうか? もし上記のような方法を行っている方がいらっしゃいましたら ご指導のほど、お願いします

専門家に質問してみよう