Tipp 1.16 - Ist Systemobjekt

Wie kann ich ermitteln, ob das angegebene Datenbankobjekt ein Systemobjekt ist?

Mit dieser Funktion können Sie ermitteln, ob das angegebene Datenbankobjekt ein Systemobjekt ist. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

ab Access 2000Hinweis: Durch spezielle Anweisungen können Sie diese Funktion erst ab Access 2000 einsetzen.

Beispiel:

Public Function A2XIsSysObject(paob As AccessObject) _
       As Boolean
 
  '// =====================================================
  '// Methode   | Überprüft, ob das angegebene Objekt ein
  '               Systemobjekt ist
  '// -----------------------------------------------------
  '// Parameter | paob      - Angegebenes Accessobjekt
  '// -----------------------------------------------------
  '// Rückgabe  | Boolean - True/Systemobjekt False/keins
  '// -----------------------------------------------------
  '// Erstellt  | Manuela Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf:
  '   Debug.Print A2XIsSysObject(CurrentData.AllTables( _
  '                              "MSysAccessObjects"))
  '   Tabellen:  CurrentData.AllTables("Name")
  '   Abfragen:  CurrentData.AllQueries("Name")
  '   Formulare: CurrentProject.AllForms("Name")
  '   Berichte:  CurrentProject.AllReports("Name")
  '   DP:        CurrentProject.AllDataAccessPages("Name")
  '   Makros:    CurrentProject.AllMacros("Name")
  '   Module:    CurrentProject.AllModules("Name")
  '// =====================================================
 
  On Error GoTo A2XIsSysObject_Error
 
  Const clSYSTEMOBJECT1 As Long = &H80000000
  Const clSYSTEMOBJECT2 As Long = &H2
  Const csUSYS As String = "USys"
  Const csSYSSQL As String = "~sq_"
 
  Dim sShortName As String
 
  sShortName = Left$(paob.Name, 4)
 
  ' Standardüberprüfung auf eigene Systemobjekte bzw.
  ' interne Accessabfragen
  If sShortName = csUSYS Or sShortName = csSYSSQL Then
    A2XIsSysObject = True
  Else
    ' Überprüfung auf besondere Bits und entsprechend
    ' gesetzten Attributen
    If (paob.Attributes And clSYSTEMOBJECT1) = _
       clSYSTEMOBJECT1 Then
      A2XIsSysObject = True
    Else
      If (paob.Attributes And clSYSTEMOBJECT2) = _
         clSYSTEMOBJECT2 Then
        A2XIsSysObject = True
      End If
    End If
  End If
 
A2XIsSysObject_Exit:
  On Error GoTo 0
  Exit Function
 
A2XIsSysObject_Error:
  Select Case Err.Number
  Case Else
    MsgBox "Fehler " & Err.Number & ": " & _
           Err.Description, vbCritical, _
           "modInfo.A2XIsSysObject"
  End Select
  Resume A2XIsSysObject_Exit
 
End Function