2.「デザイン」タブの「主キー」を選択します。. OfficePro ©2006-2019 Buzzword Inc.. All Rights Reserved.  なお、主キー、インデックスそしてリレーションシップはいずれも重要な設定です。エラーが出るからといって設定を変えてしまうととんでもないことになる恐れがありますので、特に実務に用いているファイルにおいては注意してください。, さて、サンプルとしてこのようなテーブルがあります。  設定を変えて「社員コード」を主キーでない状態にすれば(操作は下記の例を参照)値が重複してもエラーは出なくなりますが、レコードの区別がつかなくなり大きな問題を引き起こす恐れがありますので、慎重な判断が必要です。, 次に別のテーブルの例をみてみます。  すると、下部に表示されているプロパティのうち「固有」の値が「はい」となっているのがわかります。この設定により、「あだな」列は値の重複が許されなくなっています。 二重登録などの重複データを抽出するには、[重複クエリウィザード]を使います。ここでは、例として[懸賞応募テーブル]で同一人物の応募がないか、重複しているレコードを抽出して確かめる方法を解説します。, [重複クエリウィザード]を使用すると、簡単に重複データを抽出できます。テーブルにレコードが二重登録されていないか調べたいときなどに利用します。, ここでは例として、[懸賞応募テーブル]に同一人物のレコードが重複していないかを調べます。このときポイントになるのは、どのようなデータを重複と見なすのか、きちんと考えることです。, ここでは、氏名と電話番号の両方が一致するデータを重複と見なします。つまり、氏名が同じでも電話番号が異なれば重複とは見なさないということです。, なお、クエリのデータシートに表示される内容は、操作10 ~ 11のクエリの結果にフィールドを追加する画面での指定によって変わります。操作10でフィールドを指定すると、そのフィールドの値が表示されます。, この手順の例では[ID]フィールドを指定しているので、二重登録されているレコードの「氏名、電話番号、ID」が表示され、「田中哲、03-3455-xxxx、5」「田中哲、03-3455-xxxx、3」のように2組表示されます。操作10でフィールドを指定しない場合は、「田中哲、03-3455-xxxx、2」のように「氏名、電話番号、重複件数」が表示されます。, 東京都生まれ、神奈川県在住。テクニカルライター。お茶の水女子大学理学部化学科卒。大学在学中に、分子構造の解析を通してプログラミングと出会う。プログラマー、パソコンインストラクターを経て、現在はコンピューター関係の雑誌や書籍の執筆を中心に活動中。, テクニカルライター。企業内でワープロ、パソコンなどのOA教育担当後、OfficeやVB、VBAなどのインストラクターや実務経験を経て、フリーのITライターとして書籍の執筆を中心に活動中。. s.src ="https://www.street-academy.com/javascripts/view/blog_parts/embed.js"; 主キーを設定するには、フィールドに他のレコードと重複しない値が入力されている必要があります。そのようなフィールドがテーブル内にないときは、複数のフィールドを組み合わせて主キーを設定しま … window.sa_class_options = (window.sa_class_options || []).concat({id: 70299, type: 0, urlHost: "https://www.street-academy.com", trackingCode: "0087040bcf34e8d17a9994c7307eeffc", d_code: "undefined"}); 二重登録などの重複データを抽出するには、[重複クエリウィザード]を使います。ここでは、例として[懸賞応募テーブル]で同一人物の応募がないか、重複しているレコードを抽出して確かめる方法を解説し … テーブルには主キーと呼ばれるものを設定しておくと便利です。主キーはPrimaryKeyとも呼ばれ必須な項目ではありませんが主キーを設定することによってテーブルに登録されたデータの中でどれか1つの行を特定する際に便利です。  10行目のレコードにおいて「社員コード」列の値を、既に存在する値「9」としたうえで、行の入力を確定しようとしたところ…, 出ました。「インデックス、主キー、またはリレーションシップで重複する値が生成されるため、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」という長いエラーメッセージです。 キーには次のようなものがあります。 主キー(primary key) 主キーは関係(表)の中で一つだけ設定します。 一意制約(重複が認められない)と非ナル制約(NULLが認められない)を併せ持つもので、 候補キーの中から最もふさわしいものが選ばれます。 例えば、 1つのフィールドだけでは、重複する値があっても複数のフィールドの値の組み合わせは、重複しないようにするということです。, 1.デザインビューで、対象のフィールドを選択します。それらが隣接せずに、離れている場合は、Ctrlキーを押しながら目的のフィールド名の行を選択します。 重複レコードを削除したい[製品コード]に[主キー]の設定をします。 そして、[販売単価]フィールドを残し、後のフィールドは削除します。 テーブルは保存して閉じます。 このテーブルにはレコードはありません。 空っぽのテーブルです。 主キーは重複不可・空っぽもダメ. (function() { ・空白のままにすることもできません。, 複数のフィールドをもって、主キーにすることもできます。  「あだな」列において、ほかの行と重複する値を入力してみます。「あだな」列は主キーではありませんが、入力を確定したところエラーが出ました;-o-), ウインドウが現れますので「あだな」を選択します。 ¨é›†ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’使う以外にツールバー上に表示されている「鍵」マークのアイコンをクリックしても同じように主キーを設定することが出来ます。, ※今回主キーは1つのフィールドに対して設定しましたが、複数のフィールドの組み合わせに対して主キーを設定する事も出来ます。例えば単独のフィールドであれば重複する値を取る可能性があるフィールドでも、複数のフィールドの組み合わせで考えた場合には必ず組み合わせの値は重複しない場合などです。複数フィールドに対して主キーを設定する方法は別のページで確認します。, これでテーブルの準備が整いました。一度テーブルを保存しておきましょう。テーブル名は「顧客Table」とします。(テーブルの保存方法については『テーブルの作成』を参照して下さい)。, では次のページで実際にテーブルに値を登録していきましょう。, 初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。. 主キーは、テーブルに記録された行(レコード)のうち、ただ1つを特定する(「一意に識別する」とも言います)ことができるように設定するものです。具体的にはテーブルの列(フィールド)からいずれかを選んで主キーとして設定します。主キーとして設定された列には一定の制約(他の行と重複する値を記録することができない、Nullとすることができない)がかかりますが、これにより、主キーとなっている列の値さえ特定できれば行をただ1つに特定できる、という状態が保証されます。 主キーは必 … Copyright ©document.write(new Date().getFullYear()); Impress Corporation. 「インデックス、主キー、または、リレーションシップで値が重複しているので、テーブルを変更できませんでした。 重複する値のあるフィールドの値を変更するか、インデックスを削除してくだだい」 というエラーが発生しました。 主キーは、1つのテーブルにまったく同じレコードが重複して保存されるのを防ぐために、設定します。, 主キーに設定したフィールドには、 株式会社 ビジネスITアカデミー(BIT-A)Business IT Academy inc. 企業においてExcelはどう使われるべきか!創業8年の経験で“7つの原則”を作り上げました。, Excel/Excel VBA/Access/PowerPoint/Wordを知り尽くし、実務において、どのように使うべきなのかをお伝えします。, 日々行っているコンサルティング業務の中で使うExcelとPowerPointのノウハウを優しくお伝えします。, ソニー時代、そして、独立後に行っているネット情報活用方法を余すことなくお伝えします。, 特許翻訳者の経験とWordマクロのスキルを活かし、Word文章を効率的に作成・編集する方法をお伝えします。, 通る企画書を作成するための思考手順からデザインにわたるまで企画書のプロがお伝えします。, 大阪開催 2020年度11月9日 Access 研修 Access2016超入門研修を実施しました, 大阪開催 2020年11月9日 Excel 研修 Excel2016超入門研修を実施しました, Excel研修 2020年11月12日 Excel自動化 マクロはじめの一歩 を実施しました, Excel研修 2020年11月11日 Excel マクロ記録による操作の自動化 を実施しました, Word研修 2020年11月11日 ビジネス文書を効率的に作成するための的Word活用テクニック を実施しました, 大阪開催 2020年11月5日 Word 研修 Word2016超入門研修を実施しました. s.async = true; そこで、違いを明確にするためにインデックスと主キーの違いをもう1つ挙げておくと、データ検索に使うインデックスは重複可能ですが、行を識別する主キーは重複不可と … アクセス キー違反 インポート時に以下のエラーが出ます。 キー違反のため 0件のレコードが失われ、0件のデータが削除されました。(以下略) レコードもデータも失われていないのなら、主キーの重複 … Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドのことです。 英語では[primary key]と呼ばれるものです。 [主キー]を設定すると、他のテーブルと関連付けして他のテーブルの内容を参照したりできるよ …  このテーブルでは「部署コード」が主キーとなっており、重複する値を入力しようとすると上記と同じエラーが出ます。  リレーションシップの画面を開き、両方のテーブルの間に設定されているリレーションシップを削除(線を右クリックして「削除」を選択)した上で、部署テーブルの部署コードを主キーでなくすれば、部署コードの値が重複してもエラーは出なくなります。, リレーションシップも非常に重要な設定です。なかなか難しいものですので、詳しくは次の記事のほか関連記事を参照ください。, さて、上記の例と同じ社員テーブルです。 これまで、主キー(Primary key)は、テーブルに1つしか存在しないと思っていたのですが、SQL Serverで1つのテーブルに2つのPRキーが存在してるじゃないですか!と思って職場の先輩にお聞きしたところ、「複数カラムの組で主キーを構成している」ということでした。 これがエラーの原因です。これを「いいえ」にすれば値が重複してもエラーになりませんが、やはり本来は値の重複を避けるべきで、設定の変更には慎重な判断が必要です。, くどいですが、主キー、インデックス、リレーションシップはいずれも「データの正しさ」に関わる重要な設定です。原則として「重複する値を入力しない」という制約に従うこととし、くれぐれも作成者等への相談なしに設定を変えることのないようご注意ください_ _), accs2014さんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog Access データベース テーブルの Access 主キーは、テーブルのレコードごとに一意の値を持つフィールドです。 キーを使用して、テーブル間でデータをつなげることができます。 All rights reserved. ・そのテーブルで1度入力した値を、他のレコードを入力するときに使用することはできません。 しかし、主キーはレコードを登録するまで、主キーが重複されているのかわからないのです。, http://keiyu.xyz/2019/10/14/access%e3%81%ae%e4%b8%bb%e3%82%ad%e3%83%bc%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/, Aさんは、主キーが重複しているということは、理解していますが、もう一度データ入力することが面倒です。, 更新後処理というのは、テキストボックスAに値が入力されたら、テキストボックスBで判定をする。, http://keiyu.xyz/2019/10/03/access%e3%81%ae%e9%80%a3%e5%8b%95%e3%82%b3%e3%83%b3%e3%83%9c%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9/, このような処理は、Excel、ACCESSでもよく使いますので、この機会にぜひ、みなさんのスキルにしてください。, 商品コードのテキストボックスを選択して、向かって左側のプロパティーシートを表示させます。, If Len(Me!商品コード) > 0 And Len(Me!商品コード) <> 4 Then, フォーム上の連結コントロールの値が変更されたかどうかを知るのは  【oldvalue】 プロパティを使用します。, If IsNull(.OldValue) Or (.Value <> .OldValue) Then, ‘もし商品コードが、Null(空白) または、データの商品コードが合致していないときは登録可能 ここまでが第一条件, If DCount(“商品コード”, “MT_商品”, “商品コード=” & .Value) > 0 Then, “他の値を再入力してください。”, vbOKOnly + vbExclamation, また、ACCESSは、Excelより、データ管理においては、便利だということを、常に、みなさんの部署に人達に、思わせなければなりません。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。.  「社員コード」の左端に鍵マークがあります。これは社員コード列が主キーとなっていることを意味しています。主キーとなっている列においては値の重複が許されないのでエラーが出たというわけです。 複数のフィールドで主キーを設定します 主キーは、1つのテーブルにまったく同じレコードが重複して保存されるのを防ぐために、設定します。主キーに設定したフィールドには、 ・そのテーブルで1度入力した値を、他のレコードを入力するときに使用することはできません。 主キーの重複登録を事前に防止 こんにちは。伊川(@naonaoke)です。 今回は、主キーの登録時について、エラーがでないように回避する方法を紹介します。 すでに紹介したように、主キーは、 ・重複登録 さて、サンプルとしてこのようなテーブルがあります。 10行目のレコードにおいて「社員コード」列の値を、既に存在する値「9」としたうえで、行の入力を確定しようとしたところ… 出ました。「インデックス、主キー、またはリレーションシップで重複する値が生成されるため、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」という長いエラーメッセージです。 初心者 … s.charset = "utf-8"; 「インデックス、主キー、またはリレーションシップで重複する値が生成されるため…」というよくあるエラーについてです。 })(); KEIYU企画代表の吉川 直希と申します。Excel ACCESSについて、伊川 直助という名前で、YouTubeで動画を配信しています。皆様の職場で、もっと、Excelや、ACCESSを使えたら、業務が早くなるということがありせんか?私は、職場で、大量のデータを7年くらい扱い、社内で自らシステムを開発して、業務時間を短縮してきました。お困りの方はぜひ私に連絡をください。. |  初心者のうちは何が問題でどうすればいいのか、まるで見当がつかないかもしれません。, そこで設定画面であるデザインビューをみてみます。 document.body.appendChild(s);  これも本来「他の行と重複する値を入力しない」というのが正しい対応ですが…, 「主キーを変更できません」とエラーが出ます。よく読むと、さらに「このテーブルは、リレーションシップの主テーブルとなっています。」といったメッセージが続いています。, これは、部署テーブルと社員テーブルの間で(部署コード列を介した)リレーションシップの設定がされているためです。 主キーとは、テーブル内のレコードを識別するためのフィールドです。主キーを設定すると、並べ替えが速くなったり、他のテーブルと連携できたりといったメリットがあります。 ブログを報告する.  これは、その列が(主キー、またはインデックスの設定により)値の重複を許さない設定になっているのが原因ですが、実際の例を見てみます。 主キーは、テーブル全体で一意の値を持つ 1 つのフィールドまたは一連のフィールドです。各レコードはキーの値が異なるため、キーの値を使用してレコード全体を参照することができます。各テーブルの主キーは 1 つのみです。Access でテーブルの作成時に自動的に主キー フィールドを作成するか、主キーとして使用するフィールドを手動で指定することができます。この記事では、主キーを使用する方法とその理由について説明します。, テーブルの主キーを設定するには、デザイン ビューでテーブルを開きます。使用するフィールド (複数のフィールド) を選択して、リボンの [主キー] をクリックします。, 注: この記事の内容は、Access デスクトップ データベースでの使用のみを対象としています。Access Web アプリおよび Web データベースの新しいテーブルの主キーは自動的に管理されます。自動主キーは無効にできますが、お勧めしません。, Access では主キー フィールドを使用して、簡単に複数のテーブルのデータを関連付け、わかりやすい方法で結合できます。他のテーブルの主キー フィールドをインクルードすると、その主キーの元になったテーブルを参照することができます。これらの他のテーブルで、このフィールドは外部キーと呼ばれます。たとえば、"得意先" テーブルの "得意先コード" フィールドは、"受注" テーブルにも表示されることがあります。"得意先" テーブルで "得意先コード" フィールドは主キーです。"受注" テーブルで "得意先コード" フィールドは、外部キーと呼ばれます。簡単に言うと、外部キーは他のテーブルの主キーです。詳細については、「データベース設計の基本」をご覧ください。, 既存のデータをデータベースに移動する場合、主キーとして使用できるフィールドが既に存在することがあります。多くの場合、コード番号、通し番号やコードなどの、固有の識別番号はテーブルの主キーとなっています。たとえば、"得意先" テーブルでは、得意先ごとに一意な得意先 ID 番号が割り当てられます。この場合、"得意先 ID" フィールドが主キーです。, Access により、主キーのインデックスが自動的に作成され、これにより、クエリや他の操作が高速化されます。また、各レコードの主キー フィールドには値が設定されており、それらの値は常に一意です。, データシート ビューで新しいテーブルを作成すると、Access によって自動的に主キーが作成され、"ID" のフィールド名とオートナンバー型が割り当てられます。, お勧めのキーを識別できない場合は、オートナンバー型フィールドを作成して、キーとして使用します。オートナンバー型フィールドでは、各レコードが初めて保存されたときに値が自動的に生成されます。このため、オートナンバー型フィールドは、適切な主キーの 3 つ特性をすべて満たしています。オートナンバー型フィールドを追加する方法の詳細については、「オートナンバー型フィールドを主キーとして追加する」をご覧ください。, 主キーに適した特性の 1 つ以上に該当しないフィールドは、主キーとして使用するのに適していません。ここでは、"連絡先" テーブルの主キーに適さないフィールドの例を、主キーに適さない理由と共に示します。, 具体名の部分が変更され、保守に負担がかかる場合があります。具体名の部分が別のフィールドとして繰り返し使用されると、混乱の原因になるおそれがあります。たとえば、市区町村を結合して 1 ずつ増加する番号 (例: 東京0579) は、都市名がフィールドとして保存されていても、主キーに適していません。, テーブルの 2 つ以上のフィールドを主キーとして使用する場合もあります。たとえば、注文の一覧を保存している "受注明細" テーブルでは、"受注 ID" フィールドと "商品 ID" フィールドの 2 つのフィールドを主キーとして使用する場合があります。複数のフィールドを含むキーは複合キーと呼ばれます。, 主キーが正常に機能するには、主キーに設定されたフィールドによって各行が一意に識別されること、空または Null 値のフィールドがないこと、フィールドがほとんど (理想的にはまったく) 変更されないことが必要です。主キーを設定するには、次の操作を行います。, ナビゲーション ウィンドウで、主キーを設定するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。, ヒント: ナビゲーション ウィンドウが表示されない場合は、F11 キーを押すと表示されます。, 複数のフィールドを選択して複合キーを作成するには、Ctrl キーを押しながら各フィールドの行セレクターをクリックします。, [デザイン] タブで、[ツール] グループの [主キーの設定] をクリックします。, キー インジケーターは、主キーに指定した 1 つまたは複数のフィールドの左側に追加されます。, 主キーを削除すると、主キーに設定されていたフィールドはレコードを識別するための主な手段ではなくなります。, 主キーを削除してもフィールドはテーブルから削除されませんが、主キーに対して作成されたインデックスが削除されます。, 主キーを削除する前に、テーブル リレーションシップが主キーに設定されていないことを確認する必要があります。1 つ以上のテーブル リレーションシップの一部として設定されている主キーを削除しようとすると、Access では、そのリレーションシップを最初に削除する必要があることを示す警告メッセージが表示されます。テーブル リレーションシップを削除するには、次の手順を実行します。, テーブル リレーションシップが設定されているテーブルが開いている場合は、閉じます。開いているテーブル間に設定されているテーブル リレーションシップは、削除することができません。, [データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。, テーブル リレーションシップが設定されているテーブルが表示されていない場合、[デザイン] タブの [リレーションシップ] グループで、[テーブルの表示] をクリックします。, [テーブルの表示] ダイアログ ボックスで追加するテーブルを選択し、[追加] をクリックし、[閉じる] をクリックします。, 削除するテーブル リレーションシップをクリックして選択します (選択したリレーションシップは太字で表示されます)。次に、Del キーを押します。, [デザイン] タブの [リレーションシップ] グループで [閉じる] をクリックします。, リレーションシップを削除した後に、ナビゲーション ウィンドウで、主キーを削除するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。, 主キーが単一のフィールドで構成される場合は、そのフィールドの行セレクターをクリックします。, 主キーが複数のフィールドで構成される場合は、主キーのいずれかのフィールドの行セレクターをクリックします。, キー インジケーターが、主キーに指定されていた 1 つまたは複数のフィールドから削除されます。, 注: 主キーを設定せずに新しいテーブルを保存すると、主キーを作成するように求めるメッセージが表示されます。[はい] を選択した場合は、オートナンバー型を使用する ID フィールドが作成され、各レコードに一意の値が割り当てられます。テーブルにオートナンバー型フィールドが既に存在する場合は、そのフィールドが主キーとして使用されます。, データベース設計と適切な主キーの選択に関する詳細については、次の記事を参照してください。.