Discussion:
Tabellenstruktur kopieren - alternative Lösung
(zu alt für eine Antwort)
Michel Fouquet
2005-08-31 11:04:25 UTC
Permalink
Hallo allerseits,

auf folgende Frage:

"Ich würde gerne mit VBA von einer Tabelle in der aktuellen DB die
Struktur in eine neue Tabelle übernehmen, weiß aber nicht wie das geht.

Wenn ich im Übersichtsfenster eine Tabelle kopiere und anschließend
einfüge, besteht die Möglichkeit, nur die Struktur der Tabelle zu
nehmen. Geht das mit VBA auch?"

lautet eine gängige Antwort (z.B. von DonKarl):

DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentDb.Name, _
acTable, "DeinTabellenName", "NameFürDieKopie", True

Eine alternative Möglichkeit wäre es, das per SQL-Statement zu
erledigen. Der Trick liegt hierbei in der WHERE-Klausel. Also:

Dim strSQL As String

strSQL = "SELECT * INTO ZielTabelle FROM QuellTabelle WHERE 1 = 2"
CurrentDB.Execute strSQL

(Anmerkungen:
Es gilt alles, was sonst eben auch für Tabellenerstellungsabfragen gilt.
Fehlerbehandlung bei bereits existierender Zieltabelle natürlich nicht
vergessen.
QuellTabelle kann auch eine Abfrage sein.
Die Erstellung in einer externen Datenbank ist per IN-Anweisung
ebenfalls möglich.
Näheres zur SELECT...INTO-Anweisung in der OH.)

mfg,
Michel
Jürgen Volke
2005-08-31 11:26:29 UTC
Permalink
Hallo Michel
Post by Michel Fouquet
"Ich würde gerne mit VBA von einer Tabelle in der aktuellen DB die
Struktur in eine neue Tabelle übernehmen, weiß aber nicht wie das geht.
Wenn ich im Übersichtsfenster eine Tabelle kopiere und anschließend
einfüge, besteht die Möglichkeit, nur die Struktur der Tabelle zu
nehmen. Geht das mit VBA auch?"
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentDb.Name, _
acTable, "DeinTabellenName", "NameFürDieKopie", True
Eine alternative Möglichkeit wäre es, das per SQL-Statement zu
Dim strSQL As String
strSQL = "SELECT * INTO ZielTabelle FROM QuellTabelle WHERE 1 = 2"
CurrentDB.Execute strSQL
Es gilt alles, was sonst eben auch für Tabellenerstellungsabfragen
gilt. Fehlerbehandlung bei bereits existierender Zieltabelle
natürlich nicht vergessen.
QuellTabelle kann auch eine Abfrage sein.
Die Erstellung in einer externen Datenbank ist per IN-Anweisung
ebenfalls möglich.
Näheres zur SELECT...INTO-Anweisung in der OH.)
was wolltest du uns jetzt damit sagen?

die 2. Methode hat den entscheidenden Nachteil, das weder Indices noch
Feld-Properties (NULL-Allow, DefaultValue) übertragen werden.

Gruß Jürgen

Loading...