Avatar billede Jman Praktikant
24. september 2002 - 08:53 Der 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)

if not rs.EOF then
%>
            <!-- og så kalder vi tabellen -->
<tr>
<td bgcolor="#C0C0C0" valign="top" width="65">
<h4><font face="Verdana" size="1"><b><a href="gOOfy.asp?sortkey=ID">
<font face="Verdana">Hotlinenr.</font></a></b></h4>
</td>       
<td bgcolor="#C0C0C0" valign="top">
<h4><font face="Verdana" size="1"><b><a href="gOOfy.asp?sortkey=Betegnelse">
<font face="Verdana">Opgavebeskrivelse:</font></a></b></h4>
</td>
<td bgcolor="#C0C0C0" valign="top" width="70">
<h4><font face="Verdana" size="1"><b><a href="gOOfy.asp?sortkey=tekst">
<font face="Verdana">Prioritet</font></a></b></h4>
</td>
<td bgcolor="#C0C0C0" valign="top" width="55">
<h4><font face="Verdana" size="1"><b><a href="gOOfy.asp?sortkey=opgave.priornr">
<font face="Verdana">Priornr.</font></a></b></h4>
</td>
<td bgcolor="#C0C0C0" valign="top" width="170">
<h4><font face="Verdana" size="1"><b><a href="gOOfy.asp?sortkey=status">
<font face="Verdana">Status</font></a></b></h4>
</td>
<td bgcolor="#C0C0C0" valign="top" width="85">
<h4><font face="Verdana" size="1"><b><a href="gOOfy.asp?sortkey=Deadline">
<font face="Verdana">Deadline</font></a></b></h4>
</td>
</tr>

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.
Avatar billede puppetmaster Nybegynder
24. september 2002 - 08:56 #1
Hmmm.....så er det netop IKKE tal, men tekststrenge.....
Avatar billede spunk13 Nybegynder
24. september 2002 - 08:57 #2
prøv at bruge sådan nogle tal med et nul bagefter: 01 02 03 04 05 06 07 08 09 10?
Avatar billede cyb Nybegynder
24. september 2002 - 08:57 #3
Du kan sætte feltet Priornr i databasen til et int istedet for en tekststreng.
Avatar billede puppetmaster Nybegynder
24. september 2002 - 08:57 #4
Har du gemt tallene i databasen i en tabel med et felt af typen tal eller tekst?
Avatar billede puppetmaster Nybegynder
24. september 2002 - 08:58 #5
mente det samme som cyb
Avatar billede puppetmaster Nybegynder
24. september 2002 - 08:59 #6
btw, du bestemmer jo selv hvor mange point du vil afsætte til spørgsmål, men jeg ville da have nøjedes med at tage 10-12 for et spørgsmål som dette
Avatar billede cyb Nybegynder
24. september 2002 - 09:00 #7
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.
Avatar billede Jman Praktikant
24. september 2002 - 09:17 #8
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 ?
Avatar billede puppetmaster Nybegynder
24. september 2002 - 09:21 #9
Ok, så kan jeg godt se at 30 point er rimelige
Avatar billede puppetmaster Nybegynder
24. september 2002 - 09:21 #10
Det du søger er en int-to-char and back converter...
Avatar billede _just4fun_ Nybegynder
24. september 2002 - 09:33 #11
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!
Avatar billede Jman Praktikant
24. september 2002 - 09:42 #12
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
Avatar billede cyb Nybegynder
24. september 2002 - 10:25 #13
Du kunne sætte null i feltet istedet for teksten "ikke fastsat" - og så i koden tjekke på om feltet er null.
Avatar billede Jman Praktikant
24. september 2002 - 10:28 #14
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 ?
Avatar billede cyb Nybegynder
24. september 2002 - 10:31 #15
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)
Avatar billede cyb Nybegynder
24. september 2002 - 10:32 #16
Dette vil selvsagt ikke virke hvis tekstfeltet ikke kan konverteres til et integer.
Avatar billede _just4fun_ Nybegynder
24. september 2002 - 12:07 #17
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!
Avatar billede Jman Praktikant
24. september 2002 - 12:18 #18
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*
Avatar billede Jman Praktikant
01. oktober 2002 - 12:33 #19
jeg tror jeg lukker - jeg får ikke kastet mere tid efter det lige nu
Avatar billede grace45 Nybegynder
25. oktober 2010 - 15:03 #20
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)
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