Als Entwickler stehen Sie immer wieder vor der Aufgabe, Objekte in externen Datenbanken löschen zu müssen. Für Objekte wie Tabellen oder Abfragen, deren Definition direkt als Auflistung des Database-Objektes vorhanden ist, können Sie dazu die folgende Routine einsetzen:
Sub DelTable(strDB As String, strTable as String)
Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).
OpenDatabase(strDB)
db.TableDefs.Delete strTable
db.Close
Set db = Nothing
End Sub
Die Prozedur erwartet als ersten Parameter „strDB“ Laufwerk, Pfad und Dateiname der Datenbank, in der eine Tabelle gelöscht werden soll. Der zweite Parameter „strTable“ definiert die zu löschende Tabelle. Über die Methode „Delete“ der Auflistung „TableDefs“ wird dann die gewünschte Tabelle in der angegebenen Datenbank gelöscht. Ein Aufruf kann beispielsweise wie folgt aussehen:
DelTable, „Z:\Test\ Nordwind.mdb“, „Personal/Alt“
Mit dieser Zeile wird beispielsweise die Tabelle „Personal/Alt“ in der Datenbank „Z:\Test\Nordwind.mdb“ gelöscht. Eine Routine zum Löschen von Abfragen in externen Datenbanken ist nahezu identisch aufgebaut:
Sub DelQuery(strDB As String, strQuery as String)
Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).OpenDatabase(strDB)
db.QueryDefs.Delete strQuery
db.Close
Set db = Nothing
End Sub
Als zweiten Parameter geben Sie hier den Namen der zu löschenden Abfrage an, die dann über die Methode „Delete“ der Auflistung „QueryDefs“ gelöscht wird.
Für Formulare, Berichte, Makros oder Module verwenden Sie die folgende Routine:
Sub DelObject(strDB As String, strObjectName As String, intObjectType As Integer)
Dim objAcc As
Access.Application
Set objAcc = New
Access.Application
objAcc.OpenCurrentDatabase strDB
objAcc.DoCmd.DeleteObject
intObjectType, strObjectName
objAcc.Quit
Set objAcc = Nothing
End Sub
Erster und zweiter Parameter, „strDB“ und „strObjectName“, legen Laufwerk, Pfad und Dateiname sowie den Namen des zu löschenden Objektes fest. Mit dem dritten Parameter geben Sie den Objekttyp über die Konstanten „acTable“, „acQuery“, „acForm“, „acReport“, „acMacro“ oder „acModule“ an. Diese Zusatzangabe ist notwendig, da zum Beispiel Berichte, Formulare und andere Objekte durchaus unter dem gleichen Namen in der Datenbank gespeichert sein können. Zum Löschen verwenden wir mit „DoCmd.DeleteObject“ eine Methode, die das Löschen beliebiger Objekte erlaubt. Sie können diese Routine also alternativ auch zum Löschen von Tabellen und Abfragen einsetzen. Ein Aufruf könnte z.B. so aussehen:
DelObject „Z:\Test\Nordwind.mdb“,“Umsatz“, acReport
Diese Anweisung löscht den Bericht „Umsatz“ in der Datenbank „Z:\Test\ Nordwind.mdb“.