ADOQuery - in String verpackte Zahlen sortieren

Hallo,

ich habe das Problem dass die Ergebnisse eines ADOQueries nach einem Text-Feld sortieren will dass die Zahlen von 1-100 und weiters die Zahlen-Buchstaben-Kombinationen A1-10, etc. enthält.

Wenn ich die Property ‚Sort‘ verwende bekomme ich (wie auch bei ‚ORDER BY‘ in der SQL-Abfrage) die Sortierung 1,10,11,12…usw anstatt 1,2,3… auf die Buchstaben-Kombinationen kann ich jedoch nicht verzichten.

Ich habe bereits versucht „leading zeros“ in den Recordset einzufügen jedoch will ich nicht, dass diese in der Datenbank stehen. Die Buchstabenkombinationen kann ich per Try…except mit einem „versuchten“ strtofloat ausfiltern.

Ich bin verzweifelt und für jeden Hinweis wie ich die Felder sortieren kann dankbar.

LG
Stefan

Hallo,

du könntest in deiner Query ein berechnetes Feld abfragen und selbiges zum Sortieren verwenden.

z.B.:

SELECT ID, (val(left$(ID, InStr(ID, "-")-1)) AS HilfsID FROM MyTab
 ORDER BY HilfsID;

(möglicherweise reicht als Funktion auch schon

val(ID)

denn meines Wissens bricht VB beim Konvertieren ab, sobald ein nicht-Zahlen-Zeichen kommt.

Ich bezweifele aber, dass die Datenmenge dann noch updatefähig ist (also kein Dataset.Edit, Dataset.Post). Solche Operationen müssten dann über eine weitere Query ausgeführt werden.

Gruß, Niels

Hallo Stefan,

Du könntest zu jeder Zahl 100 addieren und dann nach dem Sortieren die 100 wieder abziehen. Dann erhälst Du die von Dir gewünschte Reihenfolge.

Gruß Ebi

Hallo,

Du könntest zu jeder Zahl 100 addieren und dann nach dem
Sortieren die 100 wieder abziehen. Dann erhälst Du die von Dir
gewünschte Reihenfolge.

wo und wie soll das geschehen? Es handelt sich um ein Textfeld in dem auch Buchstaben enthalten sind und dieses Textfeld soll in der Datenbank nicht verändert werden!

Gruß, Niels

So ähnlich hab ich’s gemacht…für’s updaten und neu einfügen habe ich sowieso ADOCommands verwendet.

Danke und LG