汎用オブジェクト存在チェック(2000 以降) Hit Counter

対象バージョン : 2000, 2002, 2003, 2007
最終更新日 : 2007/02/12 ( オリジナル作成日:1999/09/18 )


概 要

 プロシージャ内で、指定されたオブジェクト が存在するか否かをチェックするユーザー定義関数です。

構 文

  IsObjExist(objectType, ObjectName)

解 説

IsObjExist 関数の戻り値はブール型 (Boolean)です。

引数に指定されてオブジェクトが存在する場合は True を、存在しない場合 は False を返します。

IsObjExist 関数では次の引数を使用します。

引 数 内     容
ObjectType オブジェクトの型を示す Access の組み込み定数を指定します。
組み込み定数 オブジェクト ADP MDB
ACCDB
acTable テーブル ○ ○
acQuery クエリー − ○
acForm フォーム ○ ○
acReport レポート ○ ○
acDataAccessPage ページ
(データアクセスページ)
○ ○
acMacro マクロ ○ ○
acModule モジュール ○ ○
acServerView ビュー ○ −
acDiagram データベースダイアグラム ○ −
acStoredProcedure ストアドプロシージャ ○ −
acFunction 関数 ○ −

 

ObjectName オブジェクトの名前を示す文字列式です。

ObjectType に誤った値や、現在のプロジェクトで使用できないオブジェクトを示す値を設定した場合や、ObjectName が長さ0の文字列の場合、 IsObjExist 関数は False を返します。

 

ユーザー定義関数
Public Function IsObjExist(argObjType As AcObjectType, argObjName As String) As Boolean
Dim cobj As Object
Dim aobj As AccessObject

'===== ADP/MDB・ACCDB 共通オブジェクト =====
Select Case argObjType
Case acTable
    Set cobj = CurrentData.AllTables
Case acForm
    Set cobj = CurrentProject.AllForms
Case acReport
    Set cobj = CurrentProject.AllReports
Case acDataAccessPage
    Set cobj = CurrentProject.AllDataAccessPages
Case acMacro
    Set cobj = CurrentProject.AllMacros
Case acModule
    Set cobj = CurrentProject.AllModules
Case Else
    Select Case CurrentProject.ProjectType
'===== ADP のみのオブジェクト =====
    Case acADP
        Select Case argObjType
        Case acDiagram
            Set cobj = CurrentData.AllDatabaseDiagrams
        Case acStoredProcedure
            Set cobj = CurrentData.AllStoredProcedures
        Case acServerView
            Set cobj = CurrentData.AllViews
        Case acFunction
            If CCur(SysCmd(acSysCmdAccessVer)) >= 10@ Then
                Set cobj = CurrentData.AllFunctions
            Else
                Exit Function
            End If
        Case Else
            Exit Function
        End Select
'===== MDB・ACCDB のみのオブジェクト =====
    Case acMDB
        Select Case argObjType
        Case acQuery
            Set cobj = CurrentData.AllQueries
        Case Else
            Exit Function
        End Select
    Case Else
        Exit Function
    End Select
End Select

For Each aobj In cobj
    If CVar(aobj.Name) = argObjName Then
        IsObjExist = True
        Exit For
    End If
Next
Set aobj = Nothing
Set cobj = Nothing
End Function

 

補 足

Access 2002 から ADP に SQL Server に登録可能な「関数」が追加されました。
これに伴い、データベースビューでのオブジェクトの分類が変更されました。
2000 では「ビュー」、「ストアドプロシージャ」 はそれぞれ別のオブジェクトとなっていましたが、2002 からは「関数」と共に「クエリ」へ統合されました。

 

改訂履歴


目次へ戻る