Public Function GetMSysObjectsType(strName As String) As Integer
Dim rst As DAO.Recordset
On Error GoTo GetMSysObjectsTypeErr
GetMSysObjectsType = 0
Set rst = CurrentDb.OpenRecordset("SELECT Type FROM MSysObjects WHERE Name = '" & strName & "'")
If rst.RecordCount > 0 Then
GetMSysObjectsType = rst(0)
rst.Close
End If
GetMSysObjectsTypeExit:
Set rst = Nothing
Exit Function
GetMSysObjectsTypeErr:
GetMSysObjectsType = 0
Resume GetMSysObjectsTypeExit
End Function
Die Function bekommt als Parameter den Namen des zu analysierenden Objektes (hier: einer Tabelle) übergeben.
Rückgabewerte der Function:
0 --> Fehler aufgetreten oder Objekt nicht gefunden
1 --> Objekt ist eine lokale Tabelle
4 oder 6 --> Objekt ist eine externe Tabelle (weitere möglich?)
5 --> Objekt ist eine Abfrage
-32768 --> Objekt ist ein Formular
-32764 --> Objekt ist ein Bericht
-32766 --> Objekt ist ein Makro
-32761 --> Objekt ist ein Modul
Aufruf also etwa so:
MsgBox GetMSysObjectsType("tblDeineTabelle")
Es gibt noch weitere Ausprägungen des Feldes "Type" in der Systemtabelle MSysObjects; ich bin seit längerer Zeit auf der Suche nach einer vollständigen Dokumentation dieser Types, weswegen ich nicht mit letzter Sicherheit sagen kann, ob die Types 4 und 6 die einzigen sind, die externe Tabellen kennzeichnen (in meinen Tests wird das bei eingebundenen Access-Tabellen und bei eingebundenen DB2-Tabellen zurückgegeben). Wenn jemand eine brauchbare Referenz für die MSysObjects zur Hand hätte (respektive einen Link dorthin) wäre ich sehr dankbar! ;o)
Gruß,
Eric
geschrieben von Elvis_The_King , 02.06.2004, 17:34 Uhr , 29 mal gelesen