火曜日, 11月 18, 2008

[Life] MS-Accessの調査で

MS-Accessから、クエリ名とSQLの一覧を取得するVBAスクリプト(Cドライブ直下にlog.txtという名前でファイルアウトします)。

Option Compare Database

Public Sub MyQueryName()

On Error GoTo エラー

    Dim Cat As ADOX.Catalog
    Dim viw As ADOX.View
    Dim pcd As ADOX.Procedure
    Dim strmsg As String
    
    ' ファイルハンドルオープン
    Open "C:\log.txt" For Output As #1

    Set Cat = New ADOX.Catalog
    Cat.ActiveConnection = CurrentProject.Connection 'カレントデータベースに接続
    
    For Each viw In Cat.Views ' --- A
        strmsg = strmsg & vbNewLine & "[v] " & viw.Name & "^" & viw.Command.CommandText
    Next viw
    
    For Each pcd In Cat.Procedures ' --- B
        If Left(pcd.Name, 1) <> "~" Then ' --- C
            strmsg = strmsg & vbNewLine & "[p] " & pcd.Name & "^" & pcd.Command.CommandText
        End If
    Next pcd
    
    Print #1, strmsg
    ' ファイルハンドルクローズ
    Close #1
    
    MsgBox "end."
    Set Cat = Nothing
    
    Exit Sub
    
エラー:
    
    MsgBox Err.Number & vbNewLine & Err.Description, vbCritical
    Exit Sub

End Sub