• ベストアンサー

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