• ベストアンサー

アクセス2000でこんなこと。。

はじめまして。 アクセス2000を始めて使っています。 そこで、こんなことができるか? どうすればいいのか教えてください!!! 1)テープルが2つ(テーブル1・テーブル2)あります。 2)テーブル1に   電話番号、住所が登録してあります。 3)テーブル2に   電話番号、氏名が登録されています。   このテーブル2に、   電話番号をキーとして、   テーブル1にある、住所を追加したいのです。   (自動的にテーブル1を参照して、    結果を自動的に追加したいのです) こんなときって どうすればいいのでしょうか? 教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.7

>「テーブル2の住所フィールドを取り出す」という言葉の意味はわかるのですがアクセスでどのように設定すればいいのか 難しく考えることはないです。クエリの新規作成でクエリのウィザードが開くはずなので選択クエリウィザードを選びテーブル2を選び選択可能なフィールドで電話番号・市名を選びます。次へ進みクエリのデザインを編集するにチェックを入れ完了ボタンをクリックするとクエリのデザインビューが表示されますのでクエリ上で右クリックしメニューのテーブルの表示を選択しテーブル1を追加します。 これでデザインビュー内にテーブル2が追加されます。リレーションシップを取っていると自動で結合線が表示されますがしてない場合はテーブル2の電話番号をドラッグしテーブル1の電話番号で結合させます。両テーブルとも電話番号を主キーとしていれば重複する番号はないので1対1の結合ができます。テーブル1の住所をダブルクリックするか住所をドラッグしてクエリの新しいフィールド上に持って行けば住所のフィールドが追加されます。 この状態でクエリは電話番号・氏名・住所になっているはずです。 このクエリを保存して開けば1つのテーブルの様に表示されます。 これは簡単に出来ますので試してみてください。 この様にクエリで別のテーブルのフィールドを結合させてフォーム等のレコードソースとし使えるので同じ内容のフィールドを複数持たなくても良くなります。キーになるものがあればキー同士を結合し必要なフィールドだけを表示すればいいので複数の同内容フィールド(複数の同内容のシールド=住所)はいらないとなります。 クエリで色々できるので試してみてください。

lovelovelvoelvoe
質問者

お礼

細かく説明していただき、 本当にありがとうございます。 ここまで説明していただければ、 初心者の私でもできそうです。 (すみません。ほかでトラブル発生中で、  まだ、試せていません) お手数をおかけしましたが とても助かりました。

その他の回答 (7)

noname#182251
noname#182251
回答No.8

1.アクセス入門書の購入をお勧めします アクセスのような、実行/開発ともにGUIがほとんどのアプリケーションは、説明するのに文字だけだと、説明する側、される側、共に辛いです。画面のスナップショットに説明を加えるだけで、どれだけ理解が早まるか。 2.テーブルの設計 テーブル1に、電話番号、住所 テーブル2に、電話番号、氏名 この設計はどう考えても不自然です。ごく単純に テーブル1に、電話番号、住所、氏名 で良いと思いますが、何らかの理由(思い入れ?)があってのことでしょう。そこら辺を説明されると、それなりのアドバイスがあるかもしれません。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.6

テーブル1にもテーブル2にも住所のフィールドを持たせたいというのはデータベースの正規化から言えば外れますが使う人の自由な構成でも特に問題はないと思いますが。 その辺は使いながらリレーショナルデータベースの概念を分かっていけばいいことだと思います。 >テーブル1は電話番号と住所の管理専門で使いたいので ただテーブル1からテーブル2へ住所を追加してしまえばテーブル2だけあればいいのでテーブル1は不要になります。 >テーブル1は電話番号と住所の管理専門で使いたいので とありますがテーブル2に住所を追加してしまえばテーブル2の電話番号と住所のみ使えば良いだけの話となります。 >登録データに変更があった場合は必ずテーブル1を修正したいのです。 テーブルが1つならそのテーブルを修正すれば良いだけになります。 このままテーブル1と2がそのままの状態(テーブル2に住所無い状態)であっても選択クエリでキー(電話番号)を結合し電話番号・氏名・住所のフィールドを表示してそのクエリを使用すれば1つのテーブルの様に使えるので余分な更新(UPDATE)がいらなくなります。 通常はこんな感じでデータベースの構成をスリムにします。 >自動的にテーブル1を参照して結果を自動的に追加したいのです テーブル1にあってテーブル2に無ければテーブル2に追加したいという事ならテーブル1のクエリを作りテーブル2に無いレコードを抽出するように条件を設定しそのクエリをテーブル2のテーブル追加クエリにすればクエリを起動すれば出来ます。 他のテーブルのレコードを別のテーブルのレコードに更新する場合は更新クエリ。他のテーブルに無いレコードを別のテーブルのレコードから追加したい場合は追加クエリを使います。

lovelovelvoelvoe
質問者

お礼

回答ありがとうございました。 下記も私がやりたいことです。 どこまでできるか、わかりませんが、 やってみたいと思います。 クエリに条件をつけて  あたりから、 いったい何のことやら。 ネットで調べながらやってみます。 ~~~~~~~~~~~~~~~ テーブル1にあってテーブル2に無ければテーブル2に追加したいという事ならテーブル1のクエリを作りテーブル2に無いレコードを抽出するように条件を設定しそのクエリをテーブル2のテーブル追加クエリにすればクエリを起動すれば出来ます。 他のテーブルのレコードを別のテーブルのレコードに更新する場合は更新クエリ。他のテーブルに無いレコードを別のテーブルのレコードから追加したい場合は追加クエリを使います。

noname#182251
noname#182251
回答No.5

#2、#3です。重要なことを書き忘れていました。 >電話番号をキーとして これは(特殊な理由がない限り)やめた方が良いです。電話番号は変わる可能性があり、その場合リレーションがめちゃくちゃになります。 リレーショナルデータベースでキーとして使用するのは、ユーザが変更できないものを使用することが望ましいです。 で、話が前後しますが、テーブルの設計から見直すことを強くお勧めします。基本の勉強にもなるし、データが増えたり、フォームやレポートをたくさん作ってからの変更は辛いです。

lovelovelvoelvoe
質問者

お礼

回答ありがとうございました。 いろいろ教えていただいているのですが。。 2)テーブル1、テーブル2をクエリデザインビューに取り込み 電話番号フィールドで結合して、テーブル2の住所フィールドを取り出す で、すでにつまずきました。 「テーブル2の住所フィールドを取り出す」という言葉の意味はわかるのですが、 アクセスでどのように設定すればいいのかが、 わからず*0*。 なので、テーブル設計を含めて、 自分の力&時間と相談して、またやってみたいと思います。 いろいろありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

#1です >結果的に好ましくない状況が発生すると考えます。 >「住所データの二重化」です。 2つのテーブルから新しいテーブルを作りテーブル1は廃棄するものと考えて回答しました >テーブル1は電話番号と住所の管理専門で使いたいので、 同じようなテーブルを2つ持つのは正規化以前の問題で絶対にやってはいけないことです また、最初の質問のように住所と氏名でテーブルを分けることもやってはいけません

noname#182251
noname#182251
回答No.3

#2です。 >また、テーブル1のデータを変更したとき、 >テーブル2で参照しているデータも >自動更新がかかるとうれしいので 自動更新というか、選択クエリを使用していれば、あたかも一つのテーブルのように見えて、常に最新のデータが利用できます。これが「リレーショナルデータベースの基本的使い方」です。 今回のケースで更新クエリを使うとすれば、何か特殊な事情、たとえば「書き換え前のデータを残しておきたい」がある場合のみでしょう(更新クエリそのものは大変有用なものです)。

noname#182251
noname#182251
回答No.2

