Access VBAで「Googleマップ」へデータを引き渡す:Access VBAで学ぶ初心者のためのデータベース/SQL超入門(終)(2/3 ページ)
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、Access VBAからGoogleマップへデータを引き渡す応用テクニックを紹介する。
フォーム読み込み時のイベントを作成する
地図表示フォームのプロパティシートから、フォーム読み込み時のイベントを設定する。プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックすると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には、
- HospitalUrl = "http://maps.google.co.jp/maps?t=m&z=16&q=" & encodeUTF8(myRecordset("住所"))
の文字列を格納する。Googleマップを表示させるURLに続き、encodeUTF8関数を使って「住所」をUTF-8に変換している(後述)。
オプションの「t」には、「m(地図(既定))」「k(航空写真)」のいずれかを指定する。今回は既定値である「m(地図)」を指定している。
「z」は、0〜20の範囲で「倍率」を指定する。今回は「16」を指定した。「q」には、表示したい「住所」をUTF-8にエスケープして指定する。
上記のHospitalUrlを実行してサイトを開くために、
- Shell "rundll32.exe url.dll, FileProtocolHandler " & HospitalUrl, vbNormalFocus
と記述する。vbNormalFocusはウィンドウの状態を指定する定数だ。この例では、通常のウィンドウを最前面に表示する指定としている。他の値については下記のURL参照してほしい。
(参考リンク)Microsoft Developer Nerwork「AppWinStyle 列挙型」
書式は、
- rundll32.exe url.dll,FileProtocolHandler ファイルやフォルダのパス
となる。このサンプルでは、病院名リストボックスで選択した「病院名」に該当する「住所」を指定している。また、rundll32.exe url.dllを実行するのにShell関数を使用している。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう - Access VBAでデータ入力フォームを作り、各コントロールを追加するためのデザインビューの使い方
今回は、テーブルを基にデータ入力フォームを作成し、ラベル、テキストボックス、コンボボックス、ボタンリストボックスを追加する手順を解説する - SQLとはどういう言語か
- Accessを使うなら最低限知っておきたいSQL文を使ったさまざまな種類のクエリ操作の基本
今回は、テーブルに「SELECT文」や「BETWEEN演算子」などのSQLを入力し、データベースに蓄積したレコードを抽出する方法を解説する - 初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法
- Accessでフォームからデータを追加し、Excelのシートにエクスポートする
- SQLとはどういう言語か
- 数値判定、乱数発生、数値の丸めなど、数値に関する4つの関数の使い方
- 制御文で道案内
- 使うほどに良さが分かる正規表現
- .NET Frameworkがサポートする正規表現クラスを徹底活用する(前編)
- .NET Frameworkがサポートする正規表現クラスを徹底活用する(後編)