Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Löschen von Tabellen mit DAO
zurück: Access VBA: Prüfen der Datei-Verfügbarkeit weiter: run time 3061 too few parameters excepted 1 Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
novakhans
Gast


Verfasst am:
10. Okt 2005, 10:53
Rufname:

Löschen von Tabellen mit DAO - Löschen von Tabellen mit DAO

Nach oben
       

Hallo,

ich möchte alle verknüpften Tabellen in meiner Db mit DAO löschen. Die Systemtabellen bleiben natürlich unangetastet. Wenn ich die Prozedur einmal ausführe, werden aber nicht alle Tabellen gelöscht. Immer wieder bleiben Tabellen aus mir unbekannten Gründen vorhanden. Ich muß die Prozedur daher mehrmals starten. Dies ist natürlich keine Lösung. Kann mir jemand weiterhelfen?

Nachfolgender Code gelangt zur Anwendung:
Code:
Sub Alle_Tabellen_löschen()
On Error GoTo Fehler
    Dim Tabellenname As String
    Dim Tabellenliste As String
    Dim db As DAO.Database
    Dim tdef As DAO.TableDef

    Set db = CurrentDb
    For Each tdef In db.TableDefs
        If Mid(tdef.Name, 1, 4) <> "MSys" And _
           Mid(tdef.Name, 1, 4) <> "T099" Then
            Tabellenname = tdef.Name
            db.TableDefs.Delete tdef.Name
            Tabellenliste = Tabellenliste & Tabellenname & Chr(13)
        End If
    Next tdef
    If Tabellenliste = "" Then
        MsgBox "Keine Tabellen vorhanden!", , "Alle Tabellen löschen"
      ElseIf IsNull(Tabellenliste) = True Then
        MsgBox "Keine Tabellen vorhanden!", , "Alle Tabellen löschen"
      Else
        MsgBox "Folgende Tabellen wurden gelöscht: " _
               & Chr(13) & Tabellenliste, , "Alle Tabellen löschen"
    End If
    Exit Sub
Fehler:
    MsgBox "Fehler Nummer " & Err.number & " aufgetreten!" & Chr(13) & _
           Err.Description, vbInformation, "Alle Tabellen löschen"
End Sub
Moderatorenanmerkung: Codetags gesetzt/ stpimi, 10.10.2005
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Okt 2005, 12:28
Rufname:
Wohnort: Sachsen


AW: Löschen von Tabellen mit DAO - AW: Löschen von Tabellen mit DAO

Nach oben
       

Hallo,

die Objektauflistungen enthalten beim durchlaufen zum Löschen einen Bug.
Diese Lösung sollte aber klappen:
Code:
Sub Alle_Tabellen_löschen()
On Error GoTo Fehler
    Dim Tabellenname As String
    Dim Tabellenliste As String
    Dim db As DAO.Database
    Dim tdef As DAO.TableDefs
    Dim I As Integer

    Set db = CurrentDb
    Set tdef = db.TableDefs
    For I = tdef.Count - 1 To 0 Step -1
        If Left((tdef(I).Name), 4) <> "MSys" And _
           Left((tdef(I).Name), 4) <> "T099" Then
            Tabellenname = tdef(I).Name
            tdef.Delete tdef(I).Name
            Tabellenliste = Tabellenliste & Tabellenname & Chr(13)
        End If
    Next I
    Set db = Nothing
    If Tabellenliste = "" Then
        MsgBox "Keine Tabellen vorhanden!", , "Alle Tabellen löschen"
      ElseIf IsNull(Tabellenliste) = True Then
        MsgBox "Keine Tabellen vorhanden!", , "Alle Tabellen löschen"
      Else
        MsgBox "Folgende Tabellen wurden gelöscht: " & _
               Chr(13) & Tabellenliste, , "Alle Tabellen löschen"
    End If
    Exit Sub
Fehler:
    MsgBox "Fehler Nummer " & Err.number & " aufgetreten!" & Chr(13) & _
           Err.Description, vbInformation, "Alle Tabellen löschen"
End Sub

_________________
Gruß Tommy
Willi Wipp
Moderator


Verfasst am:
10. Okt 2005, 13:31
Rufname:
Wohnort: Raum Wiesbaden

Re: Löschen von Tabellen mit DAO - Re: Löschen von Tabellen mit DAO

Nach oben
       

Hi TommyK,

definier bitte Bug Wink
Die Objektauflistung beinhaltet immer nur die tatsaechlich vorhandenen Tabellen.
Der Positionszeiger (auch bei Each wird so etwas intern erstellt) zeigt auf eine bestimmte Tabelle.
Wird diese geloescht, ruecken die Anderen auf.
=> eine andere Tabelle rueckt an die Stelle der geloeschten ...
Sowas sollte man eigentlich abfangen koennen mit
Code:
            Do Until Mid(tdef.Name, 1, 4) = "MSys" Or _
                     Mid(tdef.Name, 1, 4) = "T099"
                Tabellenname = tdef.Name
                db.TableDefs.Delete tdef.Name
                Tabellenliste = Tabellenliste & Tabellenname & Chr(13)
            Loop
{getestet: funktioniert nicht!}
Deine Loesung funktioniert natuerlich auch!

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 10. Okt 2005, 14:07, insgesamt einmal bearbeitet
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Okt 2005, 14:00
Rufname:
Wohnort: Sachsen

