AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie kann ich die SQL Sortierung in eine Tabelle speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich die SQL Sortierung in eine Tabelle speichern?

Ein Thema von Rapthor · begonnen am 12. Dez 2002 · letzter Beitrag vom 19. Dez 2002
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#21
  Alt 14. Dez 2002, 21:57
Hallo Hansa,

Indices kannst du nur Tabellen, nicht aber TQueries zuordnen. Einen aus den vorhandenen Indices einer Tabelle kannst du det TTable Eigenschaft IndexNames zuordnen:

  tabPersonen.IndexNames := 'idxNachOrten'; Du kannst aber auch IndexFieldNames verwenden.

Die WHERE Klausel gehört zu SQL, dient aber zur Beschränkung einer Auswahl und ist somit eher das Gegenstück zum Filter einer Tabelle. Zum Sortieren benutzt du die ORDER BY Klausel. Zum Einfügen einer Datenmenge in eine Tabelle nutzt du das INSERT Statement.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#22
  Alt 15. Dez 2002, 00:28
Hallo,

Zitat von MrSpock:
Indices dienen tatsächlich nur dazu, die Daten sortiert anzuzeigen, die
Na das stimmt ja so nicht ganz. Die dienen vorallem als Unterscheidungsmerkmal zwischen den Datensätzen. Ohne Index ist es möglich, mehrere gleiche Einträge zu haben (auch wenn's dann eigentlich keine Mengen mehr sind). Wenn die DB aber ein Index hat, kann schnell beim einfügen geprüft werden, ob der Eintrag eineindeutig ist und evtl. blockiert werden.

Zitat von MrSpock:
physikalische Reihenfolge bleibt davon unberührt.
Also die physikalische Reihenfolge ist wohl Sache des Betriebssystems und die logische des Datenbanktreibers und alles ne große Blackbox. Bei Paradox 7 wird die Sortierung einfach über Sekundärindizes bei jeder Veränderung am DB-Inhalt mit gepflegt und kann damit auch für das ursprüngliche Problem eingesetzt werden. Allerdings hab ich das vor langer Zeit mal mit Delphi 1 gemacht...


Thomas
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#23
  Alt 15. Dez 2002, 16:57
Hallo fiasko,

Zitat:
Na das stimmt ja so nicht ganz. Die dienen vorallem als Unterscheidungsmerkmal zwischen den Datensätzen. Ohne Index ist es möglich, mehrere gleiche Einträge zu haben...
Nur eindeutige (unique) Indices verhindern die Mehrfacheingabe. Primärindices müssen eindeutig sein, aber gerade Sekundärindices sind häufig nicht eindeutig und verhindern so zum Glück nicht die Eingabe eines gleichen Wertes.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#24
  Alt 15. Dez 2002, 18:01
Hallo MrSpock

Zitat von MrSpock:
Nur eindeutige (unique) Indices verhindern die Mehrfacheingabe. Primärindices müssen eindeutig sein, aber gerade Sekundärindices sind häufig nicht eindeutig und verhindern so zum Glück nicht die Eingabe eines gleichen Wertes.
Hab ich ja auch nirgends geschrieben, sonst wäre es ja auch sinnlos zwischen Primären und Sekundären Indizes zu unterscheiden.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
sol_e_sombre

Registriert seit: 9. Dez 2002
8 Beiträge
 
Delphi 5 Enterprise
 
#25
  Alt 17. Dez 2002, 14:22
Hallo Rapthor!

Es gibt bei der TQuery die Eigenschaft "RequestLive" die muß auf True stehen, dann bekommst Du eine aktualisierbare Datenmenge zurück. Das müsste Dein Problem lösen, die Daten nach dem sortieren nicht mehr editieren zu können!
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#26
  Alt 19. Dez 2002, 08:22
Laut Delphi-Hilfe funktioniert RequestLive zur Rücklieferung BEARBEITBARER Ergebnismengen, wenn die SQL Anweisung mit der ORDER BY Klausel auf der Sortierung mit Index basiert.
Da meine Sortierung jedoch OHNE Index funktioniert scheint hier der Grund gegeben zu sein, warum ich RequestLive NICHT anwenden kann.
Jetzt ergibt sich für mich die Frage, wie ich die Sortierung mit Indexerstellung fertigbringe.
Kann mir da jemand eine Schritt-für-Schritt-Anleitung geben?
Ich hoffe dann nämlich die RequestLive Funktion nutzen zu können ......
Ich habe zu danken
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#27
  Alt 19. Dez 2002, 08:45
Hallo Rapthor,

diese Einschränkung ist mir neu, aber man lernt ja nie aus...

Hintergrund scheint zu sein, dass bei Einfügen eines neuen Datensatzes aufgrund des fehlenden Indexes eine korrekte Einsortierung des neuen Datensatzes nicht möglich ist. Also bleibt doch nur der Weg, bereits bei der Definition der Tabelle einen (Sekundär-)Index anzulegen, dann brauchst du aber auch kein Select-Statement in einer TQuery Komponente, sondern kannst wie ich schon einmal beschrieben habe, einfach den Index auswählen. Du hattest ja ganz am Anfang sowieso SELECT * verwendet, also alle Felder ausgewählt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#28
  Alt 19. Dez 2002, 08:55
Gut, einen Index erstellen
Und wie/wo geht das? Ich bin da leider total der Laie und müsste wissen unter welchen Menüpunkten ich das machen kann. Tut mir Leid wenn ich damit schon nerve .....
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#29
  Alt 19. Dez 2002, 09:39
Gut also Indexerstellung hab ich jetzt erledigt...undzwar mithilfe der Datenbankoberfläche (ein Extraprogramm des Delphipakets).Sortieren klappt und nen neuen Datensatz hinzuzufügen klappt jetzt nach der Sortierung auch. ALLERDINGS funktioniert es dann wieder NICHT eine erneute Sortierung nach Index vorzunehmen.
D.h. nach dem ersten Hinzufügen sind die Indexdinger nutzlos und eine Sortierung kann nicht durchgeführt werden.

Zitat:
"Index nicht mehr gültig!"
Gibt's ne Möglichkeit das zu verhindern?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#30
  Alt 19. Dez 2002, 09:55
Hallo Rapthor,

das mit der DB - Oberfläche war goldrichtig! Hast du den Index als "gewartet" (Optioonsfeld bei der Definition des Indexes) definiert?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 10:31 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