Microsoft Access Club >DAO入門講座 >このページ >次頁 < 前項  サイト内検索
 

オブジェクト名を求める - split の利用 : DAO入門講座



DAOを 用いてオブジェクト名を求めることができます。テーブル名やクエリ名、フォーム名を取得するのは中々困難なことです。この機能はオブジェクトの指定などに活用することができます。

クエリ名を求める

手始めに、データベースウィンドウに表示されているクエリ名を取得し、全てのクエリ削除するプロシージャを紹介します。

Subプロシージャの作成

Subプロシージャ MyDAOQueryDelete を作成します。このプロシージャを実行すると、 データベース内のクエリ名を全て取得し、Split関数を用いて配列に格納します。最後に、Deleteオブジェクトを用いてクエリを削除します。

Sub MyDAOQueryDelete()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim i As Integer
    Dim counter As Integer
    Dim vartemp As Variant
    Dim strQ As String

    Set db = CurrentDb
    For Each qdf In db.QueryDefs ' --- A
        If Left(qdf.Name, 1) <> "~" Then ' --- B
            strQ = strQ & IIf(strQ <> "", ",", "") & qdf.Name
            counter = counter + 1
        End If
    Next
    
    vartemp = Split(strQ, ",") ' --- C
        
    For i = 0 To counter - 1
        db.QueryDefs.Delete vartemp(i) ' --- D
    Next
    
    MsgBox counter & "件の削除が完了しました。"
    db.Close: Set db = Nothing
    
    Exit Sub
    
エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub

End Sub
 
解説
  1. For 〜 Eachを用いてQueryDefsコレクションのQueryDefオブジェクトに格納されているクエリを求めます。
  2. チルダ(~)名を持つシステム系のクエリ(非表示)をじ除いています。
  3. Split関数に変数strQを格納します。
  4. Deleteメソッドを用いて全クエリを削除します。
動作確認
  1. データベースウィンドウを開きます。

  1. Split関数に配列として格納される文字列は、以下のとおりです。
Q_ageQuery,Q_enterQuery,Q_sampleQuery
  1. クエリを削除します。

留意点
  • 今回は、一旦クエリ名を全て取得してSplit関数に代入し配列として再度受け取っています。まわりくどいやり方ですが、直接以下のようなプロシージャを記述すると全てのクエリを削除できなくなります。

    For Each qdf In db.QueryDefs
        If Left(qdf.Name, 1) <> "~" Then
            db.QueryDefs.Delete qdf.Name
        End If
    Next

この理由としては、ループでクエリ名を取得し削除を行うとQueryDefsオブジェクトの序数の順番が異なることが原因と思われます。

関連ページ

2005/10/24

ページの先頭へ 前ページへ戻る

 


オブジェクト名を求める - split の利用 : DAO入門講座


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。