Thomas Mell: Überprüfen ob Tabelle vorhanden ist

Hallo,
gibt es einen SQL-Befehl mit dem man das Vorhandensein einer Tabelle innerhalb einer Access-Datenbank überprüfen kann? Diese soll, wenn sie vorhanden ist, gelöscht werden.
cucu
Thomas

  1. Hallo,
    gibt es einen SQL-Befehl mit dem man das Vorhandensein einer Tabelle innerhalb einer Access-Datenbank überprüfen kann? Diese soll, wenn sie vorhanden ist, gelöscht werden.
    cucu
    Thomas

    mach doch einfach

    on error resume next

    und lösch die Tabelle , wenn sie nicht da ist kann sie
    halt nicht gelöscht werden.. aber es tritt auch keine
    nervige Fehlermeldung auf.

    gruss
    Jens

    1. und lösch die Tabelle , wenn sie nicht da ist kann sie
      halt nicht gelöscht werden.. aber es tritt auch keine
      nervige Fehlermeldung auf.

      Ich wuerd am besten gleich die ganze Datenbank loeschen, dann hat man ueberhaupt keine Probleme mehr <g>

      Also wenn die Tabelle da ist und ich loesche sie, dann sind ploetzlich alle Daten weg? Sehr geschickte Loesung :-)

      1. Ich wuerd am besten gleich die ganze Datenbank loeschen, dann hat man ueberhaupt keine Probleme mehr <g>

        Also wenn die Tabelle da ist und ich loesche sie, dann sind ploetzlich alle Daten weg? Sehr geschickte Loesung :-)

        Naja.. gibt schon mal Sachen wo es sinvoll sein kann ne
        Tabelle zu löschen.. aber normalerweise nur um sie dann
        gleich leer wieder anzulegen..
        Temporäre Tabellen bei Datenimporten z.B.
        Eine Schleife die alle Datensätzte löscht wäre meiner
        Meinung nach aber Programmtechnisch dann wesentlich  
        einfacher zu erstellen.

  2. Hallo,
    gibt es einen SQL-Befehl mit dem man das Vorhandensein einer Tabelle innerhalb einer Access-Datenbank überprüfen kann? Diese soll, wenn sie vorhanden ist, gelöscht werden.
    cucu
    Thomas

    Hallo,

    Tabelle löschen geht mit "drop table tablename" ...

    mehr Infos zu SQL und weiterführende Links:

    http://www.geocities.com/ResearchTriangle/Node/9672/sqltut.html

    Und hier noch eine interessante Adresse, wenns um (MS)Accesszugriffe mit PERL geht:

    http://www.perl-archiv.de/perl/index.shtml

    Viele Grüße, Rolf

    1. gibt es einen SQL-Befehl mit dem man das Vorhandensein einer Tabelle innerhalb einer Access-Datenbank überprüfen kann?

      kleine RandInfo: in TransactSQL vom SQLServer gibts es EXISTS, da wird in Scripten immer 'IF EXISTS SowiesoTable' abgefragt und der dann gedropt, wenn er mit einem Script neu erzeugt werden soll - Hintergrund ist dafür Fehlermeldungen und Abbruc bei Scripten zu vermeiden, falls zufällig eine Tabelle schon existiert

      grüße domiberger

      1. Hallo,
        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.
        Du bist da wohl ne Ausnahme. Tausend Dank auch.

        cucu
        Thomas

        1. 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