12 クエリ系 - クエリの種類を収集する

カレントデータベース内にあるクエリ名の一覧とともに、それぞれのクエリの種類を収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

  2. そのデータベース内にあるすべてのクエリのコレクションである「QueryDefs」の中から、For Each〜Nextステートメントでひとつずつクエリ情報を取り出し、「QueryDef」オブジェクトの変数「qdf」にセットしていきます。

  3. VBAで扱うQueryDefsコレクションには、ナビゲーションウィンドウに表示されるクエリの他、フォームのレコードソースやコンボボックス等の値集合ソースプロパティに直接記述されているSQL文なども含まれています。

    それらのクエリは名前の先頭に「~sq_」という4文字が内部的に付加されていますので、ここではそれを判別してIf文で除外します。

    ※もしそれらのクエリも収集対象とするのであれば、このIfの条件式を抹消します。

  4. 取り出されたクエリ情報のうち、クエリ名である「Name」プロパティの値をイミディエイトウィンドウに出力します。

  5. さらに、そのクエリの種類を表す「Type」プロパティ(下表参照)を調べ、Select Caseステートメントでその値に応じたクエリの種類の名称をイミディエイトウィンドウに出力します。

Sub Sample_2_02()
'クエリの種類を収集する

  Dim dbs As Database
  Dim qdf As QueryDef

  Set dbs = CurrentDb
  For Each qdf In dbs.QueryDefs
    With qdf
      If Left$(.Name, 4) <> "~sq_" Then
        Debug.Print .Name,
        Select Case .Type
          Case dbQSelect
            Debug.Print "選択クエリ"
          Case dbQAppend
            Debug.Print "追加クエリ"
          Case dbQUpdate
            Debug.Print "更新クエリ"
          Case dbQDelete
            Debug.Print "削除クエリ"
          Case dbQMakeTable
            Debug.Print "テーブル作成クエリ"
          Case dbQCrosstab
            Debug.Print "クロス集計クエリ"
          Case dbQSetOperation
            Debug.Print "ユニオンクエリ"
          Case Else
            Debug.Print "その他のクエリ"
        End Select
      End If
    End With
  Next qdf

End Sub


■QueryDefオブジェクトのTypeの判別に使う組み込み定数
組み込み定数 クエリの種類
dbQSelect 選択クエリ
dbQAppend 追加クエリ
dbQUpdate 更新クエリ
dbQDelete 削除クエリ
dbQMakeTable テーブル作成クエリ
dbQCrosstab クロス集計クエリ
dbQSetOperation ユニオンクエリ
dbQDDL データ定義クエリ
dbQSQLPassThrough     パススルークエリ        

実行例:
| Index | Prev | Next |



Copyright © T'sWare All rights reserved