ms access sql - vba code - insert into ... order by - funktioniert nicht

Zornbringer

Captain
Registriert
Mai 2011
Beiträge
3.882
ich habe hier ein kleines problem mit einer datenbank. und zwar führe ich eine sql anweisung per vba script aus. sieht so aus:

Code:
str_sql = "SELECT * into tabelle_autor FROM Literatur_Tabelle WHERE Autor like '*' + Forms![Suchformular]![autor_text] + '*' ORDER BY Autor, Jahr;"
DoCmd.RunSQL str_sql
DoCmd.OpenReport "bericht_autor", acViewReport

ich wähle also daten aus einer anderen tabelle, lade sie in eine neue, die dann grundlage für den report ist. nur funktioniert die sortierung nicht. wie kann ich das möglichst einfach umbauen, dass die sortierung funktioniert?
 
SQL:
INSERT INTO tabelle_autor 
SELECT * FROM Literatur_Tabelle
WHERE Autor like '*' + Forms![Suchformular]![autor_text] + '*'
ORDER BY Autor, Jahr;

Ich glaube bei MSSQL ACCESS-SQL müsste das eher in diese Richtung aussehen.
Siehe auch:
https://docs.microsoft.com/de-de/of...ce/insert-into-statement-microsoft-access-sql
Kann aber sein, dass es mit * nicht geht und stattdessen explizit die Spaltennamen angeben muss.
 
Zuletzt bearbeitet:
danke, werd's mal so testen.
 
Ich rate übrigens dringend davon ab, den SQL-String direkt aus den Inhalten von Zellen zusammenzubauen. Je nachdem wer am Ende die Tabelle nutzen wird, kann das zu großen Problemen führen. Das Stichwort heißt: SQL-Injection

Wenn man nämlich in die Zelle wo der Autor erwartet wird, ein "DROP ALL TABLES" einschmuggelt (mit ein bischen davor/danach, um die SQL-Teile vor bzw. nach dem String aus der Zelle zu vervollständigen), ist deine Datenbank weg.

Aus diesem Grund hat es sich bewährt, parametrisierte Queries einzusetzen, zB so: Klick!
 
  • Gefällt mir
Reaktionen: Hayda Ministral und mental.dIseASe
ich habe den code jetzt ausprobiert. aber das problem ist, dass mit jeder suche, die suchergebnisse zu der tabelle hinzugefügt werden. damit bläht sich die tabelle natürlich auf, was nicht sein soll.

meine ursprüngliche abfrage hat so funktioniert, wie sie sollte. ich habe jetzt aber das tatsächliche problem identifiziert. die abfrage sortiert in der tabelle so wie sie soll. aber der bericht sortiert dann ganz anders. im bericht-entwurf habe ich die option "beim start sortieren" bereits deaktiviert. aber das hat nichts verändert.

jemand eine ahnung, wie ich das fixen kann?
 
Zerlegen wir doch mal das Problem.
Wieso das Into? Muss es jedes mal eine frische Tabelle für ein Select sein? Generell werden Ergebnisse erst bei der Abfrage sortiert, nicht beim einfügen. Mittlerweile sollte es sogar eine Fehlermeldung geben bei einem aktuellen MSSQL-Server.

Nutzt eine Access MDB oder was genau? Hast du vielleicht mal Screeshots deiner Accessmaske?
 
ich habe jetzt den bericht noch mal 1:1 dupliziert und nun funktioniert es komischerweise. buchstäblich die identischen einstellungen, aber nur einer der berichte sortiert so, wie er sollte.
 
Zurück
Oben