DoCmd.RunSQL: 'SELECT'-Abfrage nicht möglich?

Hi!
Ich hab folgendes VB-Problem bei Access 2000:
Ich möchte per DoCmd.RunSQL ein
INSERT INTO SELECT * FROM
ausführen lassen.

Das klappt leider nicht; wie ich mittlerweile herausgefunden habe, liegt der Fehler bei der SELECT-Anweisung. Wenn ich nur die SELECT-Anweisung (also ohne INSERT INTO…) im DoCmd.RunSQL laufen lasse, kommt die Meldung „RunSQL erfordert ein Argument, das aus einer SQL-Anweisung besteht“.

Kann man also SELECT gar nicht verwenden? Was kann ich da sonst machen?

Grüße,
Moe

Hi, Moe!

Versuch mal

Function j()
DoCmd.RunSQL („INSERT INTO t2 SELECT * FROM t1“)
End Function

Grüße, Volker

Hi Volker!

Ich hab noch ein wenig rumgedoktort und irgendwie klappt’s nun:
DoCmd.RunSQL „INSERT INTO tab1 (sp1, sp2) SELECT sp1, sp2 FROM tab2 WHERE …;“

Woran es genau gelegen hat, weiß ich nicht; vielleicht darf man bei INSERT INTO nicht die Spaltennamen weglassen (auch wenn man alle beschreibt), oder SELECT nimmt kein *, oder beides ?!?

Egal, Hauptsache, es klappt.
Trotzdem vielen Dank für die schnelle Hilfe!

Viele Grüße,
Moe

hi!

Ich hab noch ein wenig rumgedoktort und irgendwie klappt’s
nun:
DoCmd.RunSQL „INSERT INTO tab1 (sp1, sp2) SELECT sp1, sp2
FROM tab2 WHERE …;“

Woran es genau gelegen hat, weiß ich nicht; vielleicht darf
man bei INSERT INTO nicht die Spaltennamen weglassen (auch
wenn man alle beschreibt), oder SELECT nimmt kein *, oder
beides ?!?

anderer ansatz: das select liefert genau die spalten (auch in der richtigen reihenfolge!!!) zurück?

bps.:
tab1: nr, text, datum
tab2: text, datum, nr

insert into tab1 select * from tab2 -> fehler
insert into tab1(text,datum,nr) select * from tab2 -> müßte funktionieren
insert into tab1 select nr,text,datum from tab2 -> detto

grüße,
tomh