Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Fehler bei Tabelle löschen





Frage

Hallo! Habe da ein Problem! 'Verweis auf Tabelle "Dat_Ausschuss Set Rec = db.OpenRecordset("Select ID, Dateiname, Tabname, GJ FROM [Dat_KST5]") Do While Rec.EOF = False 'für alle Datensätze bis Ende Tabelle Dateiname = Rec!Dateiname 'Wertzuweisung aus Tabelle zu Variable Tablename = Rec!tabname 'bestehende Tabelle vorher löschen DoCmd.DeleteObject acTable, Tablename 'Erzeugen der Tabellenverknüpfung DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, Tablename, _ Dateiname, True 'gehe zum nächsten Datensatz Rec.MoveNext Loop Die Zeile DoCmd.DeleteObject acTable, Tablename bringt einen Fehler hervor, wenn die zu löschende Tabelle nicht existiert. Was muss ich hinzufügen, damit in diesem Fall nicht gelöscht wird sondern nur eine Tabelle erzeugt wird? Für Tipps wäre ich dankbar! Dicker

Antwort 1 von dicker

ich bins nochmal.

gibt es vielleicht einen Befehl, mit dem man gucken kann ob eine Tabelle existiert in der Datenbank (wenn der Tabellenname bekannt ist)????

Antwort 2 von reto

Frage die Anzahl Datensätze ab(RecordCount > 0) wenn > 0 lösche sie.

Antwort 3 von Frank1

ich glaube (allerdings nicht ausprobiert), dass es mit dem Abfragen der Datensätze eher schief geht - die Tabelle ist ja nicht da und dann sollt e es auch zu einem Fehler kommen. Deshalb mal (als Krücke) mit dem errorhandler - das klappt aber auf jeden Fall - nur muß man bei anderen Fehlern auch aufpassen:


On Error GoTo Fehler
    DoCmd.DeleteObject acTable, "Tabelle1"

Fehler:
If Err.Number = 7874 Then
    MsgBox "bingo"
Else
    MsgBox (Error)
End If



Wobei bingo für das Nichtvorhandensein von Tabelle1 steht - dort also weitermachen und das Else-Teil andere Fehler und das Vorhandensein von Tabelle1 einschließt, man kann also mit resume next weitermachen und dann den Rest der Fehler behandeln - war jetzt relativ versionsneutral...

mfg frank

Antwort 4 von reto

Habs raus so funktionierts habe es getestet

Dim tb As TableDef, vorhanden As Boolean
Dim gesuchterName
gesuchterName = "Beispiel"
vorhanden = False
For Each tb In CurrentDb.TableDefs
If tb.Name = gesuchterName Then vorhanden = True
Next

If vorhanden = True Then
'Löschen
msgbox "Vorhanden"
End If


Antwort 5 von dicker

Danke euch! Habs gestern auch rausgeknobelt.
Habe es dann so gelöst:

Dateiname = Rec!Dateiname
'Wertzuweisung aus Tabelle zu Variable
Tablename = Rec!tabname

'Fehlerbehandlung
On Error Resume Next

Set T = db.TableDefs(Tablename)

'bestehende Tabelle vorher löschen
db.TableDefs.Delete T.Name

'Erzeugen der Tabellenverknüpfung
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, Tablename, Dateiname, _ True

'gehe zum nächsten Datensatz
Rec.MoveNext

und das ganze in einer while-schleife

danke für eure Hilfe

dicker