• ベストアンサー

ACCESS・VBAが全く分かりません。

次のようなことをやるにはどういうコードを書けばいいですか? (患者情報テーブル) ID 氏名 1  阿部 2  伊藤 3  宇治 (表示フォーム) ID  1    氏名 阿部  表示フォームのIDを1から2へ変更したら、 自動的に氏名も阿部から伊藤へ変わってほしいのです。 これを実現する方法を教えて下さい。 それと、ユーザーが任意で指定できるのはIDだけにしたいので、 氏名はテキストボックスでなくてラベルで充分なのですが、 アクセスではラベルの表示をVBAで変えることはできるのでしょうか。 エクセルならそれができましたよね。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

表示フォームのテキストボックス「氏名」のコントロールソースを =DLookUp("氏名","患者情報テーブル","ID=" & Nz([ID],0)) ID が 0 の患者は存在しないものと仮定しています。

shinseikoutei
質問者

お礼

DlookUp関数で実現できました。 ありがとうございました。

その他の回答 (2)

回答No.2

コンボボックスを使うのはどうでしょうか。 ID のテキストボックスを右クリックして、「コントロールの種類の変更」でコンボボックスに変更します。 コンボボックスのプロパティを下記のように設定します。 値集合ソース 患者情報テーブル 連結列 1 列数 2 列幅 3cm;0cm 名前 cbID 氏名を表示するテキストボックスのコントロールソースを =[cbID].Clolumn(1) これで、コンボボックスに ID を入力するかリストから選択すると、対応する氏名がテキストボックスに表示されます。

shinseikoutei
質問者

お礼

DlookUp関数で実現できました。 ありがとうございました。

noname#208392
noname#208392
回答No.1

VBA使ってもできますが、私なら親子フォームで実現します。 親フォームは、ソースの無い非連結(という言い方であっていたかな?)フォーム。ここにIDを書き込むテキストボックスを作っておきます。 子フォームは、患者情報テーブルをレコードソースにしたフォームです。親フォームのテキストボックスと子フォームのIDを関連付けておきます。 これでできあがり。 子フォームの方は、編集不可にしておけば、表示されるだけです。 これは・・・・フォームのプロパティの、レコードタグにある項目だったかな。

shinseikoutei
質問者

お礼

親と子。 その発想は全く思いつかなかったです。 あとで早速やってみたいと思います。

関連するQ&A