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
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?