• 締切済み

Accessでの設計

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

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

申込者テーブルには氏名などの「入れ物」がありまして… クエリーを使えば「他の入れ物に入っている値を参照する」ことは出来ますが、「氏名などの入れ物にデータを入れる」ことは出来ません。 ってことで、取りうる道としては、 A:申込者.受験者との続柄=「本人」であれば受給者名簿.受給者氏名etcを表示する。 さもなくば、申込者.申込者氏名etcを表示する。 …のようなクエリを作る。 (申込者Tと受験者Tを外部結合し、IIF関数を使ってどちらか一方の値を表示する。) B:データ入力時に「受給者との続柄=本人」が指定されたときは、申込者氏名etcに受給者名簿のデータを複写して入力する。表示するときには申込者テーブルの内容をそのまま表示する。 といった選択肢が考えられますね。 ちなみに、どちらの方法も長所短所があります。 B案は、入力画面さえ作ってしまえば後は楽が出来ます。その反面、受給者名簿テーブルと申込者テーブルとの整合性を取るのに腐心しなくてはなりません。(データを入力する際に、自動でチェックルーチンを走らせるなど…) 「データの正規化」という観点からすると、あまり望ましくはないかも。 A案ですと、申込者テーブルを使用するすべての箇所に前述のロジックを組み込まないといけません。(まぁ、クエリとして保存しておけば、そのクエリを使いまわすだけで良いんですが) 加えて、表示するときに若干重くなりますしね。 難易度で考えますと、A案は何とかVBA無しで済ませれるような気もしなくはないですが、数が増えるにしたがってメンドクサクなりそうな気がします。 B案は、まともに作ればVBA必須ですが、「データを入力する際には、絶対に入力画面を使用する」という制約さえ付ければ、入力画面以外の部分では楽が出来るかと。

関連するQ&A

  • accessの応用?

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

  • Accessのプロの方教えて!!

    前回も何度か同じ質問をしたのですが・・・。 どなたかわかる方、初心者でもわかりやすく対応お願いします。 例えば次のようなテーブルがあると仮定します。 本人テーブル 番号、氏名、住所、電話番号 申請者テーブル 番号、続柄、氏名、住所、電話番号、その他 (1)申請者は本人の場合もあります。申請者が本人の場合には、本人テーブルよりデータを引用したいのです。 (2)フォームを使って入力する際に、続柄が本人としたときには、本人テーブルよりデータを表示させ、本人以外ではそのままデータを入力できるようにしたいです。 (3)後で、申請者一覧を確認する際には、本人データも含めた一覧が必要になります。 色々やってみてはいるのですが、今現在は下のやり方にどうしてもなってしまいます。 (1)本人テーブル及び申請者テーブルを作成 (2)続柄が本人の場合には、本人テーブルのデータを表示させるクエリを作成。(本人確認クエリ) iif([続柄]="本人"、"本人氏名"、"") (3)申請者が本人ではないときには、申請者テーブルに直接データを入力する形になってしまいます。 (4)最後に、(2)と(3)のデータを一緒にした申請者一覧表をクエリで作成します。 iif((2)<>""、(2)、(3)) 上記のないようだとあまりに使いづらいのですが・・・。どこをどの様にすればいいのかわかりません。また、基本的な使い方しか解らないですし、プログラム?等で直したことはありません。 よろしくお願い致します。

  • アクセスでのレコード移動

    アクセス2010でご質問がございます。 00001,郵便番号,住所,氏名,TEL 00002,郵便番号,住所,氏名,TEL 00003,郵便番号,住所,氏名,TEL 00004,郵便番号,住所,氏名,TEL 00005,郵便番号,住所,氏名,TEL 00006,郵便番号,住所,氏名,TEL 00007,郵便番号,住所,氏名,TEL 00008,郵便番号,住所,氏名,TEL 00009,郵便番号,住所,氏名,TEL のようなデータが存在したとします。 下記のようにデータを移動したいのですが 00001,郵便番号,住所,氏名,TEL,00004,郵便番号,住所,氏名,TEL,00007,郵便番号,住所,氏名,TEL 00002,郵便番号,住所,氏名,TEL,00005,郵便番号,住所,氏名,TEL,00008,郵便番号,住所,氏名,TEL 00003,郵便番号,住所,氏名,TEL,00006,郵便番号,住所,氏名,TEL,00009,郵便番号,住所,氏名,TEL クエリ等で、レコード移動は可能なのでしょうか?? ※今回の例ですと全9レコードありますので3等分にしたいので 9÷3で3レコードになります。 アドバイス宜しくお願い致します。

  • Access2002のリレーションについて。

    販売管理のデータベースを作成しています。 『販売店マスターテーブル』 販売店コード(主キー) 販売店名 郵便番号 住所 電話番号 営業担当者コード 『営業担当者テーブル』 営業担当者コード(主キー) 営業担当者名 『販売伝票テーブル』 伝票番号(主キー) 売上日 販売店コード この中で、『販売店マスターテーブル』から、販売店コード,販売店名,郵便番号,住所,電話番号,営業担当者コードを、 『営業担当者テーブル』から、営業担当者名を使って、新しいクエリを作成しました。 そのクエリを基にフォームを作成しましたが、フォームに新規レコードを入力できません。 念のため、販売店コードを『販売伝票テーブル』からとってきたら、新規レコードが入力できるようになりました。 これは、何か主キーの関係で入力できないんでしょうか。 もし、『販売伝票テーブル』から販売店コードをとらなくちゃいけないとしたら、それはナゼでしょうか・・。 初歩的なことで申し訳ありませんが、とても困っています。 どなたかお分かりになる方、教えて下さい。 よろしくお願いします。

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

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

  • Access2007テーブルの更新

    Access2007で住所録を作成していますが、すでにあるテーブルに名前と郵便番号があります。 そのテーブルに住所を追加し、住所入力支援を設定しましたが、既存のデータには住所が出ません。新規にデータを入れると住所は出ます。 どうしたら、既存のデータで郵便番号から住所が出ますでしょうか。 よろしくお願いします。

  • Access2003を使いバラバラのCSVをひとつにまとめる

    5種類位のCSVデータをひとつの統一したテーブルにまとめたいと 考えています。以下、その例です。 Aデータ:郵便番号、都道府県、市区町村、残り住所、苗字、名前、電話番号 Bデータ郵便番号、住所、氏名、電話番号市外局番、市内局番、局番 これを 統一データ:郵便番号、都道府県、市区町村、残り住所、苗字、名前、電話番号 というデータにまとめたいと思います。 AとBのデータは日々増えていくので増えた分をAccessを使って統合し 別の用途に利用するつもりです。ですので毎日作業は発生します。 このような場合のベストなテーブル構成やクエリー等をアドバイスいただけ ますでしょうか?

  • はじめまして。質問させて頂きます。accessの入門者です。

    はじめまして。質問させて頂きます。accessの入門者です。 基本的は操作だとは思うのですが・・ アクセスで名簿一覧を作成しています。テーブルのひとつの項目は「氏名」「郵便番号」「住所」「住所コード」です。 もうひとつは「住所コード」「郵便番号」「住所」が一覧となってないっています。 そしてフォーム入力画面で、各個人の情報を入れて行くのですが、毎回住所を入力がめんどくさいので 「住所コード」を入力すればテーブルの一覧にある「住所」が出てくる!・・と言う事をしたいのですが、どなたかやり方をおしえていただけないでしょうか??

  • テーブル設計につきまして(正規化)

    顧客情報管理サイトを作ろうと思っています。 ・非正規化  {顧客コード , 氏名 , かな名 , 性別 , 郵便番号 , 都道府県 , 市区町村 , 建物名 , 電話番号 ,  FAX番号 , 携帯番号1, 携帯メール1 , 携帯番号2 , 携帯メール2 , 顧客ランク,備考}  の列を考えております。 ・正規化テーブル  1.顧客情報テーブル   {顧客コード , 氏名 , かな名 , 性別 ,郵便番号(外部キー) , 建物名 , 電話番号 ,   FAX番号 , 携帯番号1, 携帯メール1 , 携帯番号2 , 携帯メール2 , 顧客ランク,備考}  2.郵便情報   {郵便番号(主キー) , 都道府県 , 市区町村 これ以上、正規化できないと思っているのですが、顧客情報テーブルをもっと効率よく テーブルを設計し、正規化できるものでしょうか? よろしくお願いします。

  • ACCESS フォーム設計

    ACCESS2003を使用して、基本情報と明細のテーブルとフォーム設計をしています。基本テーブルに担当者IDと氏名があり、明細テーブルにも担当者IDと氏名があります。明細のフォームで、担当者IDを入力したら、基本情報にある担当者名を自動表示し、明細テーブルに書き込みたいのですが、=DLookup("[氏名]", "[基本情報]", "[担当者ID] = " & Forms("明細")("[担当者ID]")) を指定しても、うまく動作しません。明細フォームの氏名のコントロールソースを空白にしても、テーブルとリンクしてもだめです。 又、明細の更新フォームとして、担当者IDを入力したら、該当レコードの内容を全て表示し、変更内容を入力後、同一主キーでUPDATEモードで書き込む方法も教えてください。

専門家に質問してみよう