- 締切済み
アクセス追加クエリで限定したい
環境は WinXP SP3 ACCESS2003です。 次のように追加クエリでテーブルにデータを追加していますが A B C D 1 545 5555 456 1 444 5485 698 2 584 6985 524 2 526 7898 214 3 548 5455 555 この次に 1 545 5555 456 と同じデータが追加されたとき 追加できないようにしたいのですが うまくいきません Aの追加条件に<>"A" 指定とか 主キーの設定はだめですし どちらさまか ご指導ください
- みんなの回答 (8)
- 専門家の回答
みんなの回答
全項目が同じ値のデータを登録しないようにするなら 追加クエリーをデザイナで開いて「Σ」ボタン(集計ボタン)を押してください。 それぞれの項目に「グループ化」と表示されていればOKです。 この操作で重複がなくなります。 重複データにコメントを出すのはどう出したいのかわかりませんが、どのデータに重複があるのかを知りたいのでしたら、上で作成したクエリ(Σボタンを押したもの)をコピーして最終項目に 「件数:count(*)」と追加してその項目の抽出条件に「>1」と書いたものを作ってください。 ※この項目に「グループ化」が表示されたら消してください。 このクエリを実行すると 1件より多い、つまり2件以上あるデータのみ表示されます。
- endy7671
- ベストアンサー率66% (6/9)
回答No.6です。 「追加クエリを実行する前に、追加されるテーブルのAフィールドに追加されるIDがなければ追加、存在すればコメント出し」 このご要望を、そのまま鵜呑みにすると、Accessであれば、マクロ(VBAを使用したプログラム)を、開発するのが一番近道かと思います。 一方で、問題解決に向けた手順が、整理できていないように見受けられます。(失礼ですが、RDBに触れるのは初めてでしょうか?)差し出がましいようですが、現状に対して、どう対応すればよいのか、頂いているデータの範囲内で、以下に示してみました。よろしければ参考として下さい。 [現状] テーブル定義の設定不備(主キーなし)のため、重複データが登録できる [原因] テーブル定義で、項目Aを主キーに設定しなかった [対策] テーブル定義を変更する。即ち、項目Aを主キー設定する。 [対策を実施する上での問題点](←今tom2011さんはここにいます) 項目Aを主キーに変更することを、Accessが受け付けない (∵tom2011さんが、問題を認識しているテーブル上には、既に重複するデータがあるから) [本対策] (1)念のため、問題を認識しているテーブルの全データを、別テーブルもしくはCSV等へバックアップする (2)問題を認識しているテーブルから、重複するデータを抽出する。重複データは、下記SQLを実行した結果、カラム「COUNT(A)」の値が2以上のもの SELECT A, COUNT(A) FROM 問題テーブル GROUP BY A (3)(2)で抽出できた重複データのうち、項目Aを適宜変更する。項目Aの値は、下記SQLを実行した結果+1 SELECT MAX(A) FROM 問題テーブル (4)問題を認識しているテーブルの項目Aを、主キーに設定する 頑張ってください。
- endy7671
- ベストアンサー率66% (6/9)
重複データがテーブルに存在しているうちは、下記回答者の皆様が示した対策は打てません。 Access(他データベースも同じ)は、全てのレコードについて、一意制約として予定している項目の直積が、「全て重複なし」になっていないと、一意制約変更は受け付けません。 ∵重複データがある時点で、一意制約条件が崩壊する いちばん簡単なのは、下記手順を実施することでしょうか。 (1)制約を加えようとするテーブルのレコードを、別テーブルもしくはcsv等に退避 (2)テーブルの項目Aに対して、一意制約条件を追加する (3)(1)で退避したデータを、元へ戻す 以上、宜しくお願い致します。
- hatena1989
- ベストアンサー率87% (378/433)
> Aフィールド重複していますので > 設定が出来ませんでした 複合キーインデックスになりますので、Aフィールドが重複していても、 A, B, C, D フィールドの組み合わせで重複がなければ設定できます。 インデックスウィ移動で前回の図のように間違いなく設定されていますか。 もし、されているのに設定できない場合は、A, B, C, D フィールドの組み合わせですでに重複するデータがあることになります。 クエリウィザードで重複クエリを作成すればどれが重複しているか確認することができます。 確認できたら、そのデータを削除してください。
- ppyama
- ベストアンサー率12% (48/399)
(1)追加するテーブルと元になるテーブルで不一致クエリ。 (全項目をチェックさせる) (2) (1)を追加クエリで元テーブルへ。
- hatena1989
- ベストアンサー率87% (378/433)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
×複合機ー 〇複合キー
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、追加クエリで重複登録を避ける。 A、非重複データのみを追加する。 追加クエリで重複登録を避ける方法ってのは、データと追加作業の種類によって異なると思いますよ。例えば、注文データなどは、普通は、二重作業回避のために重複チェックを行うと思います。 「非重複データのみを追加する」ために重複チェックするのが一般的だとは思いますが、それ以外のやり方もない訳ではないと思います。例えば、一時的に複合機ーを作成するなどです。でも、どうかなーと思います。
補足
ありがとございます Aフィールド重複していますので 設定が出来ませんでした
補足
皆様ありがとうございます 追加クエリを実行する前に 追加されるテーブルのAフィールドに追加される IDがなければ追加 存在すればコメント出し この様な事が実現できないでしょうか