• ベストアンサー

アクセスの関連付けについて

Access 2000を使用しています。 初めてデータベースを作成しているのですが、ちょっとした事で困っています。 例えば、テーブル1のフィールド名を「地域」として、下のような感じにします。 ID   地域 1   北海道 2   東北 3   関東 4   東海 これらは「フォーム」の中にコンボボックスを作成して、ドロップダウンさせて選択するようにします。 またこれとは別に、テーブル2として「地域」と「県名」をフィールド名にした以下のようなものがあります。 ID   地域    県名 1   北海道   北海道 2   東北    青森 3   東北    宮城 4   関東    栃木 5   関東    東京 6   東海    静岡 7   東海    三重 このとき、「地域」のコンボボックスから選択した地域名に応じた県名を「県名」のコンボボックスに表示させ、そこから選択するようにしたいのです。 このようなことは可能なのでしょうか? 出来るとしたらどのようにすればいいのでしょうか? テーブルのリストはいつでも作り変える準備は出来ておりますので、よろしくお願いいたします。

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

  • ベストアンサー
  • nishishi
  • ベストアンサー率39% (17/43)
回答No.1

フォームへ作成した 地域のコンボボックス名を「コンボ0」 県名のコンボボックス名を「コンボ1」として、 コンボ0のプロパティの値集合ソースを SELECT [テーブル1].[地域] FROM テーブル1; イベントの更新前処理でプロシージャーで Private Sub コンボ0_BeforeUpdate(Cancel As Integer) Me.コンボ2.Requery End Sub を指定して コンボ1のプロパティの値集合ソースを SELECT [テーブル2].[県名] FROM テーブル2 WHERE ((([テーブル2].[地域])=[Forms]![フォーム1]![コンボ0])); 以上でできると思います。説明が悪いかもしれませんが...

kikumaro
質問者

お礼

早々のご回答、ありがとうございます。 また、お礼が遅くなりまして申し訳ございません。 いただいた回答を元に、試行錯誤を繰り返しておりました。 いかんせん初心者なので、計算式(?)よりも説明に使われていた専門用語(?)が、いったいどこにあたるのかを探すことからはじめておりました。 ご回答いただいたものがどのような処理にあたるのか想像出来ませんが、とりあえずうまくいきました。 本当にありがとうございました。

その他の回答 (1)

回答No.2

こんにちは 詳細の実現方法はnishishiさんの方法でOKですが テーブル2に地域名まで入れちゃうんなら テーブル1はなくてもテーブル2だけで できますね。でもこれは地域名を両方のテーブルに もつことになるので避けたいですね きちんと構造化するのならテーブル2は ID   地域ID    県名 1   2   北海道 2   2    青森 3   2    宮城 4   3    栃木 5   3    東京 6   4    静岡 7   4    三重 とした方がよいかと思います で コンボ1のプロパティの値集合ソースを SELECT [テーブル2].[県名] FROM テーブル2 INNER JOIN 地域テーブル ON [県名テーブル].[地域ID]=[地域テーブル].[ID] WHERE ((([地域テーブル].[地域])=[forms]![フォーム1]![コンボ0])); となります。

kikumaro
質問者

お礼

早々のご回答、ありがとうございました。 また、お礼が遅くなりまして申し訳ございません。 #1のかたの回答よりもなんか…一段と複雑になっている計算式(?)はいったい何を表しているのか…まったく想像つきません。 でも、コピペでやってみたら出来たので、こんなことをスラスラ出来る人はすごいなぁ…と、感心しております。 いかんせん、パソコンはインターネットとワープロ代わりにしか使っていなかった初心者が、データベースを作ることになったので、これからもいろいろと質問をすると思いますけど、質問を見かけましたら、「またか…」と思って、回答のほうを宜しくお願いいたします。

関連するQ&A