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

解決済みの質問

ACCESSでテーブルでの自動入力

ACCESS 2007を使っています。
SQLとかは分かりません。(貼り付けとかも、そもそもどこに貼り付けるのかもよく分かりません)
得意先(100件)を、営業担当者(5人)にそれぞれに割り振ります。
得意先テーブル(得意先ID、名前、住所、担当者ID、営業担当者名)(とりあえずは、営業担当者名だけは空白)
営業担当者テーブル(担当者ID、営業担当者名)を 作成します。

クエリのほうで、以下の二つのテーブルの以下の要素を合体させたものを作ります。
得意先テーブルの(得意先ID、名前、住所、担当者ID)
営業担当者テーブルから(営業担当者名)

すると、
得意先クエリ(得意先ID、名前、住所、担当者ID、営業担当者名)まで入ったもの、がつくれます。このクエリは、得意先ID、担当者ID両方がきちんと入力された項目のみがリストアップされます。

それで、以下疑問点なのですが、
・基本的に、得意先の情報を新規で入力していく際は、この得意先クエリをベースに作成された、得意先フォームから入力していくというのが一般的なのでしょうか。
(テーブル自体に、上記の得意先テーブルに、得意先名まで入ったものを作成することは普通は、しないのでしょうか。入っていた方が何かと便利かと思うのですが、そういった用途には、クエリを基にしたフォームを使うものなのか。あくまでテーブルはデータの保管場所と考え、クエリを使用上の入出力の基本窓口にすべきなのでしょうか)

・現段階で、上記の得意先テーブルで、担当者IDが入力されていないものが多数あるのですが、(エクセルで取り込んだデータ)、この得意先クエリでは、それらは表示されません。そうすると、得意先テーブルから入力していく必要があります。その場合は、得意先テーブル自体か、そこから作られたフォームに、担当者ID(実際にはこれが、代理店IDで、結構多数あるのですが)、を入力していく形になるかと思います。この場合、得意先テーブルだけをベースとしたクエリやフォームをつくり、担当者IDの入力を(入力しやすい形、自動的に選択できるなど)にして、入力をとりあえず終えきるというのは基本でしょうか。

とりとめもない質問になってしまいましたが、よろしくおねがいします。
基本的な考え方など分かればと思います。

投稿日時 - 2017-12-02 18:36:50

QNo.9403685

困ってます

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

得意先テーブル(得意先ID、名前、住所、担当者ID、営業担当者名)(とりあえずは、営業担当者名だけは空白)
営業担当者テーブル(担当者ID、営業担当者名)を 作成します。

「得意先.担当者ID」と「営業担当者.担当者ID」をリレーションシップすることで「得意先テーブル上の営業担当者名」を参照できますので
不要です、「得意先テーブル上の営業担当者名」のフィールドを削除してください クエリーも不要です

・現段階で、上記の得意先テーブルで、担当者IDが入力されていないものが多数あるのですが
(エクセルで取り込んだデータ)、この得意先クエリでは、それらは表示されません。そうすると、得意先テーブルから入力していく必要があります。その場合は、得意先テーブル自体か、そこから作られたフォームに、担当者ID(実際にはこれが、代理店IDで、結構多数あるのですが)、を入力していく形になるかと思います。この場合、得意先テーブルだけをベースとしたクエリやフォームをつくり、担当者IDの入力を(入力しやすい形、自動的に選択できるなど)にして、入力をとりあえず終えきるというのは基本でしょうか。

これがシステムの根源です、先ずこれを次の手順で解消してください
1.担当者テーブルに「未担当」という担当者追加
2.未担当の担当者IDを得意先の担当者IDに入力
3.テーブルデザインで添付図のように

投稿日時 - 2017-12-07 18:13:52

お礼

ありがとうございます。基本的に、テーブルには最低限の情報しか含めないという視点が、分かりました。他の本など見てもそんな感じです。それで進めようと思います。

投稿日時 - 2017-12-10 22:39:37

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

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

回答(4)

