Hallo Thomas
endlich mal ne brauchbare Antwort, das man hier immer Antworten auf nicht gestellte Fragen bekommt ist immer wieder verwunderlich. Vor allen Dingen bekommt man immer wieder Antworten von Leuten die von der Thematik keine Ahnung haben.
Na, ganz schoen heftig, oder? Leider wird Dir der TransactSQL-Dialekt bei MS Access auch nichts nuetzen. Zwar stammt beides aus dem Hause M$, aber Access-SQL und Transact sind so unterschiedlich wie Tag und Nacht.
In Access gibt es meines Wissens keinen SQL-Befehl, der soetwas testet. Ich erledige sowas daher gewoehnlich in Access-Basic:
Public Function DoesTableExist(tblname As String) As Boolean
Dim dbs as Database
Dim t As TableDef
Set dbs = CurrentDb
DoesTableExist = False
For Each t In dbs.TableDefs
If (t.name = tblname) Then DoesTableExist = True: Exit For
Next
Set dbs = Nothing
End Function
If DoesTableExist("tablename") Then DoCmd.RunSQL "DROP TABLE tablename;"
Mag sein, dass Du das nicht direkt gefragt hast, aber immerhin koennte es Dein Problem loesen. Alternativ kannst Du auch die Variante von Jens benutzen, also
On Error Resume Next
DoCmd.RunSQL "DROP TABLE tablename;"
On Error Goto 0 ' oder auf die vorherige Marke setzen
Die zweite Variante ist allerdings nicht ganz so sauber. Es kann durchaus vorkommen, dass die Tabelle sehr wohl existiert, jedoch nicht geloescht werden kann, weil sie gerade benutzt wird.
An Dominik: Weisst Du zufaellig, wie ich in TransactSQL eine Spalte einer Tabelle loeschen kann? In Access-SQL (und bei Oracle glaube ich auch) geht das mit
ALTER TABLE tablename DROP COLUMN columnname;
An Jens: Um alle Zeilen einer Tabelle zu loeschen, braucht man wirklich keine Schleife. Das geht auch mit
DELETE FROM tablename;
Ritsch ratsch sicnd alle Datensaetze weg.
Calocybe