-PR-

解決済みの質問

質問No.916515
すぐに回答を!
すぐに回答を!
お気に入り投稿に追加する (0人が追加しました)
回答数8
閲覧数1037
アクセスのフォームを開くときに新しいレコードへ移動するには?
アクセスの入力用のフォームを開くときに、新しいレコードへ移動させて、すぐに入力ができるようにしたいのですが、マクロを使っても「レコードセットの最後のレコードよりも後に移動することはできません」のエラーメッセージが出てしまい、新しい入力ができなくなってしまいました。プロパティの更新の許可、追加の許可、削除の許可はいずれも「はい」にしています。どうすれば新しいレコードの入力ができるのでしょうか?困ってます。
投稿日時 - 2004-07-06 12:07:22

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

回答No.8
>確かに担当者Mの担当者CDと得意先Mの送付先CDは主キーになっていませんでした

これは大変です。(ちょっと大げさ)
この二つのテーブルの担当者CDと送付先CDを主キーにしないと、クエリでは新規データを入力することはできません。(主キーは固有(重複のない)のデータを認識するものですから、主キーにしていないと、リレーション(一対多)の関係にならず、クエリにその主キーのないテーブルを入れると他のテーブルとの関係がはっきりしないので、新しいレコードが入力されなくなってしまいます)
今から、主キーにすることはできませんか?もしできないようであれば、その担当者Mと得意先Mはマスターテーブルではないということになってしまいます。(つまり、データが重複しているということです)
もし、主キーにしようとして、主キーにできないのであれば、データに重複があるので、重複しているデータを削除しなければなりません。もし、重複している状態で正しいと思われて作成されているようであれば、すこし、テーブルの作り方を変えなければなりません)

>可変テーブルと得意先Mの「送付先CD」は、どちらも主キーの設定がないために自動結合

この可変するテーブルの方は、入力NOが主キーで間違えはないと思います。通常は、「どちらか一方が主キー」で正しいリレーションが取れますので、この場合の「どちらか(可変するテーブルの送付先CDと得意先Mの送付先CDのどちらかが)主キーになっていればよいかと思います。(担当Mのほうも同じ考え方です)」となると可変するテーブルのほうの送付先CDは主キーには絶対になりませんので(重複してますよね)、得意先Mの送付先CDが主キーにならなければなりません。
いかがですか?主キーにすることができれば、きっとクエリからも入力できますよ。
投稿日時 - 2004-07-09 15:48:07
この回答を支持する
(現在0人が支持しています)
お礼
ついに解決しました!!\(^o^)/
本当にありがとうございました。終わってみれば、単純な理由でした。主キーの設定だったなんて。。。こんなにお付き合いいただいて感謝、感謝です。
本当にありがとうございました。
投稿日時 - 2004-07-10 18:04:05

ベストアンサー以外の回答 (7)

回答No.7
それでは・・
>得意先Mは「送付先CD」ということで可変テーブルのフィールド名とは同じにしているのに、自動結合しません。

これに注目!
ご存知かもしれませんが、自動結合するのにはいくつかの条件があります。
1.同じフィール名
2.同じデータ型
3.どちらかまたは両方が主キー

となると・・・1と2は確認済みですから・・主キーはどうですか?「得意先M」の送付先CDは主キーになっていますか?
と、担当者のほうはフィールド名が違うので、自動結合されないとしても、「担当者M」の担当者CDは主キーになっていますか?

あまり頻繁には見れませんが、とことん付き合いますよぉー
投稿日時 - 2004-07-08 18:41:24
この回答を支持する
(現在0人が支持しています)
お礼
>あまり頻繁には見れませんが、とことん付き合いますよぉー

再三ほんとにありがとうございます。
なんかすごく心強いです!(^^)!
不思議と、とてもハッピーな気分になってます。

さて、恥ずかしながら
3.どちらかまたは両方が主キー
は知りませんでした。

さっそく調べてみると、確かに担当者Mの担当者CD
と得意先Mの送付先CDは主キーになっていませんでした。以前の私の記述に間違いがあったんですが、可変テーブルの主キーは「入力NO」でした。したがって、可変テーブルと得意先Mの「送付先CD」は、どちらも主キーの設定がないために自動結合しないようです。
投稿日時 - 2004-07-09 09:24:53
回答No.6
お礼読ませていただきました。
読んでいて少々疑問に思ったことがありますので、確認させてください。
>>可変するテーブルに直接すべてのマスターテーブル
>>がリレーションされていますか?
>>それとも、可変するテーブルに得意先Mテーブルが
>>リレーションされていて、さらに、得意先Mテーブ
>>ルに担当者Mテーブルがリレーションされているな
>>ど・・になっていますか?

