Access VBA レコードの表示にSQL文を使う方法。

VBA のプログラムでは、よくSQL文が使われます。

前回、OpenRecordset() の引数にテーブル名を使いましたが、SQL文でも同じ結果になることを確認してみましょう。

さらにSQL文を使うことのメリットを考えながら試してください。テーブル名の場合は表示が固定されていましたが、SQL文の場合は自由自在に変化させることができます。


【1】Access で VBEを起動し、標準モジュールの test6 を表示します。

access-vba-171.gif

*VBEは「Altキー」+「F11キー」で起動できます。


【2】「test6」に以下のように Subプロシージャを1つ追加します。


Sub dispData2()
  Dim db As DAO.Database
  Set db = CurrentDb

  Dim mySql As String
  mySql = "SELECT * FROM T01Prefecture"

  Dim rs As DAO.Recordset
  Set rs = db.OpenRecordset(mySql)

  Do Until rs.EOF
    Debug.Print rs.Fields("PREF_CD") & " " & rs.Fields("PREF_NAME")
    'Debug.Print rs!PREF_CD & " " & rs!PREF_NAME
    rs.MoveNext
  Loop

  rs.Close
  Set rs = Nothing
  db.Close
  Set db = Nothing

End Sub


dispData2() は、ほとんど dispData() と同じなので、コピーして作成してください。
違う部分だけを赤枠で囲んでみました。もちろんプロシージャ名は変わります。

access-vba-172.gif


プログラムの準備ができたら実行してみましょう。

【3】Subプロシージャの dispData2() を実行してください。

・dispData2()の実行結果
access-vba-173.gif

SQL文を使っても、テーブル名の時と同じ結果になることが確認できました。


【4】次の操作のため、イミディエイト ウィンドウをクリアします。

access-vba-176.gif


【5】SQL文を少し変更します。


mySql = "SELECT * FROM T01Prefecture WHERE PREF_CD >= 40"


access-vba-174.gif


【6】再び Subプロシージャの dispData2() を実行してください。

・dispData2()の実行結果
access-vba-175.gif

SQL文が反映され、実行結果が変わりました。PREF_CD が 40 以上の都道府県が抽出されています。


【7】さらにSQL文を変更します。


mySql = "SELECT * FROM T01Prefecture"
mySql = mySql & " WHERE PREF_CD >= 40"
mySql = mySql & " ORDER BY PREF_CD DESC"


access-vba-177.gif

SQL文は単なる文字列なので、複数行に分けて書くことができます。変数の文字列がどんどん連結していきます。

* WHERE と ORDER の前に半角スペースがある点に注意してください。半角スペースが無いとエラーになります。初心者が一番忘れがちな点です。


【8】Subプロシージャの dispData2() を実行してください。

・dispData2()の実行結果
access-vba-178.gif

九州地区の都道府県が「降順」で表示されました。

あとはSQL文を変えることで、いろんな表示ができます。


【解説】

今回使ったSQL文について、簡単に説明しておきます。SQL文の詳しい説明については Access SQL初心者入門講座 をご覧ください。

(1)テーブル「T01Prefecture」から、全てのフィールドとレコードを表示します。
SELECT * FROM T01Prefecture


(2)PREF_CD が 40 以上のレコードを抽出します。
WHERE PREF_CD >= 40


(3)PREF_CD の降順でレコードを並べ替えます。
ORDER BY PREF_CD DESC


最近のシステム開発では、SQL文は欠かせないものになっています。

SQLは非常に強力な言語です。プログラムで書くと複雑な処理でも、SQL文を使うと、まるでデータベースと対話するような感覚で、簡単に実現することができます。

今回は手動でSQL文を書き換えましたが、プログラミング言語でSQL文を動的に組み立てることで、さらに便利な使い方ができます。


スポンサードリンク

スポンサードリンク






Access VBA 初心者入門講座 TOPへ