ACCESSフォームで大学名マスターの国公立私立区分を表示させる方法

このQ&Aのポイント
  • Accessフォーム(1.大学テーブルを元に作成)で、大学と大学種類を入力すれば、大学名マスターより国公立私立区分を表示させたいと思っています。
  • 現在、大学テーブルクエリで大学名を作成していますが、大学テーブルクエリと大学名マスターの大学名をリレーションできません。
  • よい方法があれば教えていただけないでしょうか?
回答を見る
  • ベストアンサー

ACCESSフォームで入力時に項目を参照させたい

Accessフォーム(1.大学テーブルを元に作成)で、大学と大学種類を入力すれば、大学名マスターより国公立私立区分を表示させたい(思っています。 (マスターになければ何も表示せずに、国立、公立、私立いずれかをコンボボックスで選択入力できるようにしたいのです) そのために、2.大学テーブルクエリで大学名を作成したのですが、2のクエリと3.大学名マスターの大学名をリレーションできなくて困っています。 よい方法があれば教えていただけないでしょうか? 1.大学テーブル   ・大学(例、東京、早稲田)   ・大学種類(大学、大学大学院、短期大学) 2.大学テーブルクエリ(1.大学テーブルを元に&を使った式で項目を作成)   ・大学(例、東京、早稲田)   ・大学種類(大学、大学大学院、短期大学)   ・大学名(大学&大学種類)→例.東京大学、早稲田短期大学) 3.大学名マスター   ・大学名(例、東京大学、早稲田大学など)   ・国公私立区分(国立、私立、公立)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

大学と大学種類の変更後処理で共通メソッドを 呼び出すようにし、いずれかが変更されたら 区分を自動的に更新するようにします。 因みに、大学と大学種類の結合文字列でマスタを 検索するだけなので、リレーションとかの問題では ありません。単に条件式の書き方の問題です。 共通関数ではDDFirstなどを使えばよいでしょう。 全部書くと以下のようになります。 Private Sub 大学_AfterUpdate() 判定 End Sub Private Sub 大学種類_AfterUpdate() 判定 End Sub Private Sub 判定() Dim 結果 If Nz(大学, "") = "" Then Exit Sub If Nz(大学種類, "") = "" Then Exit Sub 結果 = DFirst("国公私立区分", "大学名マスター", _            "大学名='" & 大学 & 大学種類 & "'") If Not IsNull(結果) Then 国公立私立区分 = 結果 End Sub

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

大学テーブル:大学テーブルクエリ:大学名マスターのリレーションが1:1:1っぽいから、 [大学名マスター] 1,東京大学,東京,大学,国立 2,東大大学院,東京,大学院,国立 3,早稲田大学,早稲田,大学,私立 みたいな単一のテーブルをもって、そこから大学テーブルを射影させるほうが手っ取り早いのでは。

