AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi (MariaDB) Sortierreihenfolge in FDTable unterschiedlich
Thema durchsuchen
Ansicht
Themen-Optionen

(MariaDB) Sortierreihenfolge in FDTable unterschiedlich

Ein Thema von MasterDetail · begonnen am 10. Okt 2017 · letzter Beitrag vom 11. Okt 2017
Antwort Antwort
MasterDetail

Registriert seit: 6. Sep 2016
8 Beiträge
 
#1

(MariaDB) Sortierreihenfolge in FDTable unterschiedlich

  Alt 10. Okt 2017, 15:36
Datenbank: MariaDB • Version: 10.1.13 • Zugriff über: FireDAC
Hallo,

ich habe ein kleines Problem mit der Verwendung von FDTable in Verbindung mit unserer MySQL/MariaDB-Datenbank:
Die Sortierung vom Server (Sortierung mit ORDER BY) unterscheidet sich von der Sortierung auf dem Client (welche anhand der Eigenschaft "SortLocale" sortiert).

Insbesondere gibt es Probleme mit der Sortierung von Leerzeichen und Sonderzeichen. Wir sind folgende Sortierung gewöhnt: Leerzeichen -> Sonderzeichen -> Zahlen -> Buchstaben.

Da die FDTable ja seitenweise einliest mit "LIMIT X" und "WHERE" in Verbindung mit einem Primärschlüsselwert, kommt dieser durcheinander wenn ein doppelter Datensatz auftaucht.
In der Hilfe von Embarcadero wird empfohlen, die Formatoptions der FDTable entsprechend zu setzen:

SortLocale := MAKELCID(MAKELANGID (LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT);
SortOptions := [soNoSymbols];
StrsTrim := false;

- "SortLocale" hat nach der Ermittlung der obenstehenden LanguageID den Wert "1031". Default-Wert wäre "1024" -> Nichts gebracht
- "[soNoSymbols]" bewirkt den gleichen Fehler schon beim Öffnen und holen der ersten 4 Datensätze.
- "StrsTrim" bewirkt keinen Unterschied.

Ich habe mal aus Spaß "SortLocale" auf 0 gesetzt. Dann trat der Fehler nicht mehr an der gewöhnlichen Stelle auf, dafür aber ein paar 10000 Datensätze weiter.
Getestet wurde es in unserem Artikelstamm, dabei ist die FDTable angewiesen, die Tabelle nach der "Benennung" zu sortieren.

Nun zu meiner eigentlichen Frage:

Arbeitet ihr auch mit FDTables?
Hattet ihr mal das gleiche Problem?
Wenn ja, welche Werte benutzt ihr für die Sortieroptionen?

Nebenbei:
Die Tabelle auf dem Server hat die Standardkollation "latin1_swedish_ci", probiert habe ich aber auch "latin1_german1_ci" und "latin1_german2_ci".
Egal welche der drei Kollationen, bei einer Abfrage über HeidiSQL stand stets das Leerzeichen an erster Stelle und dann Sonderzeichen etc....
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: (MariaDB) Sortierreihenfolge in FDTable unterschiedlich

  Alt 11. Okt 2017, 13:07
Hi MasterDetail

Mit MariaDB selbst hab ich noch nie gearbeitet, aber mit MySQL. Und da ist es möglich, die Sortierreihenfolge pro Verbindung zu ändern. Also wird dies auch in MariaDB der Fall sein. Dadurch können UserA und UserB mit 2 unterschiedlichen Sortierreihenfolgen arbeiten.
Zitat:
...unterscheidet sich von der Sortierung auf dem Client (welche anhand der Eigenschaft "SortLocale" sortiert).
Jein... Der Server legt pro Verbindung für den avisierten Client eine bestimmte Sortierung fest - wobei ich davon ausgehe, dass auch dies bei MariaDB so wie bei MySSQL ist. "SortLocale" ist offenbar ein Firedac-Property. Da ich unter MySQL immer direkt mit dem Server gearbeitet habe (Sortierreihenfolge, Zeichensatz, MaxxAllowedpacket), kenne ich das bislang gar nicht.

Zu deiner eigentlichen Frage:
  • Arbeitet ihr auch mit FDTables?
    Nein. Ich werte die Querys per Code aus und beschreibe damit ein(..) Stringgrid
  • Hattet ihr mal das gleiche Problem?
    Eigentlich auch nicht. Ich musste den verwendeten Zeichensatz und MaxAllowedPacket anpassen
  • Wenn ja, welche Werte benutzt ihr für die Sortieroptionen?
    Die Sortieroptionen sind auf Serverseite so wie die deinen festgelegt. Das Programm ändert daran nichts mehr. Das ist aber gerade bei Internationaler Verwendung der Anwendung nicht möglich

Gruss
Delbor

PS: Ich weiss das zwar nicht wirklich, aber ich würde mich doch sehr wundern, wenn HeidiSQL nicht auch direkt mit dem Server arbeitet. Insbesondere da, wo es gilt, Metadaten zu bearbeiten, wie zum Bleistift Sortierreihenfolge oder Zeichensatz
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (11. Okt 2017 um 13:11 Uhr)
  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:14 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