>おっしゃる通りになってます。
ということでしたが・・これは、どちらになっていますか?わたしは、後者のほうになっているのかと(可変するテーブルに得意先Mテーブルがレーションされていて、さらに、得意先Mテーブルに担当者Mテーブルがリレーションされている)だと思ったのですが、前者のほうでしたか?
もし、後者のほうだとすると・・・先ほどのお礼の部分に疑問が出てきます。

>この2つのテーブルのいずれか1つでも追加すると入力ができなくなります。
この、「いずれか」という言葉に、ひっかかります。
可変するテーブルには、「得意先M」はリレーションされても「担当者M」を単独で入れても、可変するテーブルにはつなげるフィールドがないのではないかと考えます。例えば、担当者IDが可変するテーブルにあり、「得意先M」にも存在するということになっていますか?
と、リレーションをもう一度見てみてください。(リレーションシップウィンドウの方です)
リレーションシップウィンドウでグレーのところで、右クリックして、すべてのリレーションを表示して、すべてを見てください。(おかしなところはないですか?)もし、リレーションシップウィンドウのほうではリレーションの設定をしていないようであれば、その旨教えてください。
と、クエリを作成するときに、先ほど確認していただいた方法で、ひとつずつテーブルを追加して確認していくときに、リレーションは自動結合しましたか?それとも、自分でつなげましたか?その部分を教えてください。
投稿日時 - 2004-07-08 16:31:37
この回答を支持する
(現在0人が支持しています)
お礼
すいません。間違っていました<(_ _)>
可変するテーブルには
1.得意先M
2.品目M
3.項目M
4.担当者M
が直接リレーションされています。

得意先Mにはさらに、
5.区分M
がリレーションされています。
つまり区分Mは可変するテーブルとは直接は
リレーションされていません。

また、テーブルを追加してゆくときには、品目Mと項目Mは自動結合しましたが、担当者Mと得意先Mは自動結合しませんでした。
担当者Mが自動結合しないのは、可変テーブルでの
フィールド名は入力者CDになっていて、担当者Mの
フィールド名は担当者CDになっているためだと思います。ですので、これは自分で結合しました。得意先Mは「送付先CD」ということで可変テーブルのフィールド名とは同じにしているのに、自動結合しません。
この得意先Mも自分で結合させました。

この自動結合しないフィールド名ですが、
可変テーブルの「送付先CD」と得意先Mの「送付先CD」
可変テーブルの「入力者CD」と担当者Mの「担当者CD」
となります。

可変テーブルの「送付先CD」ですが、フィールドサイズを倍精度浮動小数点型にしています。
これは得意先Mのフィールドサイズと一致しています。
また、「入力者CD」は長整数型にしています。
これも担当者Mのフィールドサイズと一致しています。

ほんとにお手間取らせることになって申し訳ないのですが、どうぞ宜しくお願いします。こんなに親切にご返答いただけるのって初めてです(*^_^*)
投稿日時 - 2004-07-08 17:51:55
回答No.5
それではっ・・・・。
現在作っているクエリはひとまずおいておいて・・・
新しくクエリを作ってみていただけますか?
まずは・・(ウィザードではなく、デザインビューで作ってみてください)
1.可変するテーブルだけを使って、クエリを作る。(とりあえず、すべてのフィールドを使ってみてください)
2.データーシートビューで確認し、新しいレコードが入力されるか確認してください。(たぶんこれは大丈夫だと思う)
3.デザインビューにし、テーブルの追加で、マスターテーブルをひとつ追加。(得意先Mなど)そして、得意先名や住所など入れてみてください。
4.データーシートビューで確認し、新しいレコードが入力されるか確認してください。

