Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:42 Der er 37 kommentarer og
1 løsning

Hvordan vælger jeg ORDER BY DetEne eller DetAndet?

Jeg har en formular, som virker fint:

Man kan fra en select-boks vælge det antal visninger, som man vil have trukket ud på siden: 2, 3, 4, 5 eller alle.

Jeg vil så gerne have, at brugeren skal kunne vælge, om visningen skal være alfabetisk eller efter ID. Jeg har prøvet følgende:

<table border="0" cellpadding="4" cellspacing="0" style="border: 1 solid #000000" width="100%" span class="tekst11w tdmenu">
    <tr>
        <form method="POST" action ="default.asp">
            <td><b>Jeg vil se:</b>&nbsp;&nbsp;
            <select size="1" name="antal_visninger" class="input">
                <option value="2" <% If Request.Form("antal_visninger") = 2 Then Response.Write("selected")%>>2 medlemmer</option>
                <option value="3" <% If Request.Form("antal_visninger") = 3 Then Response.Write("selected")%>>3 medlemmer</option>
                <option value="4" <% If Request.Form("antal_visninger") = 4 Then Response.Write("selected")%>>4 medlemmer</option>
                <option value="5" <% If Request.Form("antal_visninger") = 5 Then Response.Write("selected")%>>5 medlemmer</option>
                <option value="1000" <% If Request.Form("antal_visninger") = 1000 Then Response.Write("SELECTED")%>>alle medlemmer</option>
            </select>

            <b>&nbsp;&nbsp;sorteret&nbsp;&nbsp;</b><input type="radio" value="alpha" checked name="sort_by">&nbsp;&nbsp;alfabetisk&nbsp;&nbsp;<input type="radio" value="order_by_ID" name="sort_by">&nbsp;&nbsp;efter ID

            &nbsp;&nbsp;<input type="submit" name="antal" value="Opdater" class="input1">
            </td>
        </form>
    </tr>
</table><br>

<%

'HENTER VÆRDIEN FRA FORMEN

vChoise = Request.Form("sort_by")

If vChoise = "alpha" Then
    vChoise = "username"
Else
    vChoise = "userID"
End If

'UDSKRIVER DET VALGTE ANTAL VISNINGER

antal_visninger = Request.Form("antal_visninger")
If antal_visninger = 2 Then
    strSQL = "SELECT TOP 2 userID, username, created, lastseen, showstatus FROM profiles ORDER BY vChoise"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 3 Then
    strSQL = "SELECT TOP 3  userID, username, created, lastseen, showstatus FROM profiles ORDER BY vChoise"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 4 Then
    strSQL = "SELECT TOP 4  userID, username, created, lastseen, showstatus FROM profiles ORDER BY vChoise"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = 5 Then
    strSQL = "SELECT TOP 5  userID, username, created, lastseen, showstatus FROM profiles ORDER BY vChoise"
    Set RS = Conn.Execute (strSQL)
End If

If antal_visninger = "1000" Then
    strSQL = "SELECT * FROM profiles ORDER BY username"
    Set RS = Conn.Execute (strSQL)
End If


- men det giver denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

default.asp, line 97

If antal_visninger = 3 Then
    strSQL = "SELECT TOP 3  userID, username, created, lastseen, showstatus FROM profiles ORDER BY vChoise"
    Set RS = Conn.Execute (strSQL) ' <-------- LINIE 97
End If

Hvad går der galt?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:47 #1
PS: Som standard skal der sorteres alfabetisk, når man kommer ind på siden.
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 11:47 #2
Prøv dette istedet:

Order by " & vChoise

Mvh.

Thomas Regin.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:49 #3
Det virkede sq, Thomas :o) Men jeg vil gerne have, at der bliver sorteret alfabetisk som standard, når man kommer ind på siden. Hvordan grejes den?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:51 #4
Og det man nu har valgt (alfabetisk eller efter ID) skal jo også bibeholdes. Har jeg valgt ""efter ID", skal der jo være markeret i "efter ID", når jeg har opdateret.
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 11:53 #5
Hejsa Steen,

Glad for at det virkede! :)

Du kan sætte flere klausuler på din ORDER BY ! F.eks

ORDER BY " & vChoise & ", name"

Mvh.

Thomas Regin.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:54 #6
UNDSKYLD, det BLIVER jo sorteret alfabetisk, den er i orden.

Men jeg kan ikke få den til at blive i "efter ID", hvis det er det jeg vælger ...?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:58 #7
Det er denne linie, det drejer sig om:

<b>&nbsp;&nbsp;sorteret&nbsp;&nbsp;</b><input type="radio" value="alpha" checked name="sort_by">&nbsp;&nbsp;alfabetisk&nbsp;&nbsp;<input type="radio" value="order_by_ID" name="sort_by">&nbsp;&nbsp;efter ID

Hvordan får jeg gemt indstillingen i de radio-buttons?
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 11:58 #8
Du kan evt. sætte en session med måden den skal sorteres på eller sætte det som en del af Querystringen!

Det er jo et af de største problemer med ASP, at du mister sit scope over variabler, når du poster en side! Ergo bliver du nødt til at oprette en session, eller konstant holde styr på det i Querystringen eller i et hidden form-felt!

Mvh,

Thomas Regin.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 11:59 #9
Ok, Thomas. Hvis jeg vælger et hiddent form-felt, hvordan skal den så grejes?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:01 #10
Sorteringen og det hele virker fint. Problemet er, at når jeg vælger

"efter ID"

og trykker på knappen "Opdater", så springer den tilbage til

"alfabetisk"
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:02 #11
... men det virker fint nok, listen bliver skrevet ud efter ID :o)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:03 #12
Skal der noget

If ... = ... Then
    Response.Write ("checked")
End If

ind, eller ...?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:06 #13
Og grunden til at der springes tilbage til "alfabetisk", er jo p.gr.a. dette:

input type="radio" value="alpha" CHECKED name="sort_by">
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:17 #14
Hejsa Steen!

Ja, det er virkelig tricky! Den eneste måde jeg lige umiddelbart kan se, at du kan komme ud over dit problem er ved at lave en slags molbo-arbejde på denne måde:

if Request.Form("sort_by") = "alpha" then
Response.Write "<input type=radio name=sort_by checked value=alpha>"
else
Response.Write "<input type=radio name=sort_by value=alpha>"
End If

if Request.Form("sort_by") = "order_by_id" then
Response.Write "<input type=radio checked name=sort_by value=order_by_id>"
Else
Response.Write "<input type=radio name=sort_by value=oder_by_id>"
End If

Dette skulle virke! Og så glem det med hidden-felter, for det vil kun være aktuelt, hvis du loopede igennem dine radio-buttons fra en database, og ikke skrev dem manuelt! :)

Mvh,

Thomas Regin.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:21 #15
Ok, det ser fornuftigt ud, men skal det sættes sættes ind efter select-boksen sådan her:

        <form method="POST" action ="default.asp">
            <td><b>Jeg vil se:</b>&nbsp;&nbsp;
            <select size="1" name="antal_visninger" class="input">
                <option value="2" <% If Request.Form("antal_visninger") = 2 Then Response.Write("selected")%>>2 medlemmer</option>
                <option value="3" <% If Request.Form("antal_visninger") = 3 Then Response.Write("selected")%>>3 medlemmer</option>
                <option value="4" <% If Request.Form("antal_visninger") = 4 Then Response.Write("selected")%>>4 medlemmer</option>
                <option value="5" <% If Request.Form("antal_visninger") = 5 Then Response.Write("selected")%>>5 medlemmer</option>
                <option value="1000" <% If Request.Form("antal_visninger") = 1000 Then Response.Write("SELECTED")%>>alle medlemmer</option>
            </select>

<%
if Request.Form("sort_by") = "alpha" then
Response.Write "<input type=radio name=sort_by checked value=alpha>"
else
Response.Write "<input type=radio name=sort_by value=alpha>"
End If

if Request.Form("sort_by") = "order_by_id" then
Response.Write "<input type=radio checked name=sort_by value=order_by_id>"
Else
Response.Write "<input type=radio name=sort_by value=oder_by_id>"
End If
%>
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:25 #16
Det kommer helt an på hvad din intentioner er!

Hvis du BÅDE skal ha' dine radio-buttons og din dropdown til at "huske" dine indstillinger, så skal du gøre som ovenstående, ellers skal du bare udskifte din radio-buttons-HTML med den løsning jeg gav!

Mvh,

Thomas Regin.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:26 #17
Jeg skal have formularen til at huske begge indstillinger:

Hvor mange visninger, samt sorteringen.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:28 #18
Hm, den gemmer ikke valget?
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:29 #19
Hverken på radio-knapperne eller i dropdown-box'en?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:29 #20
Det jeg mener er, om dette her:

<%
if Request.Form("sort_by") = "alpha" then
Response.Write "<input type=radio name=sort_by checked value=alpha>"
else
Response.Write "<input type=radio name=sort_by value=alpha>"
End If

if Request.Form("sort_by") = "order_by_id" then
Response.Write "<input type=radio checked name=sort_by value=order_by_id>"
Else
Response.Write "<input type=radio name=sort_by value=oder_by_id>"
End If
%>

skal ind umiddelbart efter select-boksen?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:29 #21
Jo, den gemmer valget i drop-down boksen, men ikke i de to radio-buttons
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:30 #22
Ja, det skal ind på fuldstændigt samme sted som dine oprindelige radio-knapper! Du skal simpelthen udskifte dine oprindelige radio-knapper med ovenstående!

Thomas.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:33 #23
Ok. Når man går ind på siden, bliver listen sorteret alfabetisk, som den skal, men der er ikke nogen markering i nogen af de to buttons.

Når jeg vælger f.eks. "Alle" og "efter ID", huskes "Alle", men der er så ikke nogen markering i nogen af de to buttons.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:34 #24
Jo, når jeg vælger "alfabetisk" bliver markeringen gemt ...?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:34 #25
... men ikke "efter ID"
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:36 #26
Stavefejl i Order_by_id i anden radio-button:

if Request.Form("sort_by") = "order_by_id" then
Response.Write "<input type=radio checked name=sort_by value=order_by_id>"
Else
Response.Write "<input type=radio name=sort_by value=oder_by_id>" <<<<-----
End If

Skal selvfølgelig være order_by_id

Det sikkert derfor!

THomas.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:39 #27
SÅ virker det :o) Ikke for at være en kværulant, men ...

Listen er sorteret alfabetisk, som den skal, når man kommer ind på siden, men der er ikke nogen markering i "alpha". Kan det ordnes?
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:43 #28
Ja, det kan det godt!

<%
if Request.Form("sort_by") = "alpha" then
Response.Write "<input type=radio name=sort_by checked value=alpha>"
else
Response.Write "<input type=radio name=sort_by value=alpha>"
End If

if Request.Form("sort_by") = "" then
Response.Write "<input type=radio checked name=sort_by value="alpha">"
else
if Request.Form("sort_by") = "order_by_id" then
Response.Write "<input type=radio checked name=sort_by value=order_by_id>"
Else
Response.Write "<input type=radio name=sort_by value=oder_by_id>"
End If
End If
%>

Thomas! ;)
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:44 #29
Ups!!.. Fejl!

Her kommer den rigtige:

<%
if Request.Form("sort_by") = "" then
Response.Write "<input type=radio checked name=sort_by value="alpha">"
Else
if Request.Form("sort_by") = "alpha" then
Response.Write "<input type=radio name=sort_by checked value=alpha>"
Else
Response.Write "<input type=radio name=sort_by value=alpha>"
End If

if Request.Form("sort_by") = "order_by_id" then
Response.Write "<input type=radio checked name=sort_by value=order_by_id>"
Else
Response.Write "<input type=radio name=sort_by value=oder_by_id>"
End If
End If
%>
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:46 #30
Huske lige at rette oder_by_id til order_by_id, hvis du bruger ovenstående kode! :) Glemte lige at tilrette det!
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:52 #31
Det så jeg :o)

Men når man kommer ind på siden, er det "alpha" der bliver vist?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 12:53 #32
Når jeg vælger et antal fra drop-down og opdaterer, så kommer "efter ID" godt nok med, men den er der ikke, når man kommer ind på siden ...
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 12:59 #33
Var det ikke det du ville? Altså, at alpha skulle vises som standard, hvis der ikke var valgt noget?

Thomas.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 13:04 #34
Jo, men jeg ville gerne have begge to, så man kan vælge at sortere efter ID. Men det var jo bare at skrive:

<%
If Request.Form("sort_by") = "" Then
Response.Write "<input type=radio checked name=sort_by value=alpha>&nbsp;&nbsp;alfabetisk&nbsp;&nbsp;<input type=radio name=sort_by value=order_by_id>&nbsp;&nbsp;efterID"
Else
.......

DET VIRKER! 354354 tak for hjælpen, min nye, bedste ven! :o)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 13:05 #35
Du fik 30 point ekstra som tak for den ekstraordinært store indsats. Håber det er ok? :o)
Avatar billede thomas_regin Nybegynder
17. oktober 2002 - 13:46 #36
Hejsa Steen,

Fedt, at du selv fandt ud af det! :)

Og tak for pointene! :)

Thomas.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 13:53 #37
Det er mig der takker! Jeg råber højt en anden gang jeg har problemer! Eller rettere: NÆSTE gang :oD
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:09 #38
Jeg har oprettet et nyt spørgsmål, jeg ved ikke om du kan hjælpe på dette område: http://www.eksperten.dk/spm/271449

Hvis ikke, håber jeg der er andre der kan :o)
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

IT-JOB

Capgemini Danmark A/S

AI/Data Engineer

Københavns Universitet

Platform Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior specialister (DevSecOps) til Forsvarets nye Digitale Backbone

Politiets Efterretningstjeneste

IT Sikkerhedsarkitekt i PET