地図表示フォームのプロパティシートから、フォーム読み込み時のイベントを設定する。プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックするとVBEが開き、
Private Sub Form_Load()
End Sub
のプロシージャが生成される。これをリスト1のコードに書き換える。
Private Sub Form_Load() 病院名リストボックス.RowSourceType = "Table/Query" 病院名リストボックス.RowSource = "Select 病院名 From 病院テーブル;" End Sub
リスト1のコードは、値集合タイプに「Table/Query」を、値集合ソースに「病院テーブル」の「病院名」フィールドの値を指定したものだ。これで、病院名リストボックスに「病院名」の一覧が表示される。
続いて、病院名リストボックスのためのコードを記述していく。
「病院名リストボックス」を選択した状態で、プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックするとVBEが開き、
Private Sub 病院名リストボックス_Click()
End Sub
のコードが生成される。これをリスト2のコードに書き換える。
Private Sub 病院名リストボックス_Click()
Dim myRecordset As Recordset
Dim HospitalName As String
HospitalName = 病院名リストボックス.ItemData(病院名リストボックス.ListIndex)
Set myRecordset = CurrentDb.OpenRecordset("Select 住所 From 病院テーブル Where 病院名=" & "'" & HospitalName & "';")
Dim HospitalUrl As String
HospitalUrl = "http://maps.google.co.jp/maps?t=m&z=16&q="
HospitalUrl = HospitalUrl & encodeUTF8(myRecordset("住所"))
'地図を表示する'
Shell "rundll32.exe url.dll, FileProtocolHandler " & HospitalUrl, vbNormalFocus
End Sub
リスト2のコードは、以下のように記述してある。
RecordSet型のmyRecordSet変数と、文字列型のHospitalName変数を宣言する。HospitalNameには、病院名リストボックスから選択された「病院名」が格納される。
OpenRecordSetメソッドで、病院テーブルから「病院名」が、変数HospitalNameの値に該当する「住所」を選択するSQL文を指定して、カレントデータベースを開き、myRecodSetに代入する。
文字列型のHospitalUrlを宣言する。変数HospitalUrlには、
の文字列を格納する。Googleマップを表示させるURLに続き、encodeUTF8関数を使って「住所」をUTF-8に変換している(後述)。
オプションの「t」には、「m(地図(既定))」「k(航空写真)」のいずれかを指定する。今回は既定値である「m(地図)」を指定している。
「z」は、0〜20の範囲で「倍率」を指定する。今回は「16」を指定した。「q」には、表示したい「住所」をUTF-8にエスケープして指定する。
上記のHospitalUrlを実行してサイトを開くために、
と記述する。vbNormalFocusはウィンドウの状態を指定する定数だ。この例では、通常のウィンドウを最前面に表示する指定としている。他の値については下記のURL参照してほしい。
(参考リンク)Microsoft Developer Nerwork「AppWinStyle 列挙型」
書式は、
となる。このサンプルでは、病院名リストボックスで選択した「病院名」に該当する「住所」を指定している。また、rundll32.exe url.dllを実行するのにShell関数を使用している。
どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Access VBAでデータ入力フォームを作り、各コントロールを追加するためのデザインビューの使い方
Accessを使うなら最低限知っておきたいSQL文を使ったさまざまな種類のクエリ操作の基本
初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法
Accessでフォームからデータを追加し、Excelのシートにエクスポートする
SQLとはどういう言語か
数値判定、乱数発生、数値の丸めなど、数値に関する4つの関数の使い方
制御文で道案内
使うほどに良さが分かる正規表現
.NET Frameworkがサポートする正規表現クラスを徹底活用する(前編)
.NET Frameworkがサポートする正規表現クラスを徹底活用する(後編)Copyright © ITmedia, Inc. All Rights Reserved.