Hej! Johannes, Jag provade ditt förslag, å det fungerade bra!Sortera ett RecordSet
Jag vill sortera ett RecordSet. Det är ju inte så svårt om man använder funktionen RecordSet.Sort. Men den funktionen är inte så bra på att sortera stigande tal. Mitt RecordSet ser ut så här, när det är sorterat:
M10
M12
M6
M8
Jag vill ju förstås att det ska se ut så här:
M6
M8
M10
M12
Har någon en funktion som fixar det?
Tack på förhand!
// JohannesSv: Sortera ett RecordSet
Att sortera alfanumeriskt är enkelt, att sortera numeriskt likaså. Men det finns ett antal varianter där det inte fungerar så som vi programmerare (och framförallt användarna) vill. Ditt exempel är ett av dom. Ett ännu enklare exempel är när numeriska värden är sparade i en databas som strängvärden där sorteringen blir :
"1"
"10"
"100"
"2"
"3"
...
Jag har precis nyligen bråkat med ett liknande problem, en produktkod som bestod av en eller flera bokstäver samt ett löpnummer som räknas upp för varje post som har samma produktkod.
I mitt fall valde jag i databasen att spara detta som två kolumner (Code och Number ) även om det för användaren egentligen alltid visas som ett värde. Detta gör att jag i mina SELECT-satser eller Stored Procedures alltid kan sortera först på bokstavskoden och sedan på det numeriska värdet (ORDER BY Code,Number) för att få avsedd effekt.
I mitt fall vill jag dessutom högerjustera siffervärdena och fylla ut med så många nollor som behövs, dvs jag visar M1...M9 men så fort post nummer 10 lagras med produktkoden "M" så ville jag att dessa värden ska visas som : M01,...,M09,M10,..., M99 och så vidare.
Det kanske inte är exakt som du önskar i ditt fall, men jag slänger med SQL:en för detta i alla fall :
Tabellnamn : Task
Produktkod : Code (Varchar)
Produktnummer : Number (Int)
Kolumnalias : TaskNumber
SELECT ISNULL(Task.Code, '') + ISNULL(RIGHT('0000000000' + CONVERT(varchar, Task.Number), (SELECT Len(CONVERT(varchar, MAX(ISNULL(Task.Number, 0))))
FROM Task)), '') AS TaskNumber FROM Task
Denna SQL går säkert att optimera, så om någon har förslag på hur man kan göra detta smidigare så är jag tacksam.Sv: Sortera ett RecordSet
Tack för hjälpen!
// Johannes