• ベストアンサー

Accessでテーブルのデータを検索してフォームに表示させる方法を教えてください

現在、アクセスでテーブルを作成しました。テーブルは患者テーブルという名前でデータはID、名前、年齢です。フォームにはID、名前、年齢のフィールドを作成しました。IDのフィールドに、ID番号を入力し患者テーブル テーブルのID番号と一致すれば、名前と年齢を自動的に表示させるモジュールを作成したいのですが、どのように作成すればいいでしょうか?ご教示頂ければ幸いです。

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

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

> テーブルのID番号と一致すれば、名前と年齢を自動的に表示させるモジュールを作成したい サンプルモジュールを作成してみました。 非連結フォームです。フォーム上のコントロール名は、txtID・txt名前・txt年齢です。 Private Sub txtID_AfterUpdate()   Dim Cn As ADODB.Connection   Dim Rs As ADODB.Recordset   Set Cn = CurrentProject.Connection   Set Rs = New ADODB.Recordset   Rs.Open "[テーブル名]", Cn, adOpenKeyset, adLockOptimistic   Rs.Find "[ID] = " & Me![txtID]   If Rs.EOF Then     MsgBox "レコードが見つかりません。ID=" & Me![txtID]   Else     Me![txt名前] = Rs![名前]     Me![txt年齢] = Rs![年齢]   End If   Rs.Close: Set Rs = Nothing   Cn.Close: Set Cn = Nothing End Sub 連結フォームでしたら、ご自分でモジュールを作成する必要はありません。コンボボックスウィザードを使用し、検索用コンボボックスを作成すればよろしいかと思います。 ご参考になれば幸いです。

jones0901
質問者

補足

説明不足ですいませんでした。連結フォームで作成していました。コンボボックスウィザードの機能で作成する事ができました。ありがとうございました。そこで追加で質問なのですが、複数のテーブルからIDと一致したデータを呼び出す事は可能でしょうか?フォームを作成する時に一つしかテーブルを選択する事ができません。

その他の回答 (2)

回答No.3

ANo.2 の GreatDragon です。 > 複数のテーブルからIDと一致したデータを呼び出す事は可能でしょうか? そのフォームを非連結フォームにし、ANo.2 のようなプログラムを呼び出し対象のテーブル分実行します。(プログラムは1つに纏めておきます。) > フォームを作成する時に一つしかテーブルを選択する事ができません。 リレーションシップで予めクエリを作成し、これを基にフォームを作成(レコードソースでこのクエリを選択)すればよいです。

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

非連結のフォームでってことですか? とりあえず、質問をそのまま解釈すると。 名前 =DLookup("名前","患者テーブル","ID=" & [ID]) コントロールソースに上記のようにすれば可能です。 VBAであれば、代入式になるだけですね。(第3引数がちょっぴり変わりますけど。)

関連するQ&A

  • アクセスでのリレーションシップの設定方法を教えてください。

    こんばんは。アクセス初心者です。フォームで入力して、テーブル、クエリですぐに反映させるにはどうしたらよいのでしょうか?私が今作成しようとしているデータベースは次のようなものです。  病院にて(1)患者マスター(患者IDと名前、年齢、性別など)のテーブル、クエリ、フォーム。(2)検査件数(患者ID、名前、年齢、検査材料、検査依頼日、発生した細菌など)のテーブル、クエリ、フォーム。 これらは作ったのですが、リレーションシップの仕方がよく解らないのでここから進めません。例えば、(2)検査件数のフォームで患者IDを入力したら自動的に名前、年齢、性別が入力されるようにしたいのですが。 よろしくおねがいします。

  • アクセスフォームでフィールドデータ一括表示方法

    「アクセス2013において、IDを入力しただけで、連結しているテーブルのフィールドのデータを自動で一括表示するフォームを作りたいのですがどのようにすればよいのでしょうか?」

  • フォームから2つのテーブルにデータを書き込みたい

    Accessで T_aテーブルとT_bテーブルがありそれぞれのフィールドが以下のようになっているとします。 T_a:フィールド名 データ型    ID  オートナンバー型    商品番号 テキスト型 主キー T_b:フィールド名 データ型    ID  オートナンバー型 主キー    商品番号 テキスト型 このときフォームから入力したデータをそれぞれのテーブルの商品番号に追加したいのですがどのようにすればよいのでしょうか。  よろしくお願いいたします。

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

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • アクセスでの、フォームとテーブルの連動の方法を教えてください

    初歩の初歩だと思うのですが、教えてください。 アクセスで、テーブルのフィールドと全く同じ内容でフォームを作りました。(受講生情報の管理) その中で「性別番号」と「性別」があり、(「性別番号」と「性別」は、別にテーブルを作っています)フォーム上では「性別番号」に番号(男なら1、女なら2)を入力すると「性別」に自動で値が入るように設定できたのですが、テーブルに反映されません。(フォームの「性別」のプロパティのコントロールソースに”DLOOKUP~”を入力しました) テーブル上にも同じように反映させるには、どうすればよいのでしょうか。 同様の質問と思われるものを参考にいろいろとやってみたのですが、どうもうまくいかなくって・・・ よろしくお願いします。

  • [Access]検索データの表示 など

    (1)テーブルがA、Bと2つあります。 Aのフィールドは店舗ID、店舗名、支店名、店舗住所、店舗電話番号です。 Bは案件ID、店舗名、支店名、店舗住所、店舗電話番号、それ以外に20ほどフィールドがあります。 Bをフォームを使って入力するのですが、Bのフォームの電話番号欄に電話番号を入力し、コマンドボタンを押すとAの該当する店舗データがBのそのレコードの各対応するフィールドに反映されるようにしたいのですが、どのようにすればいいかわかりません。 また、該当する電話番号がなかった場合は該当なしのメッセージを表示させたいです。 (2)Bのフォームで新規レコードを作成したときに、自動で日付フィールドに現在の日付を、時刻フィールドに現在の時刻を入れたいです。 どなたか教えてください。

  • Access テーブルのデータをフォーム上で、検索したい

    こんにちは。Access で簡単な貸出管理データを作っています。 現在、貸出フォームは作ったのですが、 返却フォームを作る際、 今度は、一度テーブルに保存した貸出記録データを 返却フォームで検索して、表示したい場合、どのように したらよろしいでしょうか? 貸出フォームでは、 テーブル1、社員ID、氏名、電話番号 テーブル2、備品ID、備品名、貸出日、返却予定日、 社員ID、氏名、電話番号 これをサブフォームを使ってつくりました。 このテーブル2のデータを返却フォームで検索して、 (備品IDか社員IDで) 表示させたいと思っています。 よろしくお願い致します。

  • Accessのフォームについて

    Accessで、テーブルへのデータ入力を簡易化するための、フォームを作成しています その中で、コンボボックスのなかから項目を入力したら 別に用意されているテーブルから 一致する項目をテキストボックスに 自動的に値を入力できるようにしたいのですが、 どのようにしたらいいのか、わかりません。 ~フォームに入力する項目~ 氏名、年齢、地区(コンボボックス)、地区コード、地区番号、住所、電話番号  等 ~地区テーブル~ 地区コード、地区、地区番号 調べてみたところ、プロパティのコントロールソースというところで、 値を持ってくるための式を作成するということでしたが・・・ 実践してみたのですが、初心者ゆえ、あまりよく理解できませんでした どうかよろしく御願いします。

  • Access2002 フォーム間のデータ受け渡し後の動作制御方法

    何度もすみません。 簡単な事なのかもしれませんが、自己解決できなかったので、質問させていただきます。 あるフォーム(基本情報閲覧)から、コマンドボタンで別の入力用フォームを呼び出しています。 その際、「ID」というフィールドの文字列を受け渡し、入力用フォームの「ID」に表示させています。 「ID」はテーブル:基本情報の一部であり、そのテーブルには「ID」と「名前」があります。 質問したいのは、入力用フォームにデータが受け渡されたときに、「ID」と共に「名前」も表示させたいのです。 もちろん、どちらのフォームも同じテーブルを裏に持っていますので、簡単にフィルタをかけて表示してくれると思っていましたが、「ID」フィールドに文字列は入るものの、「名前」は自動的には表示されず、他の入力項目を選択(コンボボックスで)したときに、なぜか「名前」が思い出したように表示されます。 入力用フォームの「ID」と「名前」フィールドのプロパティから、大元のテーブルからレコードを取ってくるselect文を書いてみたり、リクエリを指示してみたり、フィルタをかける設定を設けてみたりしましたが、どうも現象が変わってくれません。と申しますか、かえって動きが怪しくなります。 解決法をご存知の方はご教授くださいませ。 よろしくお願いします。

  • Access2003 検索用フォームでの検索がうまくいかない

    Access2003 検索用フォームでの検索がうまくいかない とある、テーブルを参照するフォームを作成。 そしてテキストbokを設けて、各項目毎にキーワードを指定してデータを抽出できるようにしたいのですが、 どうもうまくいきません。 検索は出来ているのですが、全部ひっかからないのです。 例えば ID という項目を検索するbox に"1"を入力して ID=1の全データを抽出しようとすると、一部検索にかかってこないものがある という具合です。 テーブルに入力されている数字や文字が本当に一致しているかどうかも調べましたが確かに一致しています。 実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 何が原因なのでしょうか??? 私の作った手順は以下のとおりです。 テーブル作成(エクセルからインポート) ※空白の欄もあります フォーム新規作成でフォーム作成 フォーム上にテキストbox作成 クエリ作成 (Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" ) マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 マクロをフォーム上へドロップ およそこのような手順です。

専門家に質問してみよう