Accessのプロの方教えて!!

このQ&Aのポイント
  • 申請者が本人の場合には、本人テーブルよりデータを引用したいのです。
  • フォームを使って入力する際に、続柄が本人としたときには、本人テーブルよりデータを表示させ、本人以外ではそのままデータを入力できるようにしたいです。
  • 後で、申請者一覧を確認する際には、本人データも含めた一覧が必要になります。
回答を見る
  • ベストアンサー

Accessのプロの方教えて!!

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

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

  • ベストアンサー
回答No.3

「何度か同じ質問をしたのですが・・・。」と言われても、そのときの回答の何がわからなかったのか、あるいは、何が問題なのかを書くとか、その質問の URL を貼り付けるとかしないと、前回と同じような回答しかもらえないとは思いませんか? 私は http://oshiete1.goo.ne.jp/kotaeru.php3?q=801406 の回答をしましたので、いくらか問題点が推測できますが、他の質問については、どういう質問をされたのか、また、どういう回答がついたのか、全くわかりません。 とりあえず、私が知りえる範囲で推測して書きますが、 「クエリーの IIf([申請者].[続柄]="本人", [本人].[氏名], "" ) をフォームで表示しているテキストボックスには入力できないのが嫌だ」ということですよね?それで現状では、申請者テーブルをデータシートビューで開いて直接申請者テーブルに入力せざるを得ないということですよね? やり方はいろいろあるかもしれませんが、私だったら次のようにします。 (1) 本人テーブルの番号と申請者テーブルの番号を結合したクエリーを作成し、クエリーのフィールドには、 申請者テーブルの氏名、住所、電話番号 と 本人テーブルの氏名、住所、電話番号 の両方を表示させる。 (2) フォームに続柄を表示するコンボボックスを作り、 コントロールソース=続柄 値集合タイプ=値リスト 値集合ソース=本人;父;母;兄弟 のようにする。 (3) 続柄コンボボックスのイベントプロシージャに If 続柄 = "本人" Then   氏名.ControlSource = "本人.氏名" Else   氏名.ControlSource = "申請者.氏名" End If のように記述。 (続柄コンボボックスのプロパティ→「イベント」→「変更時」を「イベントプロシージャ」にし、右端の「...」をクリック) #プログラムでもあると言えばプログラムでもあるので、まぁ別にここでもいいと思いますけどね。

manamiu
質問者

お礼

的外れな事を何度もいってすみませんでした。基本的な部分の間違いに気がつき、作り直したらきちんと「tsukasa-12r」さんのアドバイス通りできるようになりました。「tsukasa-12r」さんは何度もアドバイスしてくれたのに、のみこみが悪くてすみません。どうかこれからも嫌にならずに、何かあった際にはアドバイスお願いします。 本当に助かりました。ありがとうございました。

manamiu
質問者

補足

スミマセンが、もう少し教えて頂きたいのですが。 (2)のところなんですが、これだけですと実際にデータを入れることが出来ません。何度も申し訳ありませんが、この際に必要なフォームは他に作成するのでしょうか?フォームは何を元にどの様に作成すればいいのかわかりません。(2)(3)の内容的には理解できましたが、他のつながりが理解できないのでもう少しお願いします。 ご迷惑をおかけしておりすみません。

その他の回答 (3)

回答No.4

>(2)のところなんですが、これだけですと実際にデータを入れることが出来ません。 というのは、テーブルに保存されないということでしょうか?それなら、コンボボックスのコントロールソースプロパティを「続柄」に設定しておけばいいと思います。 (1) と (2)、(3) の関連ですが、きっちり書いていなかったのはミスです。すみません。本人テーブル及び申請者テーブルを表示するフォームのレコードソースプロパティに (1) のクエリーを設定します。他にフォームを作成する必要はありません。

manamiu
質問者

補足

なかなかうまくいきません。 上記の通り(1)で作成したクエリーをもとにフォームを作成しました。そのときできたフォームは「メイン・サブフォーム」になりました。そこへ「続柄」のコンボボックスを作成しました。(メインの方でいいのでしょうか?)その後(2)と(3)をやってみましたが、実際にデータシートに切り替えて、コンボボックスのリストから選択すると、ステータスバーに「このコントロールは”続柄”に連結しているので編集できません」とメッセージが出てきます。 やり方が間違っているのでしょうか?

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

> カテゴリーは、Officeアプリケーションの方がいいですね。 違った。。。 Microsoftアプリケーション ですね。。。

参考URL:
http://okweb.jp/oshiete.php3?c=232
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

カテゴリーは、Officeアプリケーションの方がいいですね。 > 続柄が本人としたときには、本人テーブルよりデータを表示させ、 番号フィールドで、判断できるのかな? フォームの続柄を入力するコントロールの更新後イベントを使えばいいと 思います。 If Me!続柄 = "本人" Then   Me!氏名 = DLookup("[氏名]","[本人テーブル]","[番号]=" & Me!番号)   Me!住所 = DLookup("[住所]","[本人テーブル]","[番号]=" & Me!番号)   Me!電話番号 = DLookup("[電話番号]","[本人テーブル]","[番号]=" & Me!番号) End If

関連するQ&A

  • Accessでの設計

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

  • accessの応用?

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

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

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

  • Access2013テーブル結合クエリ

    Access2013 住所録テーブルと面談備忘録テーブルを、氏名で結合したクエリを作成したいのですが。 この二つのテーブルの氏名が重なり合わないものもあります。 この際、重なり合わない氏名などもクエリのデータシートビューに表示させる方法を教えてください。 フィールドの抽出条件になにか記入するのかなと思っています。初心者です。 宜しくお願いします。

  • アクセス2000のテーブル・クエリーについて

    アクセス2000でテーブル1(データ入力済み)、テーブル2(データ未入力)、 テーブル3(データ未入力)、テーブル4(データ入力済み)の4つのテーブルを作成しました。クエリーを上記のテーブルから作成しました。テーブル1とテーブル4はデータが入力されているので、クエリーに反映されています。その後、テーブル2に入力した後、そのクエリーに反映されないのは、どうしてでしょうか。 初歩的なことだと思いますが、教えて下さい。

  • アクセスのクエリ作成について

    下記のようなテーブルとフィールドがあるとします。 Aテーブル  会社名 分類 都道府県 住所 HPアドレス  Bテーブル  担当者 部署 電話 メールアドレス Cテーブル  受付番号 分類 Dテーブル  受付番号 分類 ここでAテーブルの都道府県で一致するデータを抽出し、 下記のフィールドを表示するクエリを作成したいと思っています。 A 会社名 分類 都道府県 住所 HPアドレス B 担当者 部署 メールアドレス 電話 C 受付番号 D 受付番号 クエリを作成し実行しましたが、何もデータが出てきません。 全フィールド入力していないと抽出できないのでしょうか。 中にはHPアドレス等がない場合もあるのです。 すみませんが、どなたか教えて下さい。 よろしくお願いします。

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

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

  • Accessのマクロ

    Access2002で、「氏名(テーブル名:name)」と「日付<○月○日~○月○日>(テーブル名:date)」でレポート内容が検索できるのを作っています。 フォームに 氏名一覧、日付入力、検索ボタン、最新データの取り込みボタン を作っています。 「検索」の方は出来たのですが、「最新データ取り込み」をしようとすると、 『テーブル'name'は現在ほかのユーザまたはプロセスで使用されているので、ロックできませんでした』というエラーメッセージがでてきます。 「最新データ取り込み」ボタンに対してのマクロのアクションは、 オブジェクトの削除…テーブル/report テキスト変換…reportインポート定義 オブジェクトの削除…テーブル/name クエリを開く…name作成(テーブル作成クエリ) としています。 (「マクロの実行」で指定) フォームに表示されている氏名(name)を削除しようとしているために、このようなエラーメッセージが出ているのかとも思っていますが…。 フォームを閉じずに、「最新データ取り込み」ができないものでしょうか? ご教示の程、よろしくお願いします。

  • アクセス エラーを数値「0」に変換するには

    こんばんは。 テーブル1のフィールド1を、テキスト型にし 1 2 3 あ と入力しました。 クエリを作成し、 SELECT CLng([テーブル1]![フィールド1]) AS 数値に変換 FROM テーブル1; とした場合、 「あ」の部分が数値に変換できないため、「#エラー」となります。 このままだと、並べ替えをしようとすると 「抽出条件でデータ型が一致しません。(Error 3464)」 となるため、「#エラー」を0へ変換したいのですが、 やり方がわかりません。 IIFなどを使うのでしょうか? ご教授よろしくお願い致します。

  • Access2003でのフォーム作成について(再度です)

    民宿の顧客管理をAccessでしようかと思っています。 氏名、住所、来客日などのフィールドを持つ顧客テーブル。 来客日、その日の献立1~17までを持つ日別献立テーブル。 この2つのテーブルからクエリーを作成し、 それを基にフォームを作ってデータを両方のテーブルに振り分けしようとしたんですが、うまくいきません。 クエリーで来客日同士を結ぶとデータは表示されますが新規の入力が出来ません。 顧客テーブルの顧客ID(オートナンバー)と 日別献立テーブルに顧客ID(数値型)を挿入し、2つを結んでも一方のデータしか表示されません。 おかしいとは思いますが、何がおかしいかわかりません。 何か良い方法があればお教え下さい。