クエリでSQLを作成しVBAのRecordsetで使用する - Access VBA入門

SQL文を作成する場合、テーブル名やフィールド名入力と文法などでクエリで作成した方が簡単な場合があります。そこでここではクエリからSQL文を作成し、Recordsetで抽出結果を表示するVBAを作成します。

もしVBA実行中にエラーが発生する場合は、「Access 64Bit版でDAO Object Libraryがエラーになる」を参照してください。

BackHomeへ BackAccess VBA入門へ



下の市町村別の耕作面積がデータの「T_全国耕地面積一覧」テーブルを使用します
「T_全国耕地面積一覧」テーブル

クエリからSQLを作成する

クエリデザインでクエリを作成します。
「T_全国耕地面積一覧」テーブルの全フィールドを追加し、抽出条件に耕地面積が「>20000」と設定しました。
クエリデザインでクエリを作成する

実行すると、耕地面積が20000を超えるレコードが表示さました。
耕地面積が20000を超えるレコードが表示された

クエリをSQL文にします。
リボンの[クエリ ツール]~[デザイン]~[表示]~[SQLビュー]をクリックします。
クエリをSQL文にする

これでSQL文が表示されました。
後で使用しますので、コピーをメモ帳などに貼付けておいてください。
SQL文が表示された


SQLをRecordsetで使用するVBAの作成

フォームを作成し、テキストボックスを配置します。
フォームのプロパティで、読み込み時イベントにイベントプロシージャを選択し、右の[…]ボタンをクリックします。
読み込み時イベントにイベントプロシージャを選択する

Form_Loadのプロシージャが表示されるので下のVBAを入力します。
Form_LoadのプロシージャにVBAを入力する

・SQL=のところに、クエリで作成したSQL文を入力します。
・SQL文は長くなることが多いので、「 & _ 」を使用し、折り返すとVBA全体が見易くなります。
・SQLで抽出したRecordsetを、Do Loopでテキストボックスに代入しています。

Private Sub Form_Load()
     Dim SQL As String
     Dim rs As Recordset
     Me!テキスト0 = Null
     SQL = "SELECT T_全国耕地面積一覧.市町村名, T_全国耕地面積一覧.耕地面積, " & _
        "T_全国耕地面積一覧.田耕地面積 FROM T_全国耕地面積一覧 " & _
        "WHERE (((T_全国耕地面積一覧.耕地面積)>20000));"
     Set rs = CurrentDb.OpenRecordset(SQL)
     Do Until rs.EOF
         Me!テキスト0 = Me!テキスト0 & rs![市町村名] & " : " & rs![耕地面積] & vbCrLf
         rs.MoveNext
     Loop
     Set rs = Nothing
End Sub

実行すると耕作面積が2000を超える市町村名がテキストボックスに表示されました。
耕作面積が2000を超える市町村名がテキストボックスに表示された



BackHomeへ BackAccess VBA入門へ

Copyright(C) FeedSoft