/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
3 hurtige spørgsmål vedr. sortering af ind~
Fra : Skindbeni


Dato : 03-03-05 03:16

På denne side har jeg et problem. http://www.skindbeni.dk/artikler.asp

Når siden indlæses er der fejl på siden. Først når jeg trykker på søg, vil
siden vises korrekt. Jeg kan godt se, hvad problemet er (det er vel, at den
ikke har valgt en sorteringsform ved indlæsningen af siden?), men mangler
løsningen.

Fejlen ligger i linie 9... Jeg har her et udsnit af koden, der strækker sig
fra linie 8-10, hvis det er en hjælp.

myConn.Open tempConn
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then

---

Et andet problem... Hvordan kan jeg få datoformatet til at være... lidt mere
dansk?

Et tredje problem... Når jeg fx sorterer efter titel eller emne, så sorterer
den Å => A i stedet for A => Å. Hvordan kan det ændres?



 
 
Casper Bang (03-03-2005)
Kommentar
Fra : Casper Bang


Dato : 03-03-05 06:52

> Fejlen ligger i linie 9... Jeg har her et udsnit af koden, der strækker
> sig fra linie 8-10, hvis det er en hjælp.
>
> myConn.Open tempConn
> Set rs = myConn.Execute(strSQL)
> If Not (rs.BOF Or rs.EOF) Then

Hvad er fejlmeddelelsen?


> Et tredje problem... Når jeg fx sorterer efter titel eller emne, så
> sorterer den Å => A i stedet for A => Å. Hvordan kan det ændres?

ORDER BY titel DESC
DESC står for descending, det vil sige faldendende.



Jens Gyldenkærne Cla~ (03-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-03-05 11:08

Skindbeni skrev:

> Når siden indlæses er der fejl på siden.

Du får: "Syntax error in ORDER BY clause."

Formentlig sker det fordi du glemmer at lave en defalt-sortering.

Hvis du fx skriver:

strSQL = "SELECT * FROM artikler ORDER BY " & Request.Form("sorter") -
så vil det gå galt når der ikke er noget i dit formobjekt.

Du skal tjekke dit request og så lave en default-værdi hvis der ikke er
en gyldig værdi.


> Set rs = myConn.Execute(strSQL)

Nu er fejlen nogenlune oplagt her, men ellers er det altid en god ide at
udskrive sql-koden hvis der er fejl den (det er der når du får "Syntax
error in ..." fra Access-driveren).

Metoden er beskrevet her:
<http://asp-faq.dk/article/?id=41>

> Et andet problem... Hvordan kan jeg få datoformatet til at være... lidt mere
> dansk?

Kig her: <http://asp-faq.dk/article/?id=47>


> Et tredje problem... Når jeg fx sorterer efter titel eller emne, så sorterer
> den Å => A i stedet for A => Å. Hvordan kan det ændres?

Mener du at den sorterer faldende (å,ø,æ,z,...,c,b,a) eller at den
sorterer forkert (typisk å sammen med a, ø sammen med o og æ sammen med
e). Stigende/faldende styres med ASC/DESC: ORDER BY titel DESC sorterer
faldende, ORDER BY titel ASC sorterer stigende (ASC er default-værdien
og kan sagtens udelades).

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Skindbeni (04-03-2005)
Kommentar
Fra : Skindbeni


Dato : 04-03-05 00:20

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:13z6sbljmxvuy$.dlg@jcdmfdk.invalid...
> Skindbeni skrev:
>
>> Når siden indlæses er der fejl på siden.
>
> Du får: "Syntax error in ORDER BY clause."
>
> Formentlig sker det fordi du glemmer at lave en defalt-sortering.
>
> Hvis du fx skriver:
>
> strSQL = "SELECT * FROM artikler ORDER BY " & Request.Form("sorter") -
> så vil det gå galt når der ikke er noget i dit formobjekt.
>
> Du skal tjekke dit request og så lave en default-værdi hvis der ikke er
> en gyldig værdi.

Ja, det er vist det, der er problemet. Hvordan får jeg lavet en default
sortering?

>> Et tredje problem... Når jeg fx sorterer efter titel eller emne, så
>> sorterer
>> den Å => A i stedet for A => Å. Hvordan kan det ændres?
>
> Mener du at den sorterer faldende (å,ø,æ,z,...,c,b,a) eller at den
> sorterer forkert (typisk å sammen med a, ø sammen med o og æ sammen med
> e). Stigende/faldende styres med ASC/DESC: ORDER BY titel DESC sorterer
> faldende, ORDER BY titel ASC sorterer stigende (ASC er default-værdien
> og kan sagtens udelades).

Nedenstående linie er brugt.

strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering & " DESC"

ValgSortering er fx. dato, emne og titel, som kan vælges i nogle
radiokanpper.

Kan det lade sig gøre, at datoen sorteres efter DESC og de øvrige efter ASC



Casper Bang (04-03-2005)
Kommentar
Fra : Casper Bang


Dato : 04-03-05 06:48

> strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering & " DESC"
>
> ValgSortering er fx. dato, emne og titel, som kan vælges i nogle
> radiokanpper.
>
> Kan det lade sig gøre, at datoen sorteres efter DESC og de øvrige efter
> ASC

if ValgSortering = "dato" then ValgSortering = ValgSortering & " DESC"
strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering



Jens Gyldenkærne Cla~ (04-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-03-05 11:07

Skindbeni skrev:

> Ja, det er vist det, der er problemet. Hvordan får jeg lavet en default
> sortering?

Fx sådan:

Dim orderSQL
orderSQL = " ORDER BY "
Select Case ValgSortering
   Case "dato"
    orderSQL = orderSQL & "dato DESC "
   Case "emne"
    orderSQL = orderSQL & "emne "
   Case "titel"
    orderSQL = orderSQL & "titel "
   Case else
    orderSQL = orderSQL & "dato DESC"
End Select   
strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering & " DESC"


--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Skindbeni (05-03-2005)
Kommentar
Fra : Skindbeni


Dato : 05-03-05 23:58

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:al6hzsb6akhy.dlg@jcdmfdk.invalid...
>> Ja, det er vist det, der er problemet. Hvordan får jeg lavet en default
>> sortering?
>
> Fx sådan:
>
> Dim orderSQL
> orderSQL = " ORDER BY "
> Select Case ValgSortering
> Case "dato"
> orderSQL = orderSQL & "dato DESC "
> Case "emne"
> orderSQL = orderSQL & "emne "
> Case "titel"
> orderSQL = orderSQL & "titel "
> Case else
> orderSQL = orderSQL & "dato DESC"
> End Select
> strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering & " DESC"

Det har desværre ikke hjulpet at indsætte ovenstående.

Min fejl er stadig:
---
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in ORDER BY clause.

/incl/sorter.asp, line 21

---
Hvor koden er (den sidste linie er linie 21)

Dim orderSQL
orderSQL = " ORDER BY "
Select Case ValgSortering
Case "dato"
orderSQL = orderSQL & "dato DESC "
Case "emne"
orderSQL = orderSQL & "emne "
Case "titel"
orderSQL = orderSQL & "titel "
Case else
orderSQL = orderSQL & "dato DESC"
End Select
strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering & " DESC"
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open tempConn
Set rs = myConn.Execute(strSQL)

Og min SQL sætning bliver: SQL-sætning bliver: ORDER BY dato DESC



Jens Gyldenkærne Cla~ (06-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-03-05 21:10

Skindbeni skrev:

> Det har desværre ikke hjulpet at indsætte ovenstående.

Det er jo fordi du ikke anvender koden.


> Dim orderSQL
> orderSQL = " ORDER BY "
> Select Case ValgSortering

[snip]

Ideen med at lave "Select Case ValgSortering" er at håndtere alle
tilfælde af Valgsortering korrekt. Ud fra indholdet af variablen
Valgsortering, tildeler select case-koden en passende værdi til
variablen orderSQL. Du skal så også *bruge* orderSQL i din endelige
sql-sætning.

> strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering &
> " DESC"

- altså i stedet for ovenstående skal der stå:

strSQL = "SELECT * FROM Artikler " & orderSQL


> Og min SQL sætning bliver: SQL-sætning bliver: ORDER BY dato
> DESC

Nej - orderSQL bliver formentlig det du skriver her. Din sql-
sætning er den du kører med myConn.Execute (altså strSQL).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Skindbeni (07-03-2005)
Kommentar
Fra : Skindbeni


Dato : 07-03-05 00:20

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9611D75DBA90Ejcdmfdk@gyrosmod.cybercity.dk...
> Det er jo fordi du ikke anvender koden.
>
> Ideen med at lave "Select Case ValgSortering" er at håndtere alle
> tilfælde af Valgsortering korrekt. Ud fra indholdet af variablen
> Valgsortering, tildeler select case-koden en passende værdi til
> variablen orderSQL. Du skal så også *bruge* orderSQL i din endelige
> sql-sætning.
>
>> strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering &
>> " DESC"
>
> - altså i stedet for ovenstående skal der stå:
>
> strSQL = "SELECT * FROM Artikler " & orderSQL

Problemet løst. Tak for det Jens!



Skindbeni (07-03-2005)
Kommentar
Fra : Skindbeni


Dato : 07-03-05 02:51

"Skindbeni" <ms1@FJERNDETTEskindbeni.dk> skrev i en meddelelse
news:422b9035$0$21508$ba624c82@nntp04.dk.telia.net...
> "Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
> news:Xns9611D75DBA90Ejcdmfdk@gyrosmod.cybercity.dk...
>> Det er jo fordi du ikke anvender koden.
>>
>> Ideen med at lave "Select Case ValgSortering" er at håndtere alle
>> tilfælde af Valgsortering korrekt. Ud fra indholdet af variablen
>> Valgsortering, tildeler select case-koden en passende værdi til
>> variablen orderSQL. Du skal så også *bruge* orderSQL i din endelige
>> sql-sætning.
>>
>>> strSQL = "SELECT * FROM Artikler ORDER BY " & ValgSortering &
>>> " DESC"
>>
>> - altså i stedet for ovenstående skal der stå:
>>
>> strSQL = "SELECT * FROM Artikler " & orderSQL
>
> Problemet løst. Tak for det Jens!

Der var jeg for hurtigt ude.

Nu er fejlen forsvundet, når man loader siden www.skindbeni.dk/artikler.asp
til gengæld virker sorteringsfunktionen ikke længere.

Når der klikkes på sorter, sker der intet



Jens Gyldenkærne Cla~ (07-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-03-05 10:57

Skindbeni skrev:

> Nu er fejlen forsvundet, når man loader siden www.skindbeni.dk/artikler.asp
> til gengæld virker sorteringsfunktionen ikke længere.
>
> Når der klikkes på sorter, sker der intet

Vis lidt mere af din kode. Jeg gætter på at du slet ikke får noget ind i
Valgsortering-variablen. Prøv at løbe koden igennem i hånden og se hvad
der sker linje for linje.

NB: Bruger du Option Explicit (se <http://asp-faq.dk/article/?id=9>)

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Skindbeni (07-03-2005)
Kommentar
Fra : Skindbeni


Dato : 07-03-05 21:45

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:1tb4ixangf436.dlg@jcdmfdk.invalid...
> Skindbeni skrev:
>
>> Nu er fejlen forsvundet, når man loader siden
>> www.skindbeni.dk/artikler.asp
>> til gengæld virker sorteringsfunktionen ikke længere.
>>
>> Når der klikkes på sorter, sker der intet
>
> Vis lidt mere af din kode. Jeg gætter på at du slet ikke får noget ind i
> Valgsortering-variablen.

<%
tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
& Server.MapPath("../database/sider.mdb")

ValgSortering=Request.Form("sortering")

Dim orderSQL
orderSQL = " ORDER BY "
Select Case ValgSortering
Case "dato"
orderSQL = orderSQL & "dato DESC "
Case "emne"
orderSQL = orderSQL & "emne "
Case "titel"
orderSQL = orderSQL & "titel "
Case else
orderSQL = orderSQL & "dato DESC"
End Select
strSQL = "SELECT * FROM Artikler " & orderSQL
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open tempConn
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write "<table width='100%' border='0' cellpadding='1'
cellspacing='1'>"
Do While Not rs.EOF
dtmDato = rs("Dato")
dtmDato = FormatDateTime(dtmDato,vbShortDate)
Response.Write "<tr><td style='width:16%; font-size:9px'>" & dtmDato &
"</td>"
Response.Write "<td style='font-size:11px; width:52%'><a href='" &
rs("adresse") & "'>" & rs("Titel") & "</a></td>"
Response.Write "<td style='font-size:10px; width:20%'><i>" &
rs("Forfatter") & "</i></td>"
Response.Write "<td style='font-size:11px; width:12%'>" & rs("Emne") &
"</td></tr>"
rs.MoveNext
Loop
Response.Write "</table>"
Else
Response.Write "<p>Der er endnu ikke nogle tilgængelige artikle</p>"
End If
myConn.Close
Set myConn = Nothing
%>



Jens Gyldenkærne Cla~ (07-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-03-05 22:09

Skindbeni skrev:

> ValgSortering=Request.Form("sortering")

Prøv at bruge LCase(Request.Form("sortering"))


> Case "dato"
> orderSQL = orderSQL & "dato DESC "

Alternativt kan du rette dine cases så de svarer til din form
(Dato, Titel og Emne).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Skindbeni (08-03-2005)
Kommentar
Fra : Skindbeni


Dato : 08-03-05 00:31

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9612E153DBC34jcdmfdk@gyrosmod.cybercity.dk...
>
>> ValgSortering=Request.Form("sortering")
>
> Prøv at bruge LCase(Request.Form("sortering"))
>
>
>> Case "dato"
>> orderSQL = orderSQL & "dato DESC "
>
> Alternativt kan du rette dine cases så de svarer til din form
> (Dato, Titel og Emne).

Jeg ændrede kun "dato" => "Dato", "titel" => "Titel" og "emne" => "Emne"

Er det rigtigt, at en rettelse fra lille startbogstav til stort startbogstav
kan være så afgørende? (altså at der tages hensyn til små og store
bogstaver)



Casper Bang (08-03-2005)
Kommentar
Fra : Casper Bang


Dato : 08-03-05 09:27

> Er det rigtigt, at en rettelse fra lille startbogstav til stort
> startbogstav kan være så afgørende? (altså at der tages hensyn til små og
> store bogstaver)

Når du sammenligner strenge - så ja. Den er case sensitive.



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste