AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Sortierbefehl angewendet ABER wie gehts zu speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Sortierbefehl angewendet ABER wie gehts zu speichern?

Ein Thema von Rapthor · begonnen am 30. Nov 2002 · letzter Beitrag vom 3. Dez 2002
Antwort Antwort
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#1

SQL Sortierbefehl angewendet ABER wie gehts zu speichern?

  Alt 30. Nov 2002, 12:29
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
Bitte um Hilfe!
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 30. Nov 2002, 13: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)
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#3

Juchu! Ich danke ... gleich mal ausprobieren

  Alt 30. Nov 2002, 13:27
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#4

Fehlermeldung

  Alt 30. Nov 2002, 14:02
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]
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5
  Alt 30. Nov 2002, 14: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?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Bart Simpson

Registriert seit: 3. Dez 2002
9 Beiträge
 
#6
  Alt 3. Dez 2002, 21: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
Naeser's Gesetz: Man kann etwas narrensicher machen - aber nicht VERDAMMT narrensicher!
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#7

Mhhhhh

  Alt 3. Dez 2002, 21:22
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz