/ 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
ORDER BY - en værdi udenfor databasen?
Fra : Morten


Dato : 29-06-04 22:30

Hejsa

Jeg skal have listet en række emner fra en database i en bestemt rækkefølge,
mit problem er at den værdi de skal sorteres efter ikke står i selve
databasen.

De skal sorteres efter antal dage til en dato i databasen (var =
datediff("d", date, slut-dato)), og det kan derfor variere efter hvad dag
det er ...


Kan det lade sig gøre at sortere dem efter man har hentete dem med sin SQL
sætning - eller er der en anden måde hvorpå man kan sortere dem efter en
værdi, når den ikke står i databasen, men først skal udregnes?






 
 
Jens Gyldenkærne Cla~ (29-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-06-04 23:54

Morten skrev:

> De skal sorteres efter antal dage til en dato i databasen (var
> = datediff("d", date, slut-dato)), og det kan derfor variere
> efter hvad dag det er ...

Det antal dage du vil sortere efter kan databasen fint regne ud.
Hvis det er Access der er din database, kan du faktisk bruge din
kode næsten som den står:

SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-dato])

(slut-dato skal i kantede paranteser på grund af bindestregen).

Jeg kan ikke helt huske om Access forventer anførselstegn om første
parameter til datediff eller ej - du kan evt. prøve begge dele.


> Kan det lade sig gøre at sortere dem efter man har hentete dem
> med sin SQL sætning

Ja, men det kan ikke anbefales. Sorteringer bør - hvis det
overhovedet er muligt - foretages af databasen. Det er mange gange
hurtigere end sortering i asp.
--
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

Henrik Nygaard (30-06-2004)
Kommentar
Fra : Henrik Nygaard


Dato : 30-06-04 11:01

> SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-dato])

Jeg har prøvet at putte det ind i en SELECT med WHERE istedet for
ORDER men kan ikke få det til at virke.

AND where DateDiff("d",rs("dato"),dato) >100

Det er kun de records som er under 100 dage forskellige som skal komme
frem. rs("dato") kommer fra en tidligere strSQL og dato kommer fra
denne. De henter fra samme tabel i Access.

Please help....

Henrik

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Mikoangelo (30-06-2004)
Kommentar
Fra : Mikoangelo


Dato : 30-06-04 11:58

[On on, 30 jun 2004 10:01:23 GMT, "Henrik Nygaard" wrote (link:
<news:40e28f73$0$23878$14726298@news.sunsite.dk>)]:
[deletia]
> AND where DateDiff("d",rs("dato"),dato) >100

Det skal nok være "...And where DateDiff('d'," & rs("dato") & ",
dato..."


--
Mikoangelo - webmaster of
http://harrypotter.lk-data.net
Scrambled email (ROT-13):
uneelcbggre [on] yx [hyphen] qngn [spot] qx

Jens Gyldenkærne Cla~ (30-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-06-04 21:58

Henrik Nygaard skrev:

> AND where DateDiff("d",rs("dato"),dato) >100

Som Mikoangelo er inde på er ovenstående ikke brugbart - du kan
ikke bare sætte en variabelværdi ind uden at bruge
strengsammensætning. Men selv om du så får sat den rigtige dato
ind, har du det sædvanlige problem med at datoer let kan
fejltolkes. Det er en god ide at undgå at den type fejl kan opstå.

> Det er kun de records som er under 100 dage forskellige som
> skal komme frem. rs("dato") kommer fra en tidligere strSQL og
> dato kommer fra denne. De henter fra samme tabel i Access.

Hvad er grunden til at du ikke klarer det hele i én forespørgsel?
Prøv at fortælle lidt mere om hvad du skal udvælge (jeg forstår
ikke helt "under 100 dage forskellige")
--
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

Morten (04-07-2004)
Kommentar
Fra : Morten


Dato : 04-07-04 23:16

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns951892CDBC8jcdmfdk@gyrosmod.cybercity.dk...

> > Kan det lade sig gøre at sortere dem efter man har hentete dem
> > med sin SQL sætning
>
> Ja, men det kan ikke anbefales. Sorteringer bør - hvis det
> overhovedet er muligt - foretages af databasen. Det er mange gange
> hurtigere end sortering i asp.

Hvis det så ikke er muligt - hvordan ville man så kunne gøre dette ?





Jens Gyldenkærne Cla~ (05-07-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-07-04 09:11

Morten skrev:

> Hvis det så ikke er muligt - hvordan ville man så kunne gøre
> dette ?

Det er ikke noget jeg har erfaring med, men man kan godt sortere et
array i asp. Her er et enkelt resultat fra en googling:
<http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=4&txtCodeId=6495>

Man kan få et postsæt over i et array med getrows-metoden. Men er
du 110 % sikker på at sql-sortering ikke er mulig?
--
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

Morten (05-07-2004)
Kommentar
Fra : Morten


Dato : 05-07-04 15:24

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns951D67901F1CCjcdmfdk@gyrosmod.cybercity.dk...
>
> Man kan få et postsæt over i et array med getrows-metoden. Men er
> du 110 % sikker på at sql-sortering ikke er mulig?

Jeg kan ikke få det til at virke iværtfald - jeg prøvede med det du skrev:

query = "SELECT * FROM database ORDER BY" & DateDiff("d", date(), slutdato)

Problemet er at den jo ikke ved hvad "slutdato" er - den står jo inde i
selve databasen, og denne sætning skal jo bruges før jeg kan åbne databasen
.... det er det der er mit problem!




Jens Gyldenkærne Cla~ (05-07-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-07-04 21:28

Morten skrev:

> Jeg kan ikke få det til at virke iværtfald

Ah - men det er altså ikke nødvendigvis det samme som at det ikke
kan løses.

> - jeg prøvede med det du skrev:
>
> query = "SELECT * FROM database ORDER BY" & DateDiff("d",
> date(), slutdato)

Nej - det var ikke hvad jeg skrev. Se linjen her igen:

SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-dato])

Puttet ind i en asp-variabel ser det sådan ud:

query = "SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-
dato])"

(slet linjeskiftet)

Pointen er at Datediff-funktionskaldet skal håndteres af databasen
- ikke af asp. Derfor skal man _ikke_ bruge strengsammensætning i
asp.
--
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

Morten (05-07-2004)
Kommentar
Fra : Morten


Dato : 05-07-04 23:11

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns951DE48EC5B0Fjcdmfdk@gyrosmod.cybercity.dk...
>
> Pointen er at Datediff-funktionskaldet skal håndteres af databasen
> - ikke af asp. Derfor skal man _ikke_ bruge strengsammensætning i
> asp.

Arr, det havde jeg ikke lige luret - jeg troede egentlig ikke at man kunne
bruge funktioner som DateDiff i SQL - kun i ASP.
Men jeg prøvede det du skrev og det virker perfekt, så du har løst et stort
problem for mig og jeg takker mange gange!
Min sætning kom i øvrigt til at se sådan ud:

query = "SELECT * FROM abonnement ORDER BY DateDiff('d', date(),
(DateAdd('m', -abonnement.opsigelse, abonnement.slutdato)))"

(uden linie-skift)




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

Månedens bedste
Årets bedste
Sidste års bedste