こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2014-07-28 23:19:49

QNo.8696232

困ってます

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

下記のような追加クエリを作成して、実行すれば追加できます。

INSERT INTO テーブル名 ( フィールド名 )
VALUES (Nz(DMAx("フィールド名","テーブル名"),0)+1);


しかし、オートナンバー型フィールドの一つのみのテーブルなんて何に使うのですか。

投稿日時 - 2014-07-29 10:59:15

補足

御回答ありがとうございます。
SQL を用いると、オートナンバー型フィールドにも任意の値を設定できるのですね。

件のテーブルは多対多の関係にある2つのテーブルを結び付けるために用います。両テーブルとも件のテーブルを1側とする1対多の関係にあるもので、件のテーブルには他にフィールドを必要としません。

投稿日時 - 2014-07-30 17:12:30

お礼

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

投稿日時 - 2016-03-17 03:29:59

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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

投稿日時 - 2014-07-30 21:37:39

補足

いつも速やかな御回答恐れ入ります。当方がむしろ追いついておらずに申し訳ございません。

確かに主キーのインデックスフィールドとしては、必ずしもオートナンバー型でなくとも数値型フィールドにして、よく知られる手段で自動インクリメントする方法でも構わないと存じます。オートナンバー型フィールドにした理由は、他のテーブルでオートナンバー型を採用したために全体の統一性を重んじたことであり、実務上支障が生じるのであれば他の方法に変えることも必要かと存じます。

リレーション構造としては、図示された通り、テーブル1 (多)---(1) 今回のテーブル (1)----(多) テーブル2、です。
多対多の一般的構造としては、ヘルプの受注明細テーブル採用のように、テーブル1 (1)---(多) 間を取り持つテーブル (多)----(1) テーブル2、かと存じます。

今回の構造を採用した理由を説明するためには抽象的な表現では限界がありそうですので、もう少し具体的に説明いたします。
目的はJANコード(GS1コード)からGS1事業者コードを抽出し、事業者のテーブルから検索することです。しかし、事業者の情報は過去の分も保持するため、同じ事業者でも名称や所在地などが変わる度に新しいレコードとして登録します。また、GS1事業者コードは一つの事業者に複数割り当てられることもあるので、複数の事業者情報と複数のGS1事業者コードを結び付ける必要があります。ここで、これらの情報は事業者そのものがそれぞれ持っている情報ですので、間に事業者そのものを表すテーブルを挟むことによって、それぞれのテーブルの持つ情報をまとめるられるようにしました。この場合、事業者そのものを表すのはコード一つでよいので、テーブル1(事業者情報) (多)---(1) 今回のテーブル(事業者そのもの、フィールドはコード一つのみ) (1)----(多) テーブル2(GS1事業者コード)という形にしたものです。

投稿日時 - 2014-07-31 23:06:43

お礼

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

投稿日時 - 2016-03-17 03:30:18

あなたにオススメの質問