Avatar billede carpediem Nybegynder
28. maj 2002 - 12:09 Der er 13 kommentarer og
1 løsning

SQL streng

Er der nogen der kender til en SQL streng eller en anden metode jeg kan bruge for at få fat i rækken inden og rækken efter den række jeg er i.

Eller sagt på en anden måde:
Jeg er inde på en nyhed, som er valgt ved:
SELECT * FROM Nyheder WHERE ID = '" & Request("ID") & "'"
Men da jeg skal bruge en Forrige/Næste funktion, har jeg brug for at kunne finde ud af hvilken nyhed der er inden den aktuelle, og hvilken der er umiddelbart efter den aktuelle.
Det skal lige siges at ID´et ikke er et fortløbende nummer med en GUID steng.
Avatar billede -mundi- Nybegynder
28. maj 2002 - 12:10 #1
Du kan oprette et recordset og bruge movenext og moveprev
Avatar billede sbm Nybegynder
28. maj 2002 - 12:12 #2
Jeg går ud fra at du i det mindste har sorteret efter ID, selv om de ikke er fortløbende...

Så kan du vel lave en
SELECT TOP 1 * NYHEDER WHERE ID < '" & Request("ID") & "'
og
SELECT TOP 1 * NYHEDER WHERE ID < '" & Request("ID") & "'
inde på hhv. den forrige og den næste...

(Jeg er ikke lige 100% sikker på syntaxen for min SQL... :-)
Avatar billede sbm Nybegynder
28. maj 2002 - 12:13 #3
Ups. anden linie skulle naturligvis være modificeret til

SELECT TOP 1 * NYHEDER WHERE ID > '" & Request("ID") & "'
Avatar billede sbm Nybegynder
28. maj 2002 - 12:14 #4
*SUK* Jeg er ikke vågen idag.

Glem lige de to forrige....

SELECT TOP 1 * NYHEDER WHERE ID < '" & Request("ID") & "' ORDER BY ID DESC
og
SELECT TOP 1 * NYHEDER WHERE ID < '" & Request("ID") & "' ORDER BY ID ASC
Avatar billede sbm Nybegynder
28. maj 2002 - 12:15 #5
LOL! Det går godt.

select top 1 * FROM nyheder .... osv
Avatar billede sbm Nybegynder
28. maj 2002 - 12:16 #6
Jeg tror bare jeg går hjem i seng. Godnat. :-)
Avatar billede carpediem Nybegynder
28. maj 2002 - 12:25 #7
mundi>> Det var for undgå at skulle køre et helt recordset igennem. Der må være en mulighed for at lave noget der er bedre rent performancemæssigt.

sbm>> Som jeg skrev, så er ID ikke et fortløbende nummer, men en GUID (En unik steng sammensat af tilfældige tal og bogstaver)
Avatar billede sbm Nybegynder
28. maj 2002 - 12:53 #8
Jamen du må da sortere efter et eller andet? Hvis det ikke er tilfældet, har du ikke andre muligheder end at arbejde på hele recordsettet.
Avatar billede sbm Nybegynder
28. maj 2002 - 12:55 #9
Sorterer du efter et dato-felt eller lign? Så skal ORDER BY bare gå på dit datofelt istedet.
Avatar billede sbm Nybegynder
28. maj 2002 - 12:56 #10
Næ.... Du er nødt til at tage den række hvor ID er lig med din ID parameter... Hmmm.... Nej, jeg tror ikke du kan få det gjort uden at hive flere rækker ind samtidig, og så bladre et trin frem eller tilbage.
Avatar billede carpediem Nybegynder
28. maj 2002 - 13:51 #11
Jeg har tilføjet et timestamp på mine nyheder. Og har derefter ladet mig inspirere af sbm.
Resultatet får I når jeg er færdig og det er testet.
Avatar billede webbe Nybegynder
29. maj 2002 - 13:30 #12
Som jeg forstår det vil du lave det i ét recordset.

Måske dette kunne være en løsning:

midtId = request.querystring("id")
prevId = midtId - 1
nextId = midtId + 1

sql = "SELECT * FROM Nyheder WHERE Id="&midtId&" OR ID="&prevId&" OR Id="&nextId
Set rs = Conn.Execute(sql)

Vil lige gøre opmærksom på at det IKKE er testet!
Avatar billede webbe Nybegynder
29. maj 2002 - 13:30 #13
Hmmm - glem det....kan se det tåbelige i det nu. ;0)
Avatar billede carpediem Nybegynder
17. juni 2002 - 14:35 #14
Jeg har tilføjet et tidspunkt på mine nyheder. Ikke som jeg skrev - et timestamp, og har kan derved få rækkefølgen korrekt.

SQL = "SELECT Top 1 ID FROM vw_NyhedsOversigt WHERE Expired = 0 AND Tidsstempel < '" & strTidsstempel & "' ORDER BY StartDato DESC, Tidsstempel DESC"
rs1.Open SQL, conn, 3, 3
  If NOT rs1.EOF Then
    Response.Write "<A HREF=""Nyheder_View.asp?ID=" & rs1("ID") & """ CLASS=""Link"">" & Application("T" & Session("Lang1") & "_379") & "</A>&nbsp;&nbsp;&nbsp;"
  End If
rs1.Close
SQL = "SELECT Top 1 ID FROM vw_NyhedsOversigt WHERE Expired = 0 AND Tidsstempel > '" & strTidsstempel & "' ORDER BY StartDato ASC, Tidsstempel ASC"
rs1.Open SQL, conn, 3, 3
  If NOT rs1.EOF Then
    Response.Write "<A HREF=""Nyheder_View.asp?ID=" & rs1("ID") & """ CLASS=""Link"">" & Application("T" & Session("Lang1") & "_32") & "</A>&nbsp;&nbsp;&nbsp;"
  End If
rs1.Close
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