Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Doppelte Zeilen mit FireDAC/TFDTable bei absteigender Sortierung im LDW Modus (https://www.delphipraxis.net/183402-doppelte-zeilen-mit-firedac-tfdtable-bei-absteigender-sortierung-im-ldw-modus.html)

cytrinox 7. Jan 2015 10:16

Datenbank: FB/MSSQL • Version: 2.5/2012 • Zugriff über: FireDAC

Doppelte Zeilen mit FireDAC/TFDTable bei absteigender Sortierung im LDW Modus
 
Hi,

ich habe mit den FireDACs ein recht merkwürdiges Problem. Ich habe eine Tabelle mit ein paar Beispieldaten, Hauptsache es gibt einen Primärschlüssel und eine varchar Spalte mit Inhalt.

Dann erstelle ich eine TFDConnection und eine TFDTable, setze TableName auf die Tabelle und setze IndexFields auf die Varchar Spalte. Ohne weitere Einstellungen arbeitet die TFDTable nun im LDW Modus (den ich brauche, weil sehr viele Daten in der Tabelle bzw. in dem Grid angezeigt werden müssen). Durch den LDW Modus sortiert TFDTable nicht selber, sondern macht das über die Datenbank.

Solange man eine aufsteigende Sortierung verwendet klappt das. Setzt man aber IndexFields auf
Code:
"MYFIELD:D"
oder setzt in den SortOptions soDescending auf true, erscheinen die Tabellenzeilen immer doppelt und dreifach im Grid, wenn man zusätzlich soUniqe angibt, wird auch eine Exception geworfen (Doppelte Zeilen).

Zuerst hab ich gedacht, das wär nur ein Problem mit dem Firebird-Treiber. Aber unter MS-SQL kann ich das nun genauso nachvollziehen. Getestet hab ich es mit XE5 und XE7.

Im Wiki steht sogar ausführlich drin, dass es zu doppelten Zeilen im LDW Modus kommen kann, wenn die Serversortierung anders sortiert als der Client. Nun hab ich mit der SortLocale Property experimentiert (0, 1024, 1031) und auch mal bei Firebird unterschiedliche Collations für die Spalte selbst festgelegt, aber es ändert sich nichts. Außerdem sind die Werte, die ich sortiere, nur einfache Teststrings wie z.B. "ATest", "ZTest" usw.

Auf github habe ich auch ein kleines Testprojekt für Firebird 2.5 erstellt falls das jemand benötigt (https://github.com/cytrinox/firedac-sort-issue).

Hat jemand eine Idee wie ich im LDW Modus dieses Problem beheben kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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