ケチを付けるつもりは毛頭ありません(^^; #1のご回答は、質問に対して正しい回答ですが、結果的に好ましくない状況が発生すると考えます。 「住所データの二重化」です。 で、もと質問が今一つ不明瞭ですが、 1.二つのテーブルを統合したい これであれば、更新クエリ実行後テーブル1を破棄(即破棄は怖いから名称等を変更して使えなくする?) 2.二つのテーブルをあたかも一つのテーブルのように使用したい この場合は更新クエリにせず、選択クエリのまま使用すればよろしいでしょう

lovelovelvoelvoe
質問者

お礼

回答ありがとうございます。 また、説明不足で申し訳ありません。 テーブル1は 電話番号と住所の管理専門で使いたいので、 登録データに変更があった場合は 必ずテーブル1を修正したいのです。 また、テーブル1のデータを変更したとき、 テーブル2で参照しているデータも 自動更新がかかるとうれしいので、 更新クエリでやってみようかと思います。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

分からない言葉はヘルプで調べてくださいね 1)テーブル2をテーブルデザインビューで開き住所フィールドを増設する 2)テーブル1、テーブル2をクエリデザインビューに取り込み 電話番号フィールドで結合して、テーブル2の住所フィールドを取り出す 3)クエリの種類を更新クエリに変え住所フィールドの[レコードの更新]欄に テーブル1の住所を指定する 4)更新クエリを走らせる

lovelovelvoelvoe
質問者

お礼

早速の回答ありがとうございます。 アクセス初心者なので、 何をキーワードに ヘルプ参照すればいいのかもわからず。。。 教えていただいた方法で早速 トライしてみます。 ありがとうございました。

