30. september 2003 - 14:58Der er
14 kommentarer og 1 løsning
to nyeste poster i en tabel af hver slags
Hej
Jeg har en tabel med aflæsninger af målere hvor jeg gerne vil have valgt de to nyeste måleraflæsninger for hver vogn. Tabellen ser således ud i princippet.
Der er tale om en Access database, og der er tale om et vilkårligt antal vogne.
Det jeg skal bruge er at for hvert vognnummer skal vises de to nyeste aflæsninger. Eksempelvis for vogn 233 vises aflæsningerne fra d. 4/8 og d. 8/8. Håber det giver mening.
Til bobbedude: din metode giver jo kun de to nyeste aflæsninger der er i hele tabellen.
set rs = Server.CreateObject("ADODB.RecordSet") Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("./db1.mdb")
strSQL = "Select * from tblData where vogn = " & strvogn & " order by dato desc" rs.Open strSQL, Conn rs.movefirst
i = 0
do While Not rs.EOF if i <> cint(strnum) then response.write "Vogn: " & rs("vogn") & ", Dato: " & rs("dato") & ", Måler: " & rs("maaler") & "<br>" i = i + 1 end if rs.movenext Loop
rs.close set rs = nothing conn.close set conn = nothing
en lidt forbedret udgave med instrukser og validering af værdier:
<% option explicit
response.write "<font face='tahoma' size='2'>"
if ( (isNumeric(request.querystring("vogn"))) and (request.querystring("vogn") <> "") and (isNumeric(request.querystring("num"))) and (request.querystring("vogn") <> "") ) then
set rs = Server.CreateObject("ADODB.RecordSet") Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("./db1.mdb")
strSQL = "Select * from tblData where vogn = " & strvogn & " order by dato desc" rs.Open strSQL, Conn rs.movefirst
i = 0
do While Not rs.EOF if i <> (strnum) then response.write "Vogn: " & rs("vogn") & ", Dato: " & rs("dato") & ", Måler: " & rs("maaler") & "<br>" i = i + 1 end if rs.movenext Loop
rs.close set rs = nothing conn.close set conn = nothing else response.write "Afvikles med: dinfil.asp?vogn=<b>VOGN_NUMMER</b>&num=<b>ANTAL_POSTER</b>,<br>" response.write "hvor <b>VOGN_NUMMER</b> og <b>ANTAL_POSTER</b> er tal."
<font style="font-family: tahoma; font-size: 12px;"> <div style="border-style: dashed; border-width: 1px;"> <font size="3"><u>Instruktioner:</u></font> <br><br> * Afvikles med: index.asp?vogn=<b>VOGN_NUMMER</b>&num=<b>ANTAL_POSTER</b>,<br> hvor <b>VOGN_NUMMER</b> og <b>ANTAL_POSTER</b> er tal.<br><br> * Hvis du bruger scriptet i en anden fil end 'index.asp' retter du bare linien til. <br><br> * Hvis variablen 'num' bliver sat til et tal under 0 (f.eks. -1) eller et tal<br> større end vognens max antal records, vises alle records for den valgte vogn. <br> </div> <br><br>
Udtræk fra databasen: <br><br>
<%
if ( (isNumeric(request.querystring("vogn"))) and (request.querystring("vogn") <> "") and (isNumeric(request.querystring("num"))) and (request.querystring("vogn") <> "") ) then
set rs = Server.CreateObject("ADODB.RecordSet") Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("./db1.mdb") strSQL = "Select * from tblData where vogn = " & strvogn & " order by dato desc" rs.Open strSQL, Conn
if (not rs.bof) and (not rs.eof) then dim i i = 0 rs.movefirst do While Not rs.EOF if i <> cint(strnum) then response.write "Vogn: " & rs("vogn") & ", Dato: " & rs("dato") & ", Måler: " & rs("maaler") & "<br>" & vbcrlf i = i + 1 end if rs.movenext Loop
rs.close set rs = nothing conn.close set conn = nothing else response.write "Informationer om vogn '<b>" & strvogn & "</b>' blev ikke fundet!" & vbcrlf end if else response.write "Der er ikke fortaget noget valg. Se instruktionerne." & vbcrlf end if %>
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.