24. september 2002 - 08:53Der er
18 kommentarer og 2 løsninger
Sortering efter valg, men den ene er nummerisk
Jeg har en asp-side, hvor brugeren kan vælge hvilken kolonne, der skal sorterese efter Kode: <!--sorter efter felt --> <% dim sortkey sortkey = Request.QueryString("sortkey") if len(sortkey) < 1 then sortkey = "opgave.priornr" end if %> <!-- SORTER SLUT -->
<% sql = "SELECT Opgave.*, Prioritet.Tekst, opgave.priornr FROM Opgave, Prioritet WHERE Prioritet.Nummer=Opgave.Prioritet AND Ansvarlig = '" & Session("BrugerID") & "' AND Afsluttet=0 Order By " & sortkey SQL = SQL & " ASC;" set rs = Conn.Execute(sql)
PROBLEM: Den række der hedder priornr. er tal og når der sorteres efter dette felt sorterer den 1,10,2,3,4,5,6,7,8,9 - altså 10-tallet kommer før 2. Hvordan løses dette ? Bemærk at sorteringskravene er jo ens for alle kolonnerne, hvilket besværliggør det en smule. Jeg fomoder der skal noget "if priornr/then" ind i mellem el lign.
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
Alternativt kan du prøve at konvertere priornr til et int i forespørglen, dette kan muligvis ummildbart lade sig gøre i din order by del, alternativt skal du lave en select på en select - hvilket er lidt mere krævene for sql serveren.
spunk - det tror jeg ikke.. Jeg ønsker at få kodet mig uden om disse cowboyløsninger ;)
puppetmaster -> i mine øjne er dette en middelsvær opgave og derfor er det sat til 30 p. min kollonne med priornr. er en CHAR, og det kan/må jeg ikke umiddelbart lave om. Jeg skal derfor have smidt noget kode ind i asp-siden som kan lave sorteringen korrekt...
Cyb: hvordan kan man lave en order by, der kun gælder for priornr. når det er i samme selectlinie ?
alt efter hvor mange entries der er i din db kan det nogen gange godt betale sig at sortere i ADO-recordset-objektet istedet. ADO har en property der heder sort, og den bruges så simpelt som: rs.sort="myField desc".. Og mht 1,10, 2, så er er ikke nogen (ordentlig og ikke bøvlet) vej uden om at lave feltet om til et nummerisk felt.. Det sparer dig for en masse bøvl at lave det om!
hmm .. det med ADO fattede jeg ikke meget af - Problemet med min kolonne (og hvorfor den ikke må ændres) er at, når der løber en ny opgave ind, skal den stå om "ikke fastsat" .. derfor er det både tal og tekt
det kunne jo være en mulighed :) Men lad mig lige få det på det rene; Hvis jeg ændrer kolonnen til int - vil tallene så listes korrekt uden yderligere kode ?
Du kan også sorter på feltet priornr således: SELECT Opgave.*, Prioritet.Tekst, opgave.priornr FROM Opgave, Prioritet WHERE Prioritet.Nummer=Opgave.Prioritet AND Ansvarlig = '" & Session("BrugerID") & "' AND Afsluttet=0 Order By convert(int,Opgave.priornr)
hmmm. ADO bare det komponent der er så flinkt at returnere et recordset til dig. Recordsettet kan du så bede om at sortere da data det har hetet fra databasen... Men nevermind... Gider ikke forklare hvis din holdning er 'det forstår jeg ikke'
Null er kodeverdenens svar på 'ikke taget stilling til', så den giver perfekt mening hvis det er det du gerne vil angive... Og det gliver perfekt mening at bruge et tal hvis du gerne vil lave noget tal-agtigt.... ProgrMRING er en svar En!
jeg mener ikke at jeg har en holdning, hvis jeg ikke har forsstået budskabet ;).. Men jeg vil forsøge at ændre kolonnen, trods alt, til integer og så se om sorteringen falder korrekt ud..senere.. Jeg vender tilbage hvis/når det driller *GG*
Hej mit navn er nåde er fra Liberia land rart at møde dig min kære jeg vil elske at vide mere om dig min e-mail er (graced_11dabah@yahoo.com)
Synes godt om
Ny brugerNybegynder
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.