関連するQ&A

  • ACCESSで連番処理(難問です)

    ACCESSにテーブルをつくりデータをいれたのですが、 一番右の列に順番に番号を入力して(1,2,3,4,5・・・) 2行目に氏名、3行目に住所をいれています。(約100名分) 一番右の列の番号は手動で打ちこんでいましたが、 今後データを追加する際に、 氏名、住所を入力するだけで、自動的に 一番左に番号(101,102,103・・) がついていくようにできないものでしょうか? どなたかよろしくお願いします。

  • ACCESSのフォームの作り方について

    ACCESSのフォームについてお尋ねします。 『会員ナンバー』を主キーに設定しているテーブル(顧客データ。会員ナンバー・住所・氏名等のデータが入ってます)を元にACCESSで入力フォームを作っているのですが、会員ナンバーを入力したら住所・氏名のテキストボックスに自動的に入力されるにはどのようにしたらいいですか? 現在データが1番から自動的に表示されていて、例えば1番の人が表示されているときに会員ナンバーのテキストボックスに番号を入力すると、そのまま1番の人が上書きされてしまいます。 会員番号を検索して住所などのデータが出てくるイメージにしたいのですが。。。 本当はすでに入力されている住所等のデータはこのフォームでは上書きされないようにしたいのです。 ちなみにこのレポートは会員を新規追加するためではなくどんな修理をしたかという項目を追加させるため物です。

  • accessのVBAでテーブル更新するには・・・?

    [input]フォームより「登録」ボタンを押すことで [data]テーブルの[氏名][住所][電話番号][年齢][性別][コメント]フィールドを更新する動作をVBAだけでさせたいです。 このボタンだけで新規登録と更新登録ように既存データの氏名と住所を参照して入力されたデータが既存なのかを確認するようにしたいです。 dim dbs as database をつかってSQLを書き込んでいけばいけるような気がするのですが どうもうまくいきません。 よろしくお願いします。

  • Accessでの設計

    次のようなデータの設計に困っています。 前回他の方に答えていただいたのですが、問題が生じたので再度投稿させていただきます。 例)受験者名簿テーブル 受験者番号   主キー 受験者氏名 受験者かな    郵便番号 住所 電話番号 例)申込者テーブル 申込者番号(主キー) 受験者番号 受験者との続柄 申込者氏名 申込者かな 郵便番号 住所 電話番号 上記のテーブルが2つあります。また、受験者と申込者テーブルの受験者番号はリレーションを設定してます。 まず、受験者との続柄が「本人」の場合、申込者名前や住所、その他の項目は全て、受験者テーブルのデータを元に入力できるようにしたいです。また、受験者との続柄が「本人」ではないときには、氏名などを直接入力できるようにしたいです。 その際、申込者に「主キー」は必要かどうか。 また、他にテーブルを作成する必要があるのか。など初心者にわかりやすいように教えていただきたいです。クエリで、試してみましたが「本人」以外のデータを入力できなくなってしまいました。 どなたか回答願います。   

  • Access アクセスについて

    Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

  • アクセスの追加クエリについて(1対1リレーションシップの場合)

    お世話になります。 似たような質問はあるのですが、どれもしっくりこないので質問させて下さい。 アクセスで検査結果のデータベースを作ろうと考えています。 アクセスでデータベースを作製するのはこれが初めてです。 1製品毎に製造番号をつけ、各テーブルの主キーにしています。 テーブルは検査のタイミング毎に分け、それぞれの検査項目をフィールドに設定しています。 この方法だと各テーブルのリレーションは1対1になります(よね?) それで、新たに製品の詳細(製造日や数量など)を一括して登録したいと考え、製造番号を含むテーブルを作成しました。 このテーブルで入力した製造番号を他のテーブルにも自動で登録したいので、追加クエリでやろうとするのですが、 「0件のレコードを追加します」と出てしまいます。 データは適当にですが、入力はしています。 どうすれば実現できるのでしょうか? また、テーブルを分割しなければ製造番号を追加する必要もない訳ですが、 1つのテーブルに統合するべきなのでしょうか? その場合はフィールドは50個ぐらいになってしまいます。 大変お手数ですが、ご教示頂けると幸いです。 よろしくお願いします。

  • SQLで他のテーブルを参照して該当個所を一発更新したい

    例えば次のような二つのテーブルがあるとします。 住所録(氏名,住所,メモ) 電話帳(氏名,電話番号) ※(住所録の氏名はキーだが電話帳の氏名はキーではない) この時、住所録テーブルに対して、 電話帳に電話番号がない名前全てについて メモに、"電話番号は不明"と言う更新をしたいのですが… UPDATE 住所録 SET メモ='電話番号は不明' WHERE … のWHERE句には何と書けばいいのか分からなくて困っています。 それともこういう時の更新はそもそも出来ないのでしょうか? 回答よろしくお願いします。

  • ACCESS初めての起動。。

    いつもお世話になっています。 今日ACCESSで顧客管理(予約管理)を作ってといわれて困っています。エクセルは使うのですが・・ ACCESSはまったく使ったことがなく。 顧客テーブル 顧客コード 氏名 住所 電話番号 予約テーブル 顧客コード 氏名 予約日 時間 を作りました。 連動さしていきたいのですが・・ そのあとどのようにしたらいいのかわかりません。 説明不十分ですが・・よろしくお願いします。

  • アクセスについて教えてください。

    アクセス2002 XP使用 Aテーブル ID 氏名 電話番号 住所  などの個人情報入力 Bテーブル ID (リレーションするためのID主キー) 管理ID 購入商品 上記のように今作っているのですが、AテーブルIDとBテーブルは1対多でのリレーションしてます。 フォームで帳票形式で見たとき、 管理NOの数だけレコード表示されるのはいいのですが、 AテーブルID 1に対し、管理IDが111と三件分あるとして、(勿論BテーブルIDには123となってます) AテーブルID1にひとつ、受付NOを追加して、   ID  受付NO  管理ID   1   1    1   1   2    1   1   3    1   2   1    2   2   2    2   3   1    3 見たいに受付NOがIDごとに123。。。と自動入力されル洋にしたいのですがどのようにすればできますか?素人なので説明もうまくできなくわけが変わらないかもしれませんがおしえてください。よろしくお願いします。

  • accessの応用?

    WinXPで、Access2002です。 次のようなデータをもとにAccessのデータベースを作成するとして、一番いい方法を教えてください。 Aのデータのフィールド(本人) 本人コード(主キー)、本人氏名、本人誕生日、本人郵便番号、本人住所、本人電話番号 Bのデータのフィールド(責任者) (Aの)本人コード、(Aの)本人氏名、続柄、責任者氏名、責任者郵便番号、責任者住所、責任者電話番号 上記のようなデータベースが2つあるのですが、Bのデータで続柄が本人の場合は、各フィールドのデータをAのデータから持ってくるようにしたいのですが・・・。テーブルを増やすのがいいのか、それとも一括で作ってしまうのがいいのか・・・。どなたか教えてください。PS、後に各データを一覧表示で確認もしたいです。