webForumDet fria alternativet
Logga in / Bli medlem

Recset "sortera" data.

ASP

5 svar · 159 visningar · startad av SannyW

Medlem sedan jan. 2003438 inlägg
Trådstart#1

Behöver hjälp med hämtning av data från databas, vill första hämta 1-3 på ett ställe på sidan. Lite längre ner vill jag sedan visa data 4-8 från samma databas.
Vad gör jag för fel???

#################Vill visa 1-3 sorterade på datum:##############

<%

			Set Connect = Server.CreateObject("ADODB.Connection") 
			Connect.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";"

			Set RecSet = Server.CreateObject("ADODB.Recordset")

			Addera = "SELECT \* FROM nyheter ORDER BY DATUM DESC"
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
			  %\>
			 \<%
			  X=0
			
			  DO UNTIL RecSet.EOF OR X=3
			  %\>

<tbody>
<tr>
<td><a href="http://"><b><span class="header2"><%=RecSet("rubrik")%></span></b></a><br>
<img src="1x1_tom.gif" alt="" width="1" height="1" border="0"><br>
<%If Len(RecSet("nyhet")) > 150 Then%><%=Left(Replace(RecSet("nyhet"),vbCrLf,"<br>"),150)%>...<%Else%><%=Replace(RecSet("nyhet"),vbCrLf,"<br>")%><%End If%><br>
<span class="gray"><%=FormatDateTime(RecSet("datum"),2)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>">Läs mer</a><br>
</td></tr></tbody>

  \<%
			  X=X+1
			  RecSet.MOVENEXT
			  LOOP
			  
			RecSet.CLOSE
			Connect.CLOSE
			Set RecSet = nothing
			Set Connect = nothing
			 %\>

################Vill sedan visa 4-8 sorterade på datum:###################

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";"

			Set RecSet = Server.CreateObject("ADODB.Recordset")

			Addera = "SELECT \* FROM nyheter ORDER BY DATUM DESC"
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
			%\>
  
  \<%
			  X=4
			  RecSet.MOVENEXT
			  DO UNTIL RecSet.EOF OR X=9 
			  %\>

<tbody>
<tr>
<td><span class="gray"><%=FormatDateTime(RecSet("DATUM"),vbshortdate)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>"><%=RecSet("RUBRIK")%></a>

  \<%
			  X=X+1
			  RecSet.MOVENEXT
			  LOOP
			  
			RecSet.CLOSE
			Connect.CLOSE
			Set RecSet = nothing
			Set Connect = nothing
			%\>
Medlem sedan dec. 20003 563 inlägg
#2

Utan att ändra allt för mycket i din kod:

<% 

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";" 

Set RecSet = Server.CreateObject("ADODB.Recordset") 

Addera = "SELECT TOP 8 * FROM nyheter ORDER BY DATUM DESC" 
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 

X=0 

DO UNTIL RecSet.EOF 
select case x
case 0, 1, 2
' HÄR HAMNAR 1, 2, 3
%> 
<tbody> 
<tr> 
<td><a href="http://"><b><span class="header2"><%=RecSet("rubrik")%></span></b></a><br> 
<img src="1x1_tom.gif" alt="" width="1" height="1" border="0"><br> 
<%If Len(RecSet("nyhet")) > 150 Then%><%=Left(Replace(RecSet("nyhet"),vbCrLf,"<br>"),150)%>...<%Else%><%=Replace(RecSet("nyhet"),vbCrLf,"<br>")%><%End If%><br> 
<span class="gray"><%=FormatDateTime(RecSet("datum"),2)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>">Läs mer</a><br> 
</td></tr></tbody> 
<% 
case else
' HÄR HAMNAR NR 4, 5, 6, 7, 8
%>
<tbody> 
<tr> 
<td><span class="gray"><%=FormatDateTime(RecSet("DATUM"),vbshortdate)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>"><%=RecSet("RUBRIK")%></a> 
<%
X=X+1 
RecSet.MOVENEXT 
LOOP 

RecSet.CLOSE 
Connect.CLOSE 
Set RecSet = nothing 
Set Connect = nothing 
%>
Medlem sedan maj 20018 027 inlägg
#3

Eftersom du stänger recsetet efter de första tre, och sedan öppnar det och frågar igen, får du de fyra första. Pröva att inte stänga det, utan fortsätta använda samma recset när du ska ha de fyra nästföljande. Du har ju redan efter första frågan alla raderna i ditt recset.

Medlem sedan jan. 2003438 inlägg
#4

Tack för Era svar, uppskattar det verkligen att ni hjälper mig. Men jag lämnade ute några rader och de strular nog till det för mig. Så uppdaterar, med allt:

<table width="100%" border="0" cellspacing="2" cellpadding="10" bgcolor="#FFFFFF">
<tr>
<td valign="top">
<% IF Request.QueryString = "" THEN
%>

<%

			Set Connect = Server.CreateObject("ADODB.Connection") 
			Connect.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";"

			Set RecSet = Server.CreateObject("ADODB.Recordset")

			Addera = "SELECT TOP 8 \* FROM nyheter ORDER BY DATUM DESC"
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
			    %\>
			 \<%
			  X=0
			
			  DO UNTIL RecSet.EOF OR X=3
			  %\>

<tbody>
<tr>
<td><a href="http://"><b><span class="header2"><%=RecSet("rubrik")%></span></b></a><br>
<img src="1x1_tom.gif" alt="" width="1" height="1" border="0"><br>
<%If Len(RecSet("nyhet")) > 150 Then%><%=Left(Replace(RecSet("nyhet"),vbCrLf,"<br>"),150)%>...<%Else%><%=Replace(RecSet("nyhet"),vbCrLf,"<br>")%><%End If%><br>
<span class="gray"><%=FormatDateTime(RecSet("datum"),2)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>">Läs mer</a><br>
</td></tr></tbody>

  \<%
			  X=X+1
			  RecSet.MOVENEXT
			  LOOP
			  
			  RecSet.CLOSE
			Connect.CLOSE
			Set RecSet = nothing
			Set Connect = nothing
			END IF %\>

<% IF Request.QueryString("do") = "read" THEN
%>
<%
id = Request.QueryString("id")

Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb")
SQL = "SELECT * From nyheter WHERE id = " &Request.QueryString("id")

rs.Open SQL, MinCon
%>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100%"><b><%=rs("rubrik")%></b>  <font color="#CCCCCC">[<em><%=FormatDateTime(rs("DATUM"),vbShortdate)%></em>]</font>
</td>
</tr>
<tr>
<td width="100%"><br><%=rs("nyhet")%>
</td></tr>
<tr><td width="100%"><br><br><a href="default.asp?path=main&DO=all">Tillbaka till nyhetsarkivet</a></td></tr>
</table>

    \<p\>
      \<%

rs.Close
MinCon.Close
END IF
%>

</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td bgcolor="#000089" class="white"><FONT COLOR="FFFFFF">_<b>FLER NYHETER</b></FONT></td>
<td bgcolor="#000089" align="right"> </td>
</tr></tbody></table>

<table border="0" cellpadding="1" cellspacing="1" width="100%">

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";"

			Set RecSet = Server.CreateObject("ADODB.Recordset")

			Addera = "SELECT \* FROM nyheter ORDER BY DATUM DESC"
			RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
			%\>
  
  \<%
			  X=4
			  RecSet.MOVENEXT
			  DO UNTIL RecSet.EOF OR X=9 
			  %\>

<tbody>
<tr>
<td><span class="gray"><%=FormatDateTime(RecSet("DATUM"),vbshortdate)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>"><%=RecSet("RUBRIK")%></a>

  \<%
			  X=X+1
			  RecSet.MOVENEXT
			  LOOP
			  
			RecSet.CLOSE
			Connect.CLOSE
			Set RecSet = nothing
			Set Connect = nothing
			%\>             

<br><br> <a href="default.asp?path=nyheter&DO=all"><b>nyhetsarkivet</b></a></td>
</tr></tbody></table>

Medlem sedan dec. 20003 563 inlägg
#5

Nu ändrar jag ännu mindre i koden ;)

table width="100%" border="0" cellspacing="2" cellpadding="10" bgcolor="#FFFFFF"> 
<tr> 
<td valign="top"> 
<% IF Request.QueryString = "" THEN 
%> 

<% 

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";" 

Set RecSet = Server.CreateObject("ADODB.Recordset") 

Addera = "SELECT TOP 8 * FROM nyheter ORDER BY DATUM DESC" 
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 
%> 
<% 
X=0 

DO UNTIL RecSet.EOF OR X=3 
%> 

<tbody> 
<tr> 
<td><a href="http://"><b><span class="header2"><%=RecSet("rubrik")%></span></b></a><br> 
<img src="1x1_tom.gif" alt="" width="1" height="1" border="0"><br> 
<%If Len(RecSet("nyhet")) > 150 Then%><%=Left(Replace(RecSet("nyhet"),vbCrLf,"<br>"),150)%>...<%Else%><%=Replace(RecSet("nyhet"),vbCrLf,"<br>")%><%End If%><br> 
<span class="gray"><%=FormatDateTime(RecSet("datum"),2)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>">Läs mer</a><br> 
</td></tr></tbody> 

<% 
X=X+1 
RecSet.MOVENEXT 
LOOP 

RecSet.CLOSE 
Connect.CLOSE 
Set RecSet = nothing 
Set Connect = nothing 
END IF %> 

<% IF Request.QueryString("do") = "read" THEN 
%> 
<% 
id = Request.QueryString("id") 

Set MinCon = Server.CreateObject("ADODB.Connection") 
Set rs = Server.CreateObject("ADODB.Recordset") 
MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb") 
SQL = "SELECT * From nyheter WHERE id = " &Request.QueryString("id") 

rs.Open SQL, MinCon 
%> 
<table width="100%" border="0" cellpadding="0" cellspacing="0"> 
<tr> 
<td width="100%"><b><%=rs("rubrik")%></b>  <font color="#CCCCCC">[<em><%=FormatDateTime(rs("DATUM"),vbShortdate)%></em>]</font> 
</td> 
</tr> 
<tr> 
<td width="100%"><br><%=rs("nyhet")%> 
</td></tr> 
<tr><td width="100%"><br><br><a href="default.asp?path=main&DO=all">Tillbaka till nyhetsarkivet</a></td></tr> 
</table> 

<p> 
<% 
rs.Close 
MinCon.Close 
END IF 
%> 

</td> 
</tr> 
</table> 
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td bgcolor="#000089" class="white"><FONT COLOR="FFFFFF">_<b>FLER NYHETER</b></FONT></td> 
<td bgcolor="#000089" align="right"> </td> 
</tr></tbody></table> 

<table border="0" cellpadding="1" cellspacing="1" width="100%"> 

<% 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/site.mdb")&";" 

Set RecSet = Server.CreateObject("ADODB.Recordset") 

Addera = "SELECT * FROM nyheter ORDER BY DATUM DESC" 
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 
%> 

<% 
x = 4
RecSet.Move 4
DO UNTIL RecSet.EOF OR X=9 
%> 
<tbody> 
<tr> 
<td><span class="gray"><%=FormatDateTime(RecSet("DATUM"),vbshortdate)%></span> <a href="default.asp?path=main&DO=read&id=<%=RecSet("id")%>"><%=RecSet("RUBRIK")%></a> 

<% 
X=X+1 
RecSet.MOVENEXT 
LOOP 

RecSet.CLOSE 
Connect.CLOSE 
Set RecSet = nothing 
Set Connect = nothing 
%> 

<br><br> <a href="default.asp?path=nyheter&DO=all"><b>nyhetsarkivet</b></a></td> 
</tr></tbody></table>
Medlem sedan jan. 2003438 inlägg
#6

Grymt Cyprus, tackar så mycket för lösningen. Det funkar kanon....

271 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)