-PR-
締切済み

Access2000 別のレコードをテーブルに追加するには?

  • 暇なときにでも
  • 質問No.6983
  • 閲覧数281
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 33% (1/3)

既存のAというテーブルに新しく別のところからインポートしてきたBというデータを追加したいのですが、「...46件のレコードで入力規則違反が発生したため、レコードを追加できませんでした。」とエラーメッセージが出ます。無視して実行すると、Bの一部のデータがAに追加されません。
IDが一部重複しているのですが、これが原因?でもAccess95では、Bのデータにすべて新しいIDがついて追加されましたよね?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

文字通り、レコードが、入力規則に違反しているため、追加できなかったのです。 ・インデックスが「あり、(重複なし)」に設定されているフィールド(主キーなど)がある。 この「重複無し」の部分が作用して、新しいレコードの追加を妨害した。 ・テーブルやフィールドに入力規則が設定されており、それに違反するレコードを追加しようとした。当然、そのようなレコードの追加は却下された。 のどちらかであると ...続きを読む
文字通り、レコードが、入力規則に違反しているため、追加できなかったのです。

・インデックスが「あり、(重複なし)」に設定されているフィールド(主キーなど)がある。
この「重複無し」の部分が作用して、新しいレコードの追加を妨害した。

・テーブルやフィールドに入力規則が設定されており、それに違反するレコードを追加しようとした。当然、そのようなレコードの追加は却下された。

のどちらかであると考えられます。
恐らく、IDが重複しているということですので、前者が原因でしょう。

解決策ですが、そのフィールドがどのように扱われているのかによって、難易度が異なります。

1:別に[ID]フィールドを「重複可」にしても問題が無い場合。
 インデックスを重複可能に設定してから、追加します。

2:「B」の[ID]を変更しても構わない場合
 2-1:「A」の[ID]がオートナンバー型なら
  追加クエリーを使ってデータを追加します。このとき、[ID]フィールドは追加しないようにします。(IDは、データ追加時に自動で生成されます。)

 2-2:「A」の[ID]がオートナンバー型ではないなら
  [1] 追加を行う前に、選択クエリーを使って、IDが重複する部分を表示します。
  [2] 必要に応じて、その部分を(重複しないように)書き換えます。
  [3] 追加クエリーでデータを追加。

3:「B」の[ID]を変更すると、問題が生じる場合。
 3-1:「A」の[ID]がオートナンバー型なら
  補足ください。

 3-2:「A」の[ID]がオートナンバー型ではないなら
  [1] 「B」の[ID]を変更すると影響を受けるテーブルにリレーションシップを設定し、「連鎖更新」にチェックをつける。
  [2] 追加を行う前に、選択クエリーを使って、IDが重複する部分を表示します。
  [3] 必要に応じて、その部分を(重複しないように)書き換えます。
  [4] 追加クエリーでデータを追加。


ちなみに、2-1の機能はAccess95にも存在しますが、それ以外については、95でも2000でも、同じ事をしなくてはなりません。

不明点があれば、どしどし補足してください。(返事が遅くなることは有るかもしれませんが…)
補足コメント
Msakai

お礼率 33% (1/3)

回答ありがとうございました。
お言葉に甘えて更に質問させて頂きます。

2:「B」の[ID]を変更しても構わないので追加クエリーでトライしました。
しかし、Bのデータのフィールドに空白があると(たとえばメールアドレスがわからない、住所が分からないなど)そのデータは追加されません。(Aのデータには空白はたくさんあります)
当てはまると思われるものにすべてデフォルトの文字をいれて解決しましたが、このようにしなくても良い方法はありますか?
投稿日時 - 2000-08-29 20:32:05
関連するQ&A


  • 回答No.2
レベル12

ベストアンサー率 41% (324/772)

根本的に、重複するIDを持つレコードは追加できません。 ですが、入力規則違反なので必ずしも、ID(キー)が重複しているとは限りません。 つまり、微妙にフィールドの型が異なっていて、そのために今回のようなエラーが 表示されている場合があります。 通常は、以下の手順を取ります。 1.既存のAテーブルをコピーします。(コピーしたテーブルをA'とします) 2.BからA'へコピー ...続きを読む
根本的に、重複するIDを持つレコードは追加できません。
ですが、入力規則違反なので必ずしも、ID(キー)が重複しているとは限りません。
つまり、微妙にフィールドの型が異なっていて、そのために今回のようなエラーが
表示されている場合があります。

通常は、以下の手順を取ります。
1.既存のAテーブルをコピーします。(コピーしたテーブルをA'とします)
2.BからA'へコピーしてみます。
3.エラーがあれば、原因を突き止め、正しくA'へ追加できるようにB内の問題のある
レコードを修正します。
4. 正常に追加できるようになるまで1~3を繰り返します。
5.AにB内のレコードを追加します。
お礼コメント
Msakai

お礼率 33% (1/3)

ご回答ありがとうございました。
追加クエリー以外のテーブルの追加は知りませんでした。
投稿日時 - 0000-00-00 00:00:00
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

ごめんなさいっ見落としておりましたっ。(またしても、です) えっと、まずは、追加クエリーをデータシートビューで表示してみてください。([表示]-[データシートビュー]) Case1 表示される内容が、追加を試みるデータなんで、この段階でレコード数が足りないのなら、追加クエリーに異常があることになります。 例えば、クエリーのプロパティで[固有の値]が「はい」になっているとか、クエリーがグ ...続きを読む
ごめんなさいっ見落としておりましたっ。(またしても、です)

えっと、まずは、追加クエリーをデータシートビューで表示してみてください。([表示]-[データシートビュー])

Case1
表示される内容が、追加を試みるデータなんで、この段階でレコード数が足りないのなら、追加クエリーに異常があることになります。

例えば、クエリーのプロパティで[固有の値]が「はい」になっているとか、クエリーがグループ化されているとか、他にもいろんな原因が考えられます。

Case2
データシートビューでは正常な件数で、追加する時にエラーが出てはじかれる時は、テーブルの入力規則に違反していたり、キー違反があったりする場合なので、そのあたりを詳しく調べてみます。

例えば、入力規則が ">=1"となっているフィールドに、NULLのデータを入れようとしても、弾かれてしまいます。
もしくは、[空文字列の許可]が「いいえ」になっているフィールドに、""(空文字列)のデータを入れようとしても弾かれます。(このような場合、更新クエリで、あらかじめ "" を NULL に置換しておきます。)
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