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?
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!
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