AW: Löschen von Tabellen mit DAO - AW: Löschen von Tabellen mit DAO

Nach oben
       

@willy

es geht um das Durchlaufen von For Each-Anweisungen beim Löschen von Objekten.
Mir ist das das schon mehrfach aufgefallen, egal ob es sich um Tabellen, Relationen usw. handelt.
Dort wird dann nur jedes 2. Objekt gelöscht. Führt man den Code dann ein zweites Mal aus, werden auch die restliche Objekte gelöscht.
Aber wie gesagt, ist es mir nur bei Delete-Anweisung aufgefallen, bzw. nicht nur mir sondern auch Anderen Usern.
Wir hatte da schon öfters Threads zu diesem Thema im MOF.

Deshalb sollte man, beim Löschen von Objekten, auf For Next- oder Do Until Schleifen ausweichen und nicht For Each verwenden.
Leider ist das in der OH nicht dokumentiert.

_________________
Gruß Tommy
Willi Wipp
Moderator


Verfasst am:
10. Okt 2005, 14:14
Rufname:
Wohnort: Raum Wiesbaden

Re: Löschen von Tabellen mit DAO (II) - Re: Löschen von Tabellen mit DAO (II)

Nach oben
       

@ TommyK,

das es sich um das Loeschen handelt, war mir schon klar Wink
Ich habe jetzt mal meinen obigen Code versucht und gesehen, das meine Annahme falsch war!
Problem: nach dem Loeschen ist die Variable tdef nicht mehr zugewiesen. => Fehlermeldung!
Hier wuerde ich dann auch den Bug sehen.
Allerdings ist es nicht korrekt, das beim zweiten Durchlauf alle anderen Tabellen geloescht werden!
Es wuerde wieder nur jede zweite Tabelle geloescht ... (Erklaerung: s.o.)

=> Dein Ansatz scheint der einzige funktionierende zu sein, da hierbei die Auflistung von hinten durchlaufen wird.
=> Das Aufruecken hat keine Auswirkung mehr Exclamation

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Okt 2005, 14:16
Rufname:
Wohnort: Sachsen

AW: Löschen von Tabellen mit DAO - AW: Löschen von Tabellen mit DAO

Nach oben
       

@Willi

ja, stimmt. Ich hatte es damals nur mit Relationen getestet und das waren nur 3.
Mein Denkfehler. Wink

_________________
Gruß Tommy
HoppelButz
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Sep 2006, 22:57
Rufname:

AW: Löschen von Tabellen mit DAO - AW: Löschen von Tabellen mit DAO

Nach oben
       

Hallo mal eine Frage kann man auch eine Bestimmt Tabelle nur Loeschen
geht das auch ??
Question
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Sep 2006, 04:01
Rufname:
Wohnort: Sachsen


AW: Löschen von Tabellen mit DAO - AW: Löschen von Tabellen mit DAO

Nach oben
       

Hallo,

Lösung s. hier: Tabelle-Löschen (DAO)

_________________
Gruß Tommy
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Doppelte Datensätze suchen und löschen. 4 Psus82 6651 24. Jun 2004, 16:57
Psus82 Doppelte Datensätze suchen und löschen.
Keine neuen Beiträge Access Tabellen & Abfragen: 2 tabellen vergleichen 4 Lordoo88 1555 03. Jun 2004, 16:43
Lordoo88 2 tabellen vergleichen
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate einer Tabelle löschen?! 3 Esel 2108 28. Mai 2004, 08:53
lothi Duplikate einer Tabelle löschen?!
Keine neuen Beiträge Access Tabellen & Abfragen: Frontend und Backend: kann nicht auf die Tabellen zugreifen 1 mhw 803 25. Mai 2004, 12:25
Robsl Frontend und Backend: kann nicht auf die Tabellen zugreifen
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Tabellen zusammenfügen und Nullwerte überschreiben 1 m.hataj 1304 13. Mai 2004, 18:10
faßnacht(IT); Zwei Tabellen zusammenfügen und Nullwerte überschreiben
Keine neuen Beiträge Access Tabellen & Abfragen: kriterium - datensatz nur in einer von zwei tabellen 3 budking82 1000 11. Mai 2004, 12:59
budking82 kriterium - datensatz nur in einer von zwei tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen verknüpfen ( Excel & Access ) 1 Isa 1380 29. Apr 2004, 17:45
BufferOverflow2 Tabellen verknüpfen ( Excel & Access )
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage erstelen, die zwei tabellen vergleicht 2 pucky 802 27. Apr 2004, 10:53
ProLogistik Abfrage erstelen, die zwei tabellen vergleicht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage über mehrere Tabellen 6 Martin1977 976 02. Apr 2004, 15:43
Martin1977 Abfrage über mehrere Tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: neue Tabellen erstellen aus vorhandener Tabelle 6 moni 2010 29. März 2004, 15:39
moni neue Tabellen erstellen aus vorhandener Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: datensatz aus mehreren Tabellen im formular anzeigen 1 SixPack 1197 29. März 2004, 10:53
Willi Wipp datensatz aus mehreren Tabellen im formular anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Tabellen zusammenführen, bzw. abgleichen 1 daha 1183 16. März 2004, 11:45
lothi Zwei Tabellen zusammenführen, bzw. abgleichen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA