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

このQ&Aのポイント
  • Windows XP上でMicrosoft Access 2000を使用しています。オートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加する方法を教えてください。
  • レコードセレクタからレコード追加を選んでも追加されません。テーブルに別のフィールドを追加するとレコードの追加が可能なのですが、オートナンバー型フィールド1つのみではうまくいきません。
  • Accessでの新規レコードの追加方法がわかる方、ご教示ください。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

下記のような追加クエリを作成して、実行すれば追加できます。 INSERT INTO テーブル名 ( フィールド名 ) VALUES (Nz(DMAx("フィールド名","テーブル名"),0)+1); しかし、オートナンバー型フィールドの一つのみのテーブルなんて何に使うのですか。

a8389827
質問者

お礼

御回答誠にありがとうございました。 お礼が遅くなりまして申し訳ございません。

a8389827
質問者

補足

御回答ありがとうございます。 SQL を用いると、オートナンバー型フィールドにも任意の値を設定できるのですね。 件のテーブルは多対多の関係にある2つのテーブルを結び付けるために用います。両テーブルとも件のテーブルを1側とする1対多の関係にあるもので、件のテーブルには他にフィールドを必要としません。

その他の回答 (1)

回答No.2

> 件のテーブルは多対多の関係にある2つのテーブルを結び付けるために用います。両テーブルとも件のテーブルを1側とする1対多の関係にあるもので、件のテーブルには他にフィールドを必要としません。 ということなら、オートナンバー型のフィールドにする必要性はないように思います。 数値型のフィールドでいいのでは。 これなら、追加クエリでもなくて、フォームから入力することも可能です。 ただ、そのような形の多対多関係のモデルが想像できません。 図示すると、 テーブル1 (多)---(1) 今回のテーブル (1)----(多) テーブル2 ということですが、 テーブル1 (多)------(多) テーブル2 と直接結合するのとなんら変わりはないです。 通常の多対多の関係のモデルは、 テーブル1   今回のテーブル  テーブル2 ID1 (1)---(多) ID1 ID2 (1)----(多) ID2 となります。 多対多リレーションシップを作成する - 新しいデータベースのリレーションシップを作成する http://office.microsoft.com/ja-jp/access-help/RZ101772998.aspx?section=9

a8389827
質問者

お礼

御回答誠にありがとうございました。 お礼が遅くなりまして申し訳ございません。

a8389827
質問者

補足

いつも速やかな御回答恐れ入ります。当方がむしろ追いついておらずに申し訳ございません。 確かに主キーのインデックスフィールドとしては、必ずしもオートナンバー型でなくとも数値型フィールドにして、よく知られる手段で自動インクリメントする方法でも構わないと存じます。オートナンバー型フィールドにした理由は、他のテーブルでオートナンバー型を採用したために全体の統一性を重んじたことであり、実務上支障が生じるのであれば他の方法に変えることも必要かと存じます。 リレーション構造としては、図示された通り、テーブル1 (多)---(1) 今回のテーブル (1)----(多) テーブル2、です。 多対多の一般的構造としては、ヘルプの受注明細テーブル採用のように、テーブル1 (1)---(多) 間を取り持つテーブル (多)----(1) テーブル2、かと存じます。 今回の構造を採用した理由を説明するためには抽象的な表現では限界がありそうですので、もう少し具体的に説明いたします。 目的はJANコード(GS1コード)からGS1事業者コードを抽出し、事業者のテーブルから検索することです。しかし、事業者の情報は過去の分も保持するため、同じ事業者でも名称や所在地などが変わる度に新しいレコードとして登録します。また、GS1事業者コードは一つの事業者に複数割り当てられることもあるので、複数の事業者情報と複数のGS1事業者コードを結び付ける必要があります。ここで、これらの情報は事業者そのものがそれぞれ持っている情報ですので、間に事業者そのものを表すテーブルを挟むことによって、それぞれのテーブルの持つ情報をまとめるられるようにしました。この場合、事業者そのものを表すのはコード一つでよいので、テーブル1(事業者情報) (多)---(1) 今回のテーブル(事業者そのもの、フィールドはコード一つのみ) (1)----(多) テーブル2(GS1事業者コード)という形にしたものです。

関連するQ&A

  • Accessのテーブルのレコード追加について

    お世話になります。 テーブルのレコードをコピーして、別のテーブルに 「編集」の中の「追加貼り付け」でテーブルのレコードを 追加しました。 しかし、データ型をオートナンバーにしているフィールド があったのですが、追加したレコードの部分のナンバーが 連番になりません。 どの様にしたら、追加した分も連番になりますでしょうか。 お教え下さいます様、宜しくお願い致します。

  • アクセス2007で追加クエリが動かないのですが・・

    あるテーブル(以下「テーブル(1)」といいます。)のオートナンバーを1から振り直すために、テーブル(1)の構造のみをコピーしたテーブルを作り、そこに追加クエリでテーブル(1)のオートナンバー以外のフィールドのデータをくっつけようと思っているのですが、「無効モードのため,アクションまたはイベントはブロックされました。」とのメッセージがでてしまいます。 選択クエリを追加クエリに変換する方法が間違っているのでしょうか? 選択クエリをテーブル(1)を元に作ったうえでデザインビューで、「追加」をクリックし、追加先テーブルを「テーブル(1)のコピー」を選んでいるのですが、何が問題なのでしょうか?

  • access クエリ レコードの追加ボタン?

    クエリのデータシートビュー時の 最下部に現在の位置やレコード総数などを表示する場所がありますよね?そこに「一番下のレコードに移動する」ボタンがありますよね? (「>*」のような記号のボタンです。) このボタンを有効/無効にする設定はどこでできますか? このクエリは1つのテーブルから作っているので、普通に作成すれば、レコードの追加も、内容の変更も出来ます。 実は、偶然にも無効にしてしまっているで有効に直したいのです。 フォームでいうところの「追加の許可」みたいな「新規レコードの追加はできる/できない」みたいな機能です。 よろしくおねがいします。

  • Accessのクエリでレコード追加

    Access初心者です。 バージョンは2010をつかっています。 テーブルを14テーブル含み、フィールド数が100ほどある選択クエリを作りました。 抽出条件などは設定していません。 このクエリで新しくデータを入力、レコードを追加し、上書き保存した後クエリを閉じます。 それからまた、そのクエリを開くとレコードが追加されていません。 テーブルにはその入力したデータは追加されています。 このクエリにもそのデータを追加表示させるためにはどうすればいいですか? 表示されない原因はなんなのかお教えお願いします。

  • Accessでのテーブル作成や追加クエリなどについての質問です。

    ◆テーブル作成クエリで作成するテーブルにオートナンバー型のフィールドを設けたい。◆ (ナンバーが必ず1から振られることが条件) ※補足※ あらかじめオートナンバー型を含むテーブルを用意し、追加クエリ&削除クエリを使用すればよいという意見もありますが、この場合オートナンバー型のフィールドはカウントをアップし続けてしまう為断念。 ★教えてほしい事★ テーブル作成クエリからオートナンバー型のフィールドを作成できるのか? もしくは あらかじめオートナンバー型を含むテーブルを用意し削除クエリでテーブルのデータを空にしてから追加クエリでデータを入力しても必ずオートナンバー型のフィールドの先頭値は"1"から始まるようにできるか? 宜しくお願い致します。

  • ACCESS/VBA 追加レコードが表示されない

    ACCESS 2003 で開発しています。 フォームのデータソースがテーブルAで、テーブルAの主キーはオートナンバーです。 フォーム上のボタンをクリックすると、追加クエリを実行して、テーブルAに1レコード追加し、 フォームにそのレコードを表示したいのですが、 クエリ実行前の最終レコードが表示されてしまいます。 テーブルAを見ると、オートナンバーがふられたレコードが末尾にちゃんと追加されています。 Dim dbs As Database Dim Qdf As QueryDef Set dbs = CurrentDb Set Qdf = dbs.QueryDefs("Q_データ追加2") ←追加クエリ Qdf.Execute Me.Refresh '* 最終レコードを表示 DoCmd.GoToRecord , , acLast どのようにすれば、直前に追加したレコードをフォームに表示できるのか おわかりの方がおられましたら、お教え下さい。ちなみに、ACCESSは、   「既定の開くモード 」:共有モード   「既定のレコードロック」:ロックしない      という設定になっています。 よろしくお願い致します。

  • アクセスでオートナンバーをリセットするには?

    Accessで連番をふるプロセスで質問です。 データをあるテーブルに追加した時に、連番をふりたいと考えています。 最も簡単なのはオートナンバーフィールドを設定する方法なのですが、この場合一つ欠点があります。 それはレコードを全削除した場合でもナンバーがリセットされないという事です。 追加クエリでテーブルにデータを追加する前に必ずテーブルのレコードを全削除するのですが、 この際にオートナンバーも一緒にリセットする方法は無いでしょうか? また、質問の題名とは変わってしまうかもしれませんが、 オートナンバーを使用せずにレコードに連番をふる方法があればご教授下さい。

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

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

  • ACCESSでレコードのコピー

    ACCESS初心者です。 テーブルt_Aとt_Bがあり、t_Aを元にしたフォームがあるとします。 行いたいのはこのフォームでレコードを選択しボタンをクリックして t_Aの該当レコードのフィールドの値をt_Bのフィールドにコピー(新規追加)したいのです。 追加クエリでなんとかなるかなと思ったのですが思うようなクエリが作れないのです。 アドバイスをいただけませんでしょうか。 マクロ、VBAの利用方法についてはほぼわかっております。

  • ACCESS新規レコードが追加出来なくなりました

    ACCESS2010初心者です。クエリから入力用のフォームを作りましたが、新規レコードの保存が出来なくなりました。※マーク有効、データ入力も可能、エラーメッセージなしですが、フォームを閉じて、開きなおすと新規レコードが消えている(保存されていない)といった状況です。フォームの元クエリも新規レコード保存なしですが、クエリの元デーブルのみ新規データがどんどん追加されています。原因と対策をご教授頂きたく宜しくお願い致します。

専門家に質問してみよう