以上の手順で、1つずつ、テーブルを追加する形で、確認をし、どの時点で追加ができなくなるのか、確認してみてください。そして、教えていただければ、対処があると思います。
投稿日時 - 2004-07-07 11:07:19
この回答を支持する
(現在0人が支持しています)
お礼
さっそくやって見ました。可変するテーブルのみでクエリーを作成した場合は、なにも問題なく入力できました。そこで、おっしゃられるように、クエリーに一つずつテーブルを追加していきましたところ、担当Mを追加したときと得意先Mを追加した時に新しいレコードが入力できなくなりました。この2つのテーブルのいずれか1つでも追加すると入力ができなくなります。その他の項目Mや区分Mは問題ありませんでした。う~んこうやって問題を一つ一つ解いてゆくわけですか。。。すごく勉強になります(^^)
本当にほんとうにありがとうございます。
投稿日時 - 2004-07-07 17:41:34
回答No.4
>得意先Mや担当Mや品目M
これがマスターテーブルですね。
そして、可変するテーブル(日常データを入力していくテーブルですね。)は
>送付先CDがあり、これはオートナンバー型で、主キーの設定をしています
と仰っているテーブルでしょうか?
まず、クエリーやフォームを考える前に、テーブルのことを考えて見ます。
もし、フォームを使わずに直接テーブルにデータを入力するとすると。。。
可変するテーブルに、たとえば。。
no,売上日,得意先ID,商品ID,個数,担当ID
1,2004/7/7,001,002,10,100
などと入力していきますよね。
そして、可変するテーブルの得意先IDにマスターテーブルの得意先Mの得意先IDとリレーションを組むことによって、得意先名や住所などを参照することができます。(クエリーなどで・・)
ということは、そのクエリの中は可変するテーブルが元になっていなければなりません。すなわち、得意先IDは可変するテーブルにもありますが、得意先Mにも得意先IDはありますよね。データを入力してしまっているものをクエリで表示するだけのものであれば、どちらの得意先IDを使っても同じクエリが作成されますが、追加をしていかなければならないクエリは別です。必ず、可変するテーブルの得意先IDを入れておかなければなりません。つまり、入力して追加をしていくわけですから、得意先Mテーブルに追加するのではなく、可変するテーブル側ですよね。クエリを作って、データが追加できないというときは、割とこういうことが多いかと多いかと思います。
で、まとめると、まず
マスターテーブル(ここでは、得意先Mや担当Mや品目M)の各主キーになっているIDがクエリに含まれていませんか?
と、これで解決できなければ、ひとつ確認!
可変するテーブルに直接すべてのマスターテーブルがリレーションされていますか?
それとも、
可変するテーブルに得意先Mテーブルがリレーションされていて、さらに、得意先Mテーブルに担当者Mテーブルがリレーションされているなど・・になっていますか?
投稿日時 - 2004-07-06 22:12:11
この回答を支持する
(現在0人が支持しています)
お礼
ほんとにありがとうございます。
>必ず、可変するテーブルの得意先IDを入れて
>おかなければなりません。

さっそく調べてみました。これってクエリーのフィールドには可変するテーブル側の項目を追加するってことですよね?同じ得意先IDでも、参照するための得意先Mの得意先IDをフィールドに追加してはならないって
ことですね。う~ん一応間違ってないようです。

>可変するテーブルに直接すべてのマスターテーブル
>がリレーションされていますか?
>それとも、可変するテーブルに得意先Mテーブルが
>リレーションされていて、さらに、得意先Mテーブ
>ルに担当者Mテーブルがリレーションされているな
>ど・・になっていますか?

おっしゃる通りになってます。これが問題なのでしょうか?でも、クエリーで、得意先Mと担当者Mのリレーションを削除しても問題は解決しませんでした。

ほんとに何度もすいませんが、宜しくお願いします。
投稿日時 - 2004-07-07 10:49:52
回答No.3
入力しようとしているレコードの主キーの重複。
リレーションを取っているテーブル内レコードの存否。整合性の崩れ等。
オートナンバー型フィールドの崩れ。
このぐらいの事が原因だと思いますが。
投稿日時 - 2004-07-06 18:20:23
この回答を支持する
(現在0人が支持しています)
7件中 1~5件目を表示
この質問は役に立ちましたか?
2人が「このQ&Aが役に立った」と投票しています
もっと聞いてみる

関連するQ&A

この他の関連するQ&Aをキーワードで探す

回答募集中

同じカテゴリの人気Q&Aランキング

-PR-
-PR-

特集

背筋がゾクゾクする心霊体験を要チェック!

お城、ボート、ツリーハウス、ユニークな物件満載!

【期間限定】1ヶ月無料キャンペーン中!

このQ&Aの関連キーワード

同じカテゴリの人気Q&Aランキング

-PR-

ピックアップ

-PR-