Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Sortierbefehl angewendet ABER wie gehts zu speichern? (https://www.delphipraxis.net/1468-sql-sortierbefehl-angewendet-aber-wie-gehts-zu-speichern.html)

Rapthor 30. Nov 2002 11:29


SQL Sortierbefehl angewendet ABER wie gehts zu speichern?
 
Hallo!
Ich nutze Delphi 6 und habe auch schon einige Tabellen und Datenbanken erstellt.Nun wende ich innerhalb des Programms den SQL Befehl zum Sortieren dieser Tabelle an. Das funktioniert auch, jedoch WIE kann ich diese neue Sortierung jetzt abspeichern, so dass die xyz.db umgeschrieben wird? Mit dem POST Befehl gehts nicht, weil er mir dann die Fehlermeldung "Not in Edit-Mode" ausgibt.
Sobald ich nämlich die Tabelle wieder bearbeiten will, ist die Sortierung futsch :cry:
Bitte um Hilfe!

MrSpock 30. Nov 2002 12:23

Hallo Rapthor,

mit der SQL Anweisung INSERT werden die Daten in eine (neue) Tabelle gespeichert, z.B:

Code:
INSERT INTO ArtNachPreis (SELECT * FROM Articles ORDER BY Preis)

Rapthor 30. Nov 2002 12:27

Juchu! Ich danke ... gleich mal ausprobieren
 
:bounce1:

Rapthor 30. Nov 2002 13:02

Fehlermeldung
 
Hmmmm funktioniert irgendwie nicht .....
Ich gebe hier mal den Quelltext meines Buttons an:
Delphi-Quellcode:
begin
Query1.Active:=false;
Query1.Sql.Clear;
Query1.Sql.Add('INSERT INTO schueler SELECT * FROM schueler ORDER BY klasse');
Query1.open;
Query1.Active:=true;
end;
Tja und die Fehlermeldung beim Klicken des Buttons in der Laufzeit lautet wie folgt:
Zitat:

'Invalid use of keyword TOKEN: ORDER'
Was mach ich denn falsch?

PS: die schueler.db existiert schon auf der Platte.
[Edit=FuckRacism]Syntax hinzugefügt[/Edit]

MrSpock 30. Nov 2002 13:14

Hallo Rapthor,

die Anführungszeichen müssen weg. Die Klammern kannst du auch weglassen (sollte aber mit Klammern auch funktionieren).

Falls die Tabelle schon existiert, muss sie die korrekte Struktur haben, sonst musst du die Tabelle mit DROP TABLE erst löschen.

Falls es dann immer noch nicht funktioniert: Welche DB nutzt du?

Bart Simpson 3. Dez 2002 20:12

Nur mal ne prinzipielle Anmerkung: Du solltest Deine Daten nicht sortieren und dann sortiert abspeichern. Das kann zwar manchmal ganz nützlich sein, weil Du evtl. nur ein Mal und nicht mehrmals sortieren musst, hat aber einen Haken: Das ganze funktioniert eigentlich offiziell gar nicht!
Ich weiss, diese Aussage widerspricht dem was man aus Erfahrung im Umgang mit vielen DB's gelernt hat, denn v.a. die Desktop Systeme geben ihre Daten (wenn keine Sortierung verlangt wird) gern in der Reihenfolge zurück, in der sie gespeichert wurden. Das ist aber nicht zwingend so! SQL behandelt MENGEN. Diese sind (erstmal) nicht geordnet und können zufällig angeordnet sein. D.H. zwei aufeinanderfolgende Aufrufe á la SELECT * FROM Tab könnnen durchaus unterschiedliche Reihenfolgen liefern.
Zu spüren bekommst Du das Ganze v.a. dann, wenn Du mit großen DB's (MSSQL, Oracle...) arbeitest. Die liefern nämlich so zurück wie sie die Daten im Speicher finden. Wenn nun aber zw. den zwei Aufrufen eine Optimierung innerhalb des Speichers ablief, ist's nix mehr mit der gleichen Reihenfolge.

Lange Rede, kurzer Sinn: Besser nicht sortiert speichern, sondern bei jeder Ausgabe in der es nötig ist sortieren lassen.
Und ich würd das ganze auch bei Desktop Systemen tun, denn man weiss nie, was die nächste Version bringt ;-)

Bart Simpson

Rapthor 3. Dez 2002 20:22

Mhhhhh
 
Gut, danke für den Tipp!
Bei mir geht's um nen Schulprojekt und die wollen dass man die Tabellen eben nach Schülern, Klassen etc sortieren kann und daanach verändern kann.Aber sobald ich eben diese Veränderungen durchführen will, wird wieder die alte Sortierung hergestellt. :(
Ach was soll's! Irgendwie funzt des schon .. *grübelt*
13. Klasse is schon ne Herausforderung :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf