質問

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

通報する

回答 (3件)

ANo.2 の GreatDragon です。

> 複数のテーブルからIDと一致したデータを呼び出す事は可能でしょうか?
そのフォームを非連結フォームにし、ANo.2 のようなプログラムを呼び出し対象のテーブル分実行します。(プログラムは1つに纏めておきます。)

> フォームを作成する時に一つしかテーブルを選択する事ができません。
リレーションシップで予めクエリを作成し、これを基にフォームを作成(レコードソースでこのクエリを選択)すればよいです。

> テーブルの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


連結フォームでしたら、ご自分でモジュールを作成する必要はありません。コンボボックスウィザードを使用し、検索用コンボボックスを作成すればよろしいかと思います。


ご参考になれば幸いです。

この回答への補足

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

非連結のフォームでってことですか?
とりあえず、質問をそのまま解釈すると。

名前
=DLookup("名前","患者テーブル","ID=" & [ID])

コントロールソースに上記のようにすれば可能です。
VBAであれば、代入式になるだけですね。(第3引数がちょっぴり変わりますけど。)

このQ&Aは役に立ちましたか?4 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

このQ&Aを見た人はこんなQ&Aも見ています

注目の記事

おしトピにAndroid版アプリが登場

話題のトピックにさくっとコメントできる「おしトピ」に Android版アプリが登場! もっと身近に使いやすくなりました。
今ならダウンロードで話題の掃除ロボットや全天球カメラが 当たるプレゼントキャンペーンも実施中。


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