PDA

Vollständige Version anzeigen : Gibt es eine Tabelle XYZ?


fly_singapore
20.04.2011, 09:42
Hallo Allerseits,

hier habe ich wahrscheinlich eine triviale Frage:
Ich möchte eine Abrage in VBA starten, die da lautet:

IF tabellexyz existiert THEN

.......

END IF

bisher habe ich nichts braucbbaren finden können ...

Hat einer eine Idee??

Peter

Arne Dieckmann
20.04.2011, 09:47
DBWiki weiß Rat: VBA Tipp: Feststellen, ob Tabelle existiert (http://dbwiki.net/wiki/VBA_Tipp:_Feststellen,_ob_Tabelle_existiert).

FW
20.04.2011, 09:54
... oder vielleicht ganz einfach:Public Function TableExists(ByVal strTabName) As Boolean
On Error Resume Next
DCount "*", strTabName
TableExists = (Err.Number = 0)
End Function...

fly_singapore
20.04.2011, 09:54
Vielen Dank für den Tip !!!


Gruss Peter
Schöne Östern

Arne Dieckmann
20.04.2011, 10:00
@FW: ich erinnere mich. Wir sollten Josefs Hinweis bzgl. "Schönheitsfehler": Acc2007 - msgbox wenn tabelle vorhanden beachten - eine Korrektur gibt's im selben Thread.

Das Ganze sollte man mal im DBWiki unterbringen (ich schreib's mal auf meine ToDo-List, wenn sich niemand anderes findet ...).

FW
20.04.2011, 10:03
... was dann mit einem abschließenden Err.Clear erledigt sein sollte?Public Function TableExists(ByVal strTabName) As Boolean
On Error Resume Next
DCount "*", strTabName
TableExists = (Err.Number = 0)
Err.Clear
End Function...

achtelpetit
20.04.2011, 10:05
Du kannst einfach in der Systemtabelle nachschauen (standardmäßig ist die unsichtbar, kann aber sichtbar gemacht werden über "Optionen - Ansicht")


Sub TabelleExistiert()
If Not IsNull(DCount("*", "NameDerTabelle")) Then
MsgBox "NameDerTabelle existiert"
End If
End Sub


Eine andere Möglichkeit besteht in einem Durchlauf durch alle Tabellen per Schleife. Du übergibst der folgenden Funktion einfach den Tabellennamen.

Function TabExist(strtblname As String) As Boolean
Dim dbs As Object
Dim tbl As AccessObject

Set dbs = Application.CurrentData
TabExist = False

For Each tbl In dbs.AllTables
If tbl.Name = strtblname Then
TabExist = True
End If
Next tbl

End Function

FW
20.04.2011, 11:18
@Thomas: Wenn es die Tabelle tab nicht gibt, führt DCOUNT "*", tab zu einem Laufzeitfehler!

Arne Dieckmann
20.04.2011, 11:47
@FW: deine Lösung ist nun auch im DBWiki zu finden. Err.Clear wurde wie von dir vorgeschlagen bei deiner und Lösung #2 hinzugefügt.