PDA

Vollständige Version anzeigen : Alle Tabellen per VBA löschen => Fehler "tbl ist Teil von Beziehung"


hartgen
26.09.2003, 09:46
Hallo Zusammen,

mit folgendem Code möchte ich alle Tabellen in der aktuellen DB löschen:

Dim db As DAO.Database
Dim tdf As DAO.TableDef

Set db = CurrentDb

For Each tdf In db.TableDefs

If InStr(tdf.name, "tbl") > 0 Then DoCmd.DeleteObject acTable, tdf.name
Next tdf
db.Close


Funktioniert soweit auch ganz gut, nur dass ein Fehler auftritt wenn die zu löschende Tabelle Teil einer Beziehung ist: "Sie können die Tabelle tblBeispiel nicht löschen. Sie ist Teil einer odermehrerer Beziehungen."

Wie kann ich die Tabelle trotzdem programmatisch löschen?

Grüße,
Jörg

Rainer Simon
26.09.2003, 10:02
Hallo Jörg,

zu diesem Thema gab es schon mal einen Thread:
Klick mal hier (http://www.ms-office-forum.net/forum/showthread.php?threadid=91454)
Gruß Rainer

Aquarii
26.09.2003, 11:25
Hallo Jörg,

zuvor solltest Du erst die Beziehungen löschen, z.B. so:

Sub Test()
Dim db As Database
Dim rel As Relation
Dim tdf As TableDef

Set db = CurrentDb

'erst Beziehungen löschen
Do Until db.Relations.Count = 0
For Each rel In db.Relations
db.Relations.Delete rel.Name
db.Relations.Refresh
Next
Loop

'dann erst die Tabellen
Do Until db.TableDefs.Count = 6
For Each tdf In db.TableDefs
If Not Left(tdf.Name, 4) = "MSys" Then
db.TableDefs.Delete tdf.Name
db.TableDefs.Refresh
End If
Next
Loop
db.TableDefs.Refresh

db.Close
Set db = Nothing

End Sub

Nouba
26.09.2003, 11:33
wer sowas macht oder machen muß, sollte besser auf eine temporäre Datenbank mit temporären Tabellen zurückgreifen, damit sich die eigentliche DB nicht unnötig aufbläht. Was ist der Grund Deines Vorhaben und wie geht es weiter, wenn die Tabellen weg sind?

hartgen
26.09.2003, 12:14
Danke, das wars.


Kleiner Hinweis:

Statt "For Each rel In dbS.Relations"

korrekt "For Each rel In db.Relations"

Aquarii
26.09.2003, 12:47
Hallo hartgen,

korrekt "For Each rel In db.Relations"

Danke für den Hinweis,

habe es in obigem Code geändert.