ANo.3

#2です。

それはクエリビルダではありません。
私が言っているのはクエリの編集画面です。クエリのデザインビューと書いた方がよかったかもしれません。
この↓ウェブページで分かるでしょうか。
http://fk-plaza.jp/acs/KIS/Manabu_Query1b.htm
https://dekiru.net/article/15097/
http://www.accessclub.jp/samplefile/samplefile_06.htm
https://www.feedsoft.net/access/guide-query/guideq6.html

お礼コメント欄にかかれた画面はリレーションシップの編集ツールですが、私はこれは使いません。
便利なのは分かるのですが、連鎖削除などが行われたとき、なんか予期しないことが起こるような気がして怖いんですよね。
いずれにしてもリレーションシップはここで定義しなくても全然問題ありません。

投稿日時 - 2017-12-03 00:21:32

ANo.2

・得意先テーブル(得意先ID、名前、住所、担当者ID、営業担当者名)
・営業担当者テーブル(担当者ID、営業担当者名)
の二つのテーブルがあるんですね?

・得意先クエリ(得意先ID、名前、住所、担当者ID、営業担当者名)
というのは、おそらく"担当者ID"で二つのテーブルをつないだクエリですね?

クエリビルダで担当者ID同士が線で結ばれているはずですが、この線の上にカーソルあてて右クリックしてみてください。
プロパティを選んで、そこで「得意先テーブルのすべての項目と・・・」というようなことが書いてある選択肢を選びます。すると、得意先テーブルのレコードで担当者IDの入っていないレコードでも表示されるようになります。

これでご質問の問題は大体解決されるのではないでしょうか。
ただし、営業担当者テーブルは最初に完成させておく必要がありますが、5人しかいないのですから問題ないのではないですか?

>得意先の情報を新規で入力していく際は、この得意先クエリをベースに作成された、得意先フォームから入力していくというのが・・・
どうでもいいです。テーブルに直接入力してもいいし、クエリから入力してもいいし、フォームから入力しても何でも構いません。
以前のアクセスではフォームやクエリでコンボボックスが使えないとか、テーブルで並べ替えができないとかありましたから、必ず入力フォームを使っていましたが、今のアクセスならそうでもないでしょう。
ただ、入力の便利を考えて改良しようとするとどうしてもフォームでないと実現できない機能があったりしますから、私の場合、最初はテーブル・クエリから入力していても、結局はフォームを作ることが多いです。

投稿日時 - 2017-12-02 19:35:08

お礼

ありがとうございます。だいぶイメージができました。
クエリビルダというのは、(2007なのですが、)リレーションシップというボタンで出てくるものかと思うのですが、1と∞(担当者IDが主キーの担当者リスト側が1で、顧客リストのほうの担当者ID(こちらが∞)となる)で、結ばれています。右クリックしても、該当の「得意先テーブルのすべての項目と・・・」の表示は見当たらないのですが。おそらくそれが可能であれば、おっしゃるとおり問題は解決だと思います。
とりあえずいろいろやってみます。

投稿日時 - 2017-12-02 23:00:37

ANo.1

Q1、得意先の情報を新規で入力していく際は・・・
A1、(当然のことですが)過去のデータは無関係ですよ。

>この得意先クエリをベースに作成された、
>得意先フォームから入力していくというのが一般的なのでしょうか?

否。
そもそも、クエリなんぞは利用しないのが𠮷。

Q2、この場合、クエリやフォームをつくり・・・
A2、クエリの利用は百害あって一利なし。

>得意先テーブルで、担当者IDが入力されていないものが多数ある。

なら、対応表を作って自動入力するか手動入力するかの2拓。

>SQLとかは分かりません。

なら、Accessなんぞ利用すべきではありません。

条件1、SQLが判っている。
条件2、プログラミング経験がある。
条件3、Accessでの開発経験がある。

この3条件を満たしていないのであれば、Access の利用は中止されるべきです。

投稿日時 - 2017-12-02 19:21:54

あなたにオススメの質問