Tabelle in Datenbank bereits vorhanden

Hallo liebe Accessler,

ich habe eine ziemlich komplexe Accessdatenbank, in der ich zu einem bestimmten Zeitpunkt viele Daten per Programm neu einlese.

Im Zuge dieses Prozesses werden ca. 20 Hilfstabellen per Tabellenerstellungsabfrage (allerdings per VBA) erzeugt, die ich am Schluss mit dem Befehl db.Execute "DROP TABLE xxxxx ; " lösche.

Dumm bloss, wenn ich in der Programmentwicklung einen Fehler habe, dann werden am Schluss die Hilfstabellen natürlich nicht gelöscht und die Tabellenerstellungsabfrage per VBA meckert dann, dass die Tabelle bereits existiert, und das Programm steigt wieder aus. Könnte ich abfangen per Fehlercode (halte ich aber für unsauberen Programmierstil)

Meine Frage: Hat jemand eine Idee (und ich glaube, ich habe das schon mal gesehen) folgenden Befehl auszuführen. Gibt es in der aktuellen Datenbank eine Tabelle mit Namen xxx

Ich brauche nur die Syntax des Befehles, die dann notwendigen Befehle für Wenn Ja und Nein und die entsprechenden Aktionen wie Löschen oder nicht kriege ich selbst hin.

Danke im Voraus

Peter

Hallo Peter,

Ich brauche nur die Syntax des Befehles, die dann notwendigen
Befehle für Wenn Ja und Nein und die entsprechenden Aktionen
wie Löschen oder nicht kriege ich selbst hin.

öffne die Tabelle aus Recordset:

docmd.openrecordset(deine Tabelle)

per Errorhandling dann den Fehler auswerten

Kein Fehler = Tabelle ist noch vorhanden

Grüße aus Essen
Wolfgang

Hallo,

alternativ wäre eine Schleife durch die Auflistung der Tabellen (TableDefs) möglich.

ujk

1 Like

Und genau das ist - hier die Lösung
Danke das war der TIP!

Für diejenigen die es interessiert hier der Code:

Dim db As Database
Dim t As TableDef
’ Verweis auf aktuelle Datenbank holen.
Set db = CurrentDb
’ Alle TableDef-Objekte durchlaufen.
For Each t In db.TableDefs
If t.Name = „TabelleXXX“ Then db.Execute "DROP TABLE TabelleXXX; "
If t.Name = „TabelleYYY“ Then db.Execute "DROP TABLE TabelleYYY; "
’ usw.
Next t
Set db = Nothing

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]