Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 18.05.13 06:46
Hi, Delpher,
wie kann ich die Sortierreihenfolge so ändern, dass z.B. Özdemir als Oezdemir eingeordnet wird und nicht "später"
ausgegeben wird?
Danke, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.05.13 08:00
Nach dem order by kannst du die Sortierung mit collate einstellen. Beim
MS SQL Server gibt es z.B. deutsch oder auch deutsch wie im Telefonbuch.
Für diesen Beitrag haben gedankt: D. Annies
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 18.05.13 17:23
Moin, moin,
komme leider nicht weiter, die Phrasen, die ich versucht habe, werden zur
Laufzeit leider alle abgelehnt, z.B. collate latin1_german2_ci usw.
Fehlermeldung ist: Allgemeiner SQL-Fehler, unrecognized phrase/keyword.
Noch ne Idee?
LG, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Sa 18.05.13 17:34
Hallo, welchen SQL-Server benutzt Du denn? Bei MySQL sollte das mit dem Collate funktionieren.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 18.05.13 17:38
Hi,
es ist noch die alte BDE-Umgebung, und ein FoxPro-Treiber - leider.
LG, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Sa 18.05.13 17:48
Detlef, dann wird wohl das mit Collate nicht funktionieren. Versuche doch mal in der Systemsteuerung die BDE-Verwaltung und dort bei Foxpro-Treiber einen anderen Langdriver (Da gibt es Auswahlen (z.B. DBASE deu cp 850).
Alternative: Langdriver auf 'WEurope' ANSI
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
Zuletzt bearbeitet von Tranx am So 19.05.13 06:29, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: D. Annies
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.05.13 22:18
D. Annies hat folgendes geschrieben : | es ist noch die alte BDE-Umgebung, und ein FoxPro-Treiber - leider. |
Dann wirst du das wohl manuell hinterher sortieren müssen, wenn du die Daten aus der DB ausliest. Denn meines Wissens wird dort collate generell nicht unterstützt und die wenigen verfügbaren Einstellungen beinhalten glaube ich keine, die dir da helfen kann.
Für diesen Beitrag haben gedankt: D. Annies
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: So 19.05.13 06:36
Was auf vielleicht möglich ist, aber sicher Deine Datenbankperformance sehr stark herabsetzt, ist ein berechnetes Feld, nach dem Du dann sortierst (wenn das geht, ich habe es selber , wegen des Performanceverlustes noch nicht ausprobiert). Du musst dann manuell, wie Jaenicke schreibt, das Sortierfeld und deren Inhalte bearbeiten:
Oezdemir -> OEZDEMIR
Özdemir -> OEZDEMIR
Müller -> MUELLER
:
Vielleicht ist das ein Weg. Aber - wie gesagt, sicher mit starkem Performanceverlust verbunden. Oder Du erzeugst ein Sortierfeld und dann belegst Du dieses mit den oben geannten Werten aus Deiner Datenbank. Dann musst Du bei jeder Änderung deines Ursprungsfeldes aber auch gleich das Sortierfeld mit ändern!! Und bei jedem Anlegen eines neuen Datensatzes das Sortierfeld mit belegen!
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
Für diesen Beitrag haben gedankt: D. Annies
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 19.05.13 09:11
Tranx hat folgendes geschrieben : | Was auf vielleicht möglich ist, aber sicher Deine Datenbankperformance sehr stark herabsetzt, ist ein berechnetes Feld, nach dem Du dann sortierst (wenn das geht, ich habe es selber , wegen des Performanceverlustes noch nicht ausprobiert). |
Das würde nur bei einer Datenmenge im Speicher funktionieren, bei der man zur Laufzeit einen Index darauf setzen kann. TClientDataSet unterstützt das, wäre aber nur in Delphi 6 Enterprise verfügbar, die kostenlosen Versionen Delphi 7 PE und TD (aus den Profilangaben) haben das beide nicht. Auch Alternativen wie TADMemTable aus AnyDAC/FireDAC könnten das, aber auch das kostet ja.
Insofern ist die sinnvollste Variante schon alles aus der DB auszulesen und die Daten manuell zu behandeln. Es geht ja hier vermutlich immer noch um Schülerdaten, und selbst wenn das dann 1000 Datensätze wären, das könnte man ja in Millisekunden alles selbst sortieren usw. (etwas ähnliches habe ich vor einigen Jahren mal gemacht, da dauerte dann ein Live-Filter auf alle Felder bei mehreren hundert Datensätzen in einer eigenen Datenstruktur nur wenige Millisekunden).
Für diesen Beitrag haben gedankt: D. Annies
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: So 19.05.13 16:01
Hi, Sebastian,
mittlerweile konnte ich eine IdNr mit auslesen und danach sortieren.
Danke für deine Mühe.
LG, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
|