Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi String richtig sortieren (https://www.delphipraxis.net/185119-string-richtig-sortieren.html)

mkinzler 17. Mai 2015 09:22

AW: String richtig sortieren
 
Zitat:

Zitat von Dejan Vu (Beitrag 1301782)
PS: Auch zum Thema: Muss es eine Firebird/DB-Lösung sein? Das ist nicht so leicht. In Delphi schreibt man einfach eine Vergleichsfunktion und kann das dann mal eben schnell sortieren.

Diese könnte man dann u.U. auch als UDF in FireBird benutzen.

Bernhard Geyer 17. Mai 2015 09:23

AW: String richtig sortieren
 
Zitat:

Zitat von Perlsau (Beitrag 1301770)
Hi Walter,
hab da eben mal ein wenig mit herumgespielt. Die Lösung von MKinzler funktioniert nicht, weil die Spalte nicht nur Ziffern enthält. Die Idee mit der Hilfs-Spalte führt dagegen zum Ziel:

Funktioniert aber nur bei so einfachen Konstellationen. Wir haben selbst öfter Komplexere Kombinationen. Dort führen wir die Sortierung auf Clientseite durch indem wir eine eigene Routine geschrieben haben.

Zitat:

Zitat von p80286 (Beitrag 1301778)
Entschuldigt, da geht mir der Hut hoch!
Entweder der Feldinhalt ist numerisch oder ein Text. da sollte man sich vorher entscheiden und dementsprechend sortieren.

Du kannst ja das mal einigen unserer Kunden erklären. Genau solche Kombinationen sind üblich in der realen Welt. Das beste und bekannteste Beispiel wäre wohl die Schraube M8.
Geht hier auch der Hut hoch oder ist M8 nicht doch eine vernünftige Bezeichnung?

Zitat:

Zitat von p80286 (Beitrag 1301778)
... führende Nullen weiter helfen.

Genau das macht unsere eigene Implementierung um dann diese natürliche Sortierung zu erreichen.

Captnemo 17. Mai 2015 09:41

AW: String richtig sortieren
 
Zitat:

Zitat von Rollo62 (Beitrag 1301795)
Spricht etwas dagegen eine weitere Spalte als Suchfeld hinzuzufügen ?
Dann müsste man nur einmal mit einem speziellen Algorithmus drüberlaufen und diese nach beliben Setzen,
danach könnte man schnell per z.B. Integer-Feld sortieren.

Rollo

Ich muss in meinen Projekten leider auch öfter auf Fremddaten zurückgreifen, deren Inhalt, Formatierung und Sortierung nicht meiner Kontrolle unterliegen. Da ist fast immer unmöglich einfach mal ein Feld hinzuzufügen, oder die Tabelle nach eigenen Ansprüchen zu verändern. Zum einen weiß man nicht immer welche Probleme man damit in der Erstellersoftware hervorruft, zum anderen bekommt man selten von den Entwicklern dieser Tabelle die Genehmigung oder die Unterstützung (schon gar nicht, wenn es sich dabei um größere Unternehmen handelt, wenn man denn überhaupt die Erlaubnis bekommt). Und dann passiert es sogar ab und an, dass die Erstellersoftware diese Erweiterungen der Tabelle beim nächsten Start oder der nächsten Reorganisationen mal flux wieder zu nichte macht.
Ich seh bei solchen Sachen tunlichst zu, dass ich das dies in meiner Software erledige. Ob im Speicher oder in einer eigenen DB hängt von Größe und Frequenz der Änderungen ab. Dann allerdings kann ich das so machen, wie ich will.

Walter Landwehr 17. Mai 2015 11:25

AW: String richtig sortieren
 
Hallo Rollo,

nein dagegen spricht nichts. DB und Software liegt in meiner Veantwortung.

p80286 18. Mai 2015 12:43

AW: String richtig sortieren
 
@ Dann solltest Du nach Möglichkeit die Daten "entzerren"

@
Zitat:

Zitat von Bernhard Geyer (Beitrag 1301797)
Du kannst ja das mal einigen unserer Kunden erklären. Genau solche Kombinationen sind üblich in der realen Welt. Das beste und bekannteste Beispiel wäre wohl die Schraube M8.
Geht hier auch der Hut hoch oder ist M8 nicht doch eine vernünftige Bezeichnung?

Da ich aus der "realen Kundenwelt" komme muß ich Dir teilweise Recht geben. Der andere Teil ist der der durch die Programmierer verursacht wird. Da werden dann mal gerne Informationen die unterschiedliche Eigenschaften beinhalten in einem Feld zusammgegeworfen, nach dem Motto, da kann man dann ein paar Tabellen sparen. Solange gleiche Informationen wenigstens das gleiche Format haben ist das ja noch zähneknirschend hinnehmbar, sobald aber nur eine zwischen 2 und 5 Zeichen lang sein kann und sie sowohl Ziffern als auch Buchstaben enthalten kann, ist eine Auftrennung nur mit großem Aufwandt zu erreichen. Von Erfassungsfehlern, die sich immer wieder und bei 25stelligen Bandwurmangaben immer häufiger einschleichen, ganz zu schweigen. Ein weiteres Beispiel wären Konstrukte wie 1..8.Adresszeile. Natürlich funktioniert das noch ganz gut wenn man sich in Deutschland bewegt. Enthält der Datenbestand dann z.B. nordamerikanische Adressen und lautet die Aufgabenstellung Briefe nach Stadt,Straße,hausnummer zu sortieren, natürlich unter Berücksichtigung des US-States, dann wird das schon etwas aufwendiger.
Was Dein Beispiel "M8" angeht, dahinter verbirgt sich ein ganzer Satz von technischen Details die "M8" beschreiben. Da sollte eine Sortierung nicht über den Namen, sondern über eben diese Details erfolgen. Ein ähnliches Beispiel läuft mir in der täglichen Arbeit über den Weg, wobei offizelle Aktennummern zwei (oder mehr) unterschiedliche Formate haben(über 50 bis 100 Jahre gesehen verständlich). Da kann man nichts machen, ausser in einem zweiten Feld, die EDV-taugliche Variante ablegen. Ein schönes Beispiel für die Vermengung von unterschiedlichen Informationen hat es bei der Bundesbahn gegeben. Da hatten (Dampf)Lokomotiven eine Baureihenbezeichnung und eine mehr oder weniger fortlaufende Nummerierung. in den meisten Fällen reichten hierfür 2 + 3 Stellen. Bei der Baureiche 50 gab es aber mehr als 999 Lokomotieven, also gab es halt 4 Stellen für die Zählung. Bei Einführung der EDV wurde dann alles in ein 6 stelliges Schema mit Prüfziffer übertragen, und plötzlich gab es auch eine Baureihe 51 die die Lokomotiven >999 der Baureihe 50 enthielt. Verzeihlich wenn man an die Damalige Speicherknappheit denkt. Heute ist ein solchen Verhalten nicht mehr notwendig.

Gruß
K-H

Walter Landwehr 18. Mai 2015 12:59

AW: String richtig sortieren
 
Habe dass Sortieren jetzt aufgegeben. In den Ziffern stecken zu viele Abnormitäten drin wie 10.1, 8256H1, A, 2a, usw.

Danke trotz alledem für Eure mühen.

himitsu 18. Mai 2015 13:13

AW: String richtig sortieren
 
Zitat:

Zitat von himitsu (Beitrag 1301759)
Ob/Wo sich soeine Funktion bei dir versteckt ... Bei Google suchenFirebird naturalsort

:stupid:

p80286 18. Mai 2015 13:15

AW: String richtig sortieren
 
kannst du denn die sortierung nicht über andere Felder realisieren?
was wis ich Rechnungsdatum Durchmesser oder was auch immer Dir zur Verfügung steht?

Gruß
K-H

Dejan Vu 18. Mai 2015 15:20

AW: String richtig sortieren
 
Ich wette mit Dir, das Dir hier einer der Codefreaks hilft, sobald Du ihm die Sortierregeln erklärst. Das schreit doch gerade nach "Es-juckt-mir-in-den-Fingern-gib-mir-was-zum-Coden"

himitsu 18. Mai 2015 17:40

AW: String richtig sortieren
 
Wieso? Wenn es doch schon was Fertiges für sowas und alles Mögliche gibt? :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr.
Seite 2 von 2     12   

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