関連するQ&A

  • Access フォームの参照先について

    こんにちは!いつもこのサイトにはお世話になっています。 今日お聞きしたいことはタイトルにも簡単に書いたのですが、 例えば「社員マスタ」というテーブルを元に「社員マスタ」という 名前のフォームを作成したとします。 その後何らかの事情でテーブル名が「社員マスタ」から「社員名簿」 へ変わってしまった場合、もちろんフォームから「社員マスタ」を開こう としても開きません。 ただ「社員マスタ」フォームには参照先のテーブルの項目にあわせて 幅を調整したり、検索機能を付けたりしているので、 参照するテーブル名が変わっただけでまたフォームを1から作成する のはどうも効率が悪くてしかたありません。 フォームの内容はそのままに参照するテーブルの名前だけを変更する 方法がありましたらご教授お願いします。 ※「社員マスタ」テーブルと「社員名簿」テーブルは名前が変わった だけで、内容は全く変わりません。

  • ACCESSでデーフル作成入力フォームで入力しながら、クエリのデータを参照したい

    ACCESSで売上明細テーブルを作成し、入力用のフォームを作成しました。他に顧客マスタテーブルがあります。売上明細には顧客CDフィールドがありますが、顧客名等はマスターに存在するため設けてません。しかし売上明細入力時に顧客CDを入力した時点で顧客名の確認がしたいのです。そこで入力フォームの顧客CDの隣に非連結でテキストボックスを作り、そこに顧客名を表示したいのです。売上明細には顧客名のフィールドは追加したくありません。ただ参照したいだけです。顧客マスタと売上明細で顧客CDをキーにクエリを作成し、明細に対応する顧客情報は顧客情報検索というクエリで作成済みです。入力フォーム画面の非連結のフィールドのプロパティのコントロールソースに =DLookup("[顧客名]","顧客情報検索","[顧客CD] =" _ & Forms![売上明細入力Form]![顧客CD]) と表記しましたがエラーになります。 最初はコントロールソースに直接顧客情報検索クエリの顧客名フィールドを表記し、フォーカス取得時にクエリを開くマクロを実行していました。でもやはり表示されませんでした。 顧客名の設定をどのように設定すればいいのですか? コントロールソースでの設定だけでは無理なのでしょうか? よろしくお願いします。

  • Accessのフォームについて教えてください。

    こんばんは。アクセス入門者です。 入門書やできるシリーズなどいくつかのアクセスの本を見たのですが、 フォームについて、理解できません。 ●担当者マスタ ■客先マスタ ★コードマスタ ▲売り上げ計画マスタ ◎売上げ結果マスタ テーブルを作り、それぞれのテーブルから必要な項目を集めて、クエリを作成しました。思ったとおりの結果になったので、これを元にフォームを作成しました。 思ったとおりの結果が表示されるのですが、このフォームに入力が出来ません。できなかったので、次の方法を試しました。 ★コードマスタと▲売り上げ計画マスタのデータをサブフォームに配置しデータを追加させようと思って、あらたにフォームを作りました。やはり、思ったとおりの表示はされるのですが、追加ができないのです。それぞれのテーブルには、★コードマスタを主にそれぞれ、一対多にリレーションを組んでいます。 1つのフォームで色々なテーブルに結果を反映できるように、参照整合性の更新、削除にもチェックを入れました。 この考えは間違っているのでしょうか。 ○○マスタとあるように、それぞれ1つのテーブルに1つのフォームにしなければならないのでしょうか。 複数のテーブルから取り出したデータの更新は無理なのでしょうか。 ある程度、クエリまで完成したのにフォームでつまずいて苦しんでいます。ご解答宜しくお願い致します。

  • 【Access】外部結合を行う前に抽出条件をつけたいのですが。。。

    こんにちは。困っているので助けて頂きたいです。 Windows2000+Accessでシステムを組んでいます。 多分、とても基礎的な事だと思うのですが、行き詰まっております。 テーブル2つを結合させようとしています。 <データテーブル> 区分 金額 地域名 1   3000 1 1   3000 1 1   3000 3 2   3000 3 2   3000 1 <マスタ> 地域   地域名 1     大阪 2     京都 3     福岡 この2つのテーブルから、 マスタのデータ全部と、 データテーブルの中で区分が「1」のデータだけを結合させて、 金額を合計したいのです。 望んでいる結果は 地域   地域名  金額 1     大阪   6000 2     京都   0 3     福岡   3000 です。 クエリを二つ作成すればできるのでしょうが、諸処の事情で、どうしても一つのクエリでやってしまいたいのです。 拙い説明で申し訳ないのですが、 どなたかお知恵をお貸し頂きたく、宜しくお願い致します。

  • ACCSSでマスタに一致しない時は代りの項目の値を

    お世話になります。 今、「受注テーブル」にある”ItemCD”と 「商品集計マスタ」の”ItemCD”をクエリで紐付け 「商品集計マスタ」から”集計区分”の値を表示させます。 この時、 「商品集計マスタ」に存在しない場合は不一致となり、”集計区分”には 何も表示されないのですが 「商品集計マスタ」に存在しない場合は「受注テーブル」にある”品名”を ”集計区分”に代わりとして値を表示させるにはどのようにすればできますか? クエリの関数で実現したいです。 よろしくお願い致します。

  • 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)

  • ACCESSクエリについて

    A仕入先テーブル、B受注マスタテーブルがあって、 受注マスタの1レコードに複数の仕入先名がある場合、A、Bのテーブルを使って、クエリを作成するにはどのようにしたらいいでしょうか?

  • Access フォームから複数テーブルの入力は?

    フィールドが300ぐらいあるので項目ごとにテーブルで分けています。 1つにまとめるクエリを作成して、そのクエリを元にフォームを作成しました。 テーブルはフィールド名:品番で1対1のリレーションを組んでいます。 テーブル:商品カラー  ・フィールド:品番  ・フィールド:カラー テーブル:商品サイズ  フィールド:品番  フィールド:サイズ クエリのフィールド  フィールド名:品番 (商品カラーのフィールド:品番を指定)  フィールド名:カラー (商品カラーのフィールド:カラーを指定)  フィールド名:サイズ (商品サイズのフィールド:サイズを指定) この場合、品番をフォームから入力すると商品カラーの品番のみ入力されます。 商品カラーと商品サイズの品番を同時にファームから入力は出来ないでしょうか? 現在は10テーブルありますが1つのテーブルにまとめたほうがいのでしょうか?

  • access 入力フォームへの表示

    初歩的な質問で申し訳ありません。 accessで商品マスタへの入力フォームを作成しました。 商品マスタテーブルから作成しました。 新規入力ボタン、登録ボタンを作成して、ボタンクリック時にのみ 新しいレコードへの移動、テーブルへのデータ更新を実行するようにしました。 この段階で、できれば入力フォーム上でコンボボックスなどを利用して検索を行い、 選択データをフォーム上に表示させたいと思いました。 ところがまったく知恵が働かず、どうしてよいのやら途方にくれています。 検索フォームを別途設けてもよいのですが、商品数が200たらずで、 今はコンボボックスで十分かなと思っています。 商品マスタにはカタカナ二文字の「検索キー」フィールドを設けており、 これをキーにしてクエリ(「Q商品検索」)で昇順に並べ、コンボボックスのコントロールソースを そのクエリにしました。 コンボボックスの更新後の処理イベントでマクロを使い、 「フォームを開く」にしてみましたが、その他の条件のつけ方がわかりません。 まったく的外れなことをしているのかもしれません・・・。 本やネットの質問過去ログで探してはみましたが、皆さん先を進んでおられて、窮してしまっています・・・。 このような状態でaccessを触るな!とお叱りを受けそうですが、 どうかお助け下さい。 よろしくお願いします。

  • Accessで、1つのマスターを複数のフィールドで参照する

    いつも大変お世話になっております。m(_ _)m Accessで以下のようなテーブルを作成します。 テーブル(1) ・生産部門コード ・販売部門コード ・AS部門コード テーブル(2) ・部門コード ・部門名 テーブル(2)はマスタになります。 00:A生産部 01:B生産部 11:A販売部 12:B販売部 みたいな情報が入っています。 テーブル(1)の「部門コード」は、テーブル(2)の値を参照して入力します。 この2つのテーブルをリレーションして、クエリで部門名を表示させたいのですが、1つのマスタ(テーブル(2))のコードを複数のフィールドで参照するとエラーになります。 このような場合、テーブル(マスタ)を3つ作らないとダメなのでしょうか? 要は、テーブルに部門情報を入力したいのですが、マスタは1つで良いということです。 よろしくお願いします。