- ベストアンサー
ACCESS・VBAが全く分かりません。
次のようなことをやるにはどういうコードを書けばいいですか? (患者情報テーブル) ID 氏名 1 阿部 2 伊藤 3 宇治 (表示フォーム) ID 1 氏名 阿部 表示フォームのIDを1から2へ変更したら、 自動的に氏名も阿部から伊藤へ変わってほしいのです。 これを実現する方法を教えて下さい。 それと、ユーザーが任意で指定できるのはIDだけにしたいので、 氏名はテキストボックスでなくてラベルで充分なのですが、 アクセスではラベルの表示をVBAで変えることはできるのでしょうか。 エクセルならそれができましたよね。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
表示フォームのテキストボックス「氏名」のコントロールソースを =DLookUp("氏名","患者情報テーブル","ID=" & Nz([ID],0)) ID が 0 の患者は存在しないものと仮定しています。
その他の回答 (2)
- hatena1989
- ベストアンサー率87% (378/433)
コンボボックスを使うのはどうでしょうか。 ID のテキストボックスを右クリックして、「コントロールの種類の変更」でコンボボックスに変更します。 コンボボックスのプロパティを下記のように設定します。 値集合ソース 患者情報テーブル 連結列 1 列数 2 列幅 3cm;0cm 名前 cbID 氏名を表示するテキストボックスのコントロールソースを =[cbID].Clolumn(1) これで、コンボボックスに ID を入力するかリストから選択すると、対応する氏名がテキストボックスに表示されます。
お礼
DlookUp関数で実現できました。 ありがとうございました。
VBA使ってもできますが、私なら親子フォームで実現します。 親フォームは、ソースの無い非連結(という言い方であっていたかな?)フォーム。ここにIDを書き込むテキストボックスを作っておきます。 子フォームは、患者情報テーブルをレコードソースにしたフォームです。親フォームのテキストボックスと子フォームのIDを関連付けておきます。 これでできあがり。 子フォームの方は、編集不可にしておけば、表示されるだけです。 これは・・・・フォームのプロパティの、レコードタグにある項目だったかな。
お礼
親と子。 その発想は全く思いつかなかったです。 あとで早速やってみたいと思います。
お礼
DlookUp関数で実現できました。 ありがとうございました。