#737 指定した名前のクエリの有無をチェックする VBA

ある名前のクエリがデータベース内に存在しているかどうかを返すサンプルプロシージャです。任意の名前を引数に指定して呼び出します。その名前のクエリが実在する場合はTrueを、そうでない場合はFalseを返します。

Public Function IsExistQuery(strChkQryName As String) As Boolean
'指定した名前のクエリの有無をチェックする

  Dim varRet As Variant

  On Error Resume Next
  varRet = CurrentDb.QueryDefs(strChkQryName).Name
  IsExistQuery = (Err.Number = 0)

End Function

  • 「On Error Resume Next」とすることで、次の行以降で発生したエラーを無視して続行するようにします。
  • 引数の名前のクエリが実際にあるかどうかは別として、「CurrentDb.QueryDefs(strChkQryName).Name」という命令を実行します。この命令自体は、データベース内からstrChkQryName変数値のQueryオブジェクトの名前(=クエリ名)を取得するためのものです。そのクエリがあればその値が変数varRetに代入されますが、ない場合にはエラーが発生します。エラーは発生しますが上記の「On Error Resume Next」で無視され、次の行へ処理が進みます。
  • 次の行で「Err.Number」で発生したエラー番号を取得します。エラーが発生していない、すなわちクエリがある場合はエラー番号は「0」となりますので、「Err.Number = 0」の式はTrueとなり、結果「True」がプロシージャの返り値となります。
  • 一方、エラーが発生した場合にはErr.Numberは0以外の値となりますので、「False」がプロシージャの返り値となります。

イミディエイトウィンドウでの実行例:
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved