Samples of VBA code I'm using in my daily tasks.

Friday, March 12, 2010

Does Access Object Exists

To avoid errors you should always check before accessing an object if it exists.
Sample call: MyTest = ObjectExists("Table", "MyTableName")
or         : If Not ObjectExists("Table", "MyTableName") Then ...

'---------------------------------------------------------------------
' ObjectExists:  Find if the object exists in DB
'---------------------------------------------------------------------
' Pass the Object type: Table, Query, Form, Report, Macro, or Module
' Pass the Object Name
' Function returns boolean "Yes/NO"
Function ObjectExists(strObjectType As String, strObjectName As String) As Boolean
     Dim db As Database
     Dim tbl As TableDef
     Dim qry As QueryDef
     Dim i As Integer
     
     Set db = CurrentDb()
     ObjectExists = False
     
     If strObjectType = "Table" Then
          For Each tbl In db.TableDefs
               If tbl.Name = strObjectName Then
                    ObjectExists = True
                    Exit Function
               End If
          Next tbl
     ElseIf strObjectType = "Query" Then
          For Each qry In db.QueryDefs
               If qry.Name = strObjectName Then
                    ObjectExists = True
                    Exit Function
               End If
          Next qry
     ElseIf strObjectType = "Form" Or strObjectType = "Report" Or strObjectType = "Module" Then
          For i = 0 To db.Containers(strObjectType & "s").Documents.Count - 1
               If db.Containers(strObjectType & "s").Documents(i).Name = strObjectName Then
                    ObjectExists = True
                    Exit Function
               End If
          Next i
     ElseIf strObjectType = "Macro" Then
          For i = 0 To db.Containers("Scripts").Documents.Count - 1
               If db.Containers("Scripts").Documents(i).Name = strObjectName Then
                    ObjectExists = True
                    Exit Function
               End If
          Next i
     Else
          MsgBox "Invalid Object Type, must be Table, Query, Form, Report, Macro, or Module"
     End If  
End Function
'-------------- END ObjectExists ----------------------

No comments:

Post a Comment