Avatar billede hyperactive Nybegynder
11. november 2002 - 12:08 Der er 12 kommentarer og
1 løsning

Sortering af DB udtræk

Jeg skal have et udtræk sorteret efter varenr..... Normalt vil man bruge denne sætning:

SQL1 = "SELECT * FROM varer ORDER BY varenr ASC;"

Problemet er, at så kommer varenr. AP10 f.eks. til at stå før AP9.....

Hvordan undgår jeg det?
Avatar billede erikjacobsen Ekspert
11. november 2002 - 12:11 #1
Kald den "AP09"
Avatar billede hyperactive Nybegynder
11. november 2002 - 13:14 #2
Jamen det hedder den ikke
Avatar billede erikjacobsen Ekspert
11. november 2002 - 13:34 #3
Men det kunne den komme til :)

Hvis nu virksomheden virkelig ikke vil omdøbe
deres varer til et mere fornuftigt format, så
må du gøre det internt. Så ved indsættelse
i databasen sætter du "deres" navn i det
reglementerede felt, men sætter "dit" navn
i et nyt felt. Det nye navn bliver sorterings
venligt, for du laver en lille omskrivning
i ASP efter disse retningslinier/eksempler:

AP10  ->  AP000010
AP9  -> AP000009
BØNNE8 ->  BØNNE008
JAMES7  -> JAMES007

osv. Længden skal du nok lige tænke over.
Avatar billede eagleeye Praktikant
11. november 2002 - 13:43 #4
Grunden til det er at dit felt er test og 9 er størrere end 1 og derfor vil 9 komme efter 1. Du kan ikke få databasen eller til at vurdere en streng og automatisk sortere en del af strengen som teskt og en anden del som tal.

Du kan dog selv gøre det, hvis alle din varenr er ens format eksvis:

AP10
AP9
DD334
FF4442

Altså 2 Tekst karakter og resten som tal så kan du lave en SQL sætning som sortere det.:


SQL1 = "SELECT * FROM varer ORDER BY Left(varenr,2) ASC, Int(Mid(varenr,3)) ASC;"
Avatar billede hyperactive Nybegynder
11. november 2002 - 15:18 #5
eagle..... den giver fejl:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near 'Int(Mid(varenr,3)) ASC'
Avatar billede eagleeye Praktikant
11. november 2002 - 17:00 #6
Prøv med:

SQL1 = "SELECT * FROM varer ORDER BY Left(varenr,2) ASC, Int(Mid(varenr,3,LENGTH(varenr)-2)) ASC;"
Avatar billede hyperactive Nybegynder
14. november 2002 - 11:17 #7
eagle.... Den giver følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near 'Int(Mid(varenr,3,LENGTH(varenr)-2)) ASC' at line 1
Avatar billede erikjacobsen Ekspert
14. november 2002 - 11:24 #8
SELECT * FROM varer ORDER BY Left(varenr,2) ASC, 0+Mid(varenr,3,LENGTH(varenr)-2) ASC
Avatar billede hyperactive Nybegynder
14. november 2002 - 11:38 #9
erikj..... Super.... Der var den..... Læg lige et svar, så du kan få point :o)
Avatar billede erikjacobsen Ekspert
14. november 2002 - 13:42 #10
men eagleeye skal vel have flest...
Avatar billede eagleeye Praktikant
21. november 2002 - 16:59 #11
Eksperten brugere vejrsætter ikke løsnings forslag men kode der virker :)
Avatar billede erikjacobsen Ekspert
21. november 2002 - 19:08 #12
...skal vi omfordele?
Avatar billede eagleeye Praktikant
21. november 2002 - 19:18 #13
Nej det går nok..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester