AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Order By stimmt nicht im ClientDataSet
Thema durchsuchen
Ansicht
Themen-Optionen

Order By stimmt nicht im ClientDataSet

Ein Thema von Maliko · begonnen am 28. Mai 2021 · letzter Beitrag vom 21. Jun 2021
Antwort Antwort
Maliko

Registriert seit: 20. Jun 2019
Ort: Bremen
94 Beiträge
 
Delphi 12 Athens
 
#1

AW: Order By stimmt nicht im ClientDataSet

  Alt 21. Jun 2021, 10:05
Das ist das Problem. Es gibt nicht eine einzige Sortierung. Der Benutzer kann zwischen 5 verschiedenen Sortierreihenfolgen wählen, die jeweils eine SQL-Abfrage mit einem anderen ORDER BY starten.

Durch die Indizes steige ich ehrlich gesagt nicht durch, bzw. finde sie so wie ich sie verstanden habe reichlich schwachsinnig, da man nur nach bestimmten Feldern in einer bestimmten Reihenfolge sortieren kann, allerdings z.B. nicht nach einem Regex wie in meinem Beispiel. Darum will ich einfach nur dass das ClientDataSet die Daten so nimmt wie es die bekommt und da nicht noch weiter dran rumsortiert.

EDIT: Und identisch muss es daher sein, da der Mitarbeiter nach der Position des Datensatzes schaut. Diese bekommt er aus einem anderen Teil des Programmes und die Stimmen trotz des selben Querys nicht überein. Nur ist es bei dem einem Teil einfach nur ein Query welches in eine Liste gedumpt wird und beim zweiten um ein ClientDataSet, welches über eine DataSource an eine Tabelle gebunden ist.

Geändert von Maliko (21. Jun 2021 um 10:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.251 Beiträge
 
Delphi 12 Athens
 
#2

AW: Order By stimmt nicht im ClientDataSet

  Alt 21. Jun 2021, 10:11
1) Wenn du keinen Index machst, werden die Daten in der Reihenfolge abgerufen, in der sie die DB liefert. Also das ORDER BY in die Query + CDFS hat keinen Index.
2) Mach je Abfrage einen anderen Index, ein CDS kann ja mehrere davon haben.
3) Mach in dein SQL ein Feld, nach dem du mit ORDER BY sortierst und auf das du im CDS einen Index setzt.
Beispiel: Statt select a,b,c from x order by 2,3 machst du select c+b as idx,a,b,c from x order by 1 und im CDS hast du idx als Feld vorliegen + kannst danach sortieren.
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
Ort: Bremen
94 Beiträge
 
Delphi 12 Athens
 
#3

AW: Order By stimmt nicht im ClientDataSet

  Alt 21. Jun 2021, 10:22
2. würde ich gerne machen, habe aber wie bereits 2 mal geschrieben keine Ahnung wie das gehen soll. Vor allem da es auch möglich sein muss descendent zu sortieren. Da liegt dann auf dem Order by beim Regex und der sammelreferenz noch ein DESC drauf. Und zwar nur auf den beiden. Das kann man nicht über die 3. möglickeit abdecken. Und Möglichkeit 1 funktioniert nicht. Ich habe gerade jeden einzelnen Index aus der FieldDefs gelöscht und er sortiert trotzdem anders.

Wie schon gesagt. 2. Möglichkeit wäre mir persönlich am liebsten, weil dann müsste ich auch nicht mehr jedes mal ein neues Query abschießen, was natürlich auch die Geschwindigkeit des ganzen Erhöhen würde (die Abfrage dauert nämlich fast ne Minute jedes mal).
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Order By stimmt nicht im ClientDataSet

  Alt 21. Jun 2021, 10:48
Hallo,
vielleicht hilft dir das?

https://www.delphipraxis.net/161193-...sortieren.html

Du kannst das CS also anders sortieren wie das darunterliegende DataSet (bei dir eine Query).
Wenn du das CS in Ruhe läßt (kein IndexName/IndexFieldName usw.) müsste die Sortierung wie die Original-Query sein.

Das Ändern der Sortierung über die Query dauert dann aber halt deine eine Minute.

Wenn du die Sortierung über das CS machst, musst du halt das genauso setzen, wie du es haben willst.
Heiko
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
Ort: Bremen
94 Beiträge
 
Delphi 12 Athens
 
#5

AW: Order By stimmt nicht im ClientDataSet

  Alt 21. Jun 2021, 10:53
Den Post hab ich selbst schon gefunden. Nur existiert die Seite, auf die in dem Verlinkten Beitrag verlinkt wurde nicht mehr. Über den von dir Verlinkten Thread weiß ich überhaupt wie das ganze überhaupt funktioniert.
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
Ort: Bremen
94 Beiträge
 
Delphi 12 Athens
 
#6

AW: Order By stimmt nicht im ClientDataSet

  Alt 21. Jun 2021, 12:56
So. Problem hat sich erledigt. Ich bin jetzt doch das Risiko eingegangen die Komponente auszutauschen. Glücklicherweise heißen die meisten Bestandteile vom OracleDataSet genauso wie beim ClientDataSet, daher musste ich nur die Quellunit bearbeiten und nicht die Units die mit den Daten dann arbeiten. Mit einem OracleDataSet funktioniert es einwandfrei.
  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 21:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz