Jag har en resedatabas som jag vill skriva ut poster ifrån. Först vill jag skriva ut alla resor från punkt A med dess destinationer. Först när villkoret gått i genom hela databasen och inte hittar fler poster med resor från punkt A, ska den börja skriva ut alla resor från punkt B med dess destinationer, osv. Det vill säga att jag vill skapa någon sorts gruppering. Det funkar dock inte att bara skriva ut hela databasen och sortera i bokstavsordning. För då blir det ingen gruppering. Hur ska villkoret se ut?
set rs = connect.execute("select * from travel order by departure asc")
dep = ""
while not rs.eof
if dep <> rs("departure") then
dep = rs("departure")
response.write "Resor från " & dep & "<br>"
end if
'visa övrigt data
rs.movenext
wend
Loopen ska ju skriva ut alla resor från punkt A tills den inte hittar fler poster, och då fortsätta med alla resor från punkt B. Egentligen är det väl två loopar. En som skriver ut resor från alla punkter och en som kollar om det finns fler resor från en punkt, fast vid olika tillfällen. I så fall, ska ju dessa skrivas ut innan loop ett går vidare med att skriva ut resorna från tex. punkt B.
Den exempelkod LarsG skrivit ser alldeles utmärkt ut i mina ögon...
Du läser upp datat från databasen och sorterar på det fält som motsvarar "Punkt A", "Punkt B" i ditt exempel - det som LarsG kallar "departure". Så loopar du igenom resultatsetet.
För varje gång du får ett nytt värde i "departure" skriver du gruppens rubrik, "Resor från punkt A:", "Resor från punkt B:", etc, dvs
response.write "Resor från " & dep & "<br>"
i LarsGs exempel.
För varje post i setet skriver du sedan det/de fält som motsvarar informationen "Resa 1", "Resa 2" , etc, i ditt exempel. Det ska du göra där LarsG skrivit "visa övrigt data". Där borde det alltså stå nå't i stil med
response.write "Resa till " & rs("destination") & "<br>"
Är inte detta lösningen på ditt problem får du nog beskriva problemet lite mer ingående... ;)
Jaha, nu funkar det. Då kommer nästa fråga. Om jag har två resor från punkt A, fast vid olika tider. Hur ska jag då skriva för att skriva ut dem enligt följande:
Resor från punkt A:
> Resa 1 = 10.15
= 12.30
Och inte så här:
Resor från punkt A:
> Resa 1 = 10.15
> Resa 1 = 12.30
Då får du bygga på LarsGs kod med ytterligare en variabel där du håller "destination" så att den bara skrivs ut när det blir en förändring. Så här nånting:
set rs = connect.execute("select * from travel order by departure, [red]destination[/red]")
dep = ""
while not rs.eof
if dep <> rs("departure") then
dep = rs("departure")
[red]dest = ""[/red]
response.write "Resor från " & dep & "<br>"
end if
[red]if dest <> rs("destination") then
dest = rs("destination")
response.write dest & " "
end if[/red]
'visa övrigt data
[red]response.write "= " & rs("dep_time") & "<br>"[/red]
rs.movenext
wend
Tänk vad mycket hjälp man kan få på så kort tid... Det här är en riktigt bra sida. Fantastiskt! Tack alla riktiga programmerare. Själv leker man ju bara lite framför tangenterna.
255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849