View Full Version : Plocka ut bara första posten ur ett recordset
Hej.
Detta är mitt första inlägg, dvs fråga....
Jag undrar om det finns nån som kan hjälpa mig med en liten sak.
Jag har ett recordset där jag läer upp rader med kategorier och nyheter under respektive kategori, det jag vill göra men inte får till är att för varje nyhet skriva ut kategorirubriken 1 gång endast... Så här ser det ut....:
==================================
<%
strSql = "SELECT kategori, id FROM kategorier"
Set rsCat = Connect.Execute(strSql)
%>
<table border="0" width="150" cellpadding="2" cellspacing="0">
<%Do While Not rsCat.EOF %>
<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>
<%
strSql = "SELECT id, rubrik, kategori, ingress FROM nyheter WHERE visa=1 and kategori_id = " & rsCat("id")
Set rsNews = Connect.Execute(strSql)
%>
<%
Do While Not rsNews.EOF
%>
<%
If (rsNews("id") <> "") Then
'Response.write rsCat("Kategori")
Response.write"<tr><th>" & rsCat("kategori") & "</tr></th>"
Response.Write "<tr><td class=statusLeftRight><b>" & rsNews("Rubrik") & "</b>" & " </td></tr><tr><td class=statusBottomandright>" & rsNews("ingress") & "<br>" &_
"<a href=news/nyhet.asp?id=" & rsNews("id") & "&kategori=" & rsNews("kategori") & ">" & "Läs mer</a></td></tr>"
'Response.write "<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>"
End if%>
<%
rsNews.MoveNext
Loop %>
<% rsNews.Close
Set rsNews = Nothing
RsCat.MoveNext
Loop
rsCat.Close
Set rsCat = Nothing
%>
</table>
=================================
Är det nån som kan hjälp till???
MVH Erik
m_soderlund
2003-05-14, 09:02
Välkommen till wF!!
Oj, din kod verkar lite grötig och ineffektiv.. Ett tips så länge: använd kod-taggen här på wF, samt skippa alla dina <% och %>.
<%
strSql = "SELECT kategori, id FROM kategorier"
Set rsCat = Connect.Execute(strSql)
%>
<table border="0" width="150" cellpadding="2" cellspacing="0">
<%Do While Not rsCat.EOF %>
<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>
<%
strSql = "SELECT id, rubrik, kategori, ingress FROM nyheter WHERE visa=1 and kategori_id = " & rsCat("id")
Set rsNews = Connect.Execute(strSql)
Do While Not rsNews.EOF
If (rsNews("id") <> "") Then
'Response.write rsCat("Kategori")
Response.write"<tr><th>" & rsCat("kategori") & "</tr></th>"
Response.Write "<tr><td class=statusLeftRight><b>" & rsNews("Rubrik") & "</b>" & " </td></tr><tr><td class=statusBottomandright>" & rsNews("ingress") & "<br>" &_
"<a href=news/nyhet.asp?id=" & rsNews("id") & "&kategori=" & rsNews("kategori") & ">" & "Läs mer</a></td></tr>"
'Response.write "<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>"
End if
rsNews.MoveNext
Loop
rsNews.Close
Set rsNews = Nothing
RsCat.MoveNext
Loop
rsCat.Close
Set rsCat = Nothing
%>
</table>
m_soderlund
2003-05-14, 09:10
Kanske denna kod blir bättre:
<%
Dim Recs, i, head
Recs = RsNews.Recordcount
For i = 1 To Recs
If (rsNews("id") <> "") Then
'Response.write rsCat("Kategori")
Response.write"<tr><th>" & rsCat("kategori") & "</tr></th>"
If i = 1 Then
Head = RsNews("Rubrik")
Else Head = ""
End If
Response.Write "<tr><td class=statusLeftRight><b>" & Head & "</b>" & " </td></tr><tr><td class=statusBottomandright>" & rsNews("ingress") & "<br>" &_
"<a href=news/nyhet.asp?id=" & rsNews("id") & "&kategori=" & rsNews("kategori") & ">" & "Läs mer</a></td></tr>"
'Response.write "<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>"
End if
Next
%>Den ska in mellan Set rsNews = Connect.Execute(strSql) och RsNews.Close. Hoppas att det fungerar..
För det första, tack för tipsen...;-)
Jag är som sagt ny så det tar lite tid innan man kört in sig på alla finesser...
Nja jag får lite fel: Object required: ''
På raden: Recs = Rs.Recordcount
Vad saknas...?
Nickemannen
2003-05-14, 10:19
Set Rs = Server.CreateObject("ADODB.Recordset")
Innan sql satsen tror jag
Det stämmer nog men nu får jag: Åtgärden är inte tillåten när objektet är stängt. På raden:
Recs = Rs.Recordcount
MickeA.com
2003-05-14, 11:01
Men har du inte stängt ditt RS innan då?
Kolla så du inte har ngra:
rs = NOTHING
rs = ""
Eller liknande innan...
Nope inget sånt... Jag skickar koden igen så får vi se om du hittar nåt....
<%
strSql = "SELECT kategori, id FROM kategorier"
Set rsCat = Connect.Execute(strSql)
%>
<table border="0" width="150" cellpadding="2" cellspacing="0">
<%
Do While Not rsCat.EOF
'Response.write rsCat("kategori")
%>
<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>
<%
Set Rs = Server.CreateObject("ADODB.Recordset")
strSql = "SELECT id, rubrik, kategori, ingress FROM nyheter WHERE visa=1 and kategori_id = " & rsCat("id")
Set rsNews = Connect.Execute(strSql)
%>
<%
Dim Recs, i, head
Recs = Rs.Recordcount
For i = 1 To Recs
If (rsNews("id") <> "") Then
'Response.write rsCat("Kategori")
Response.write"<tr><th>" & rsCat("kategori") & "</tr></th>"
If i = 1 Then
Head = RsNews("Rubrik")
Else Head = "Inget"
End If
Response.Write "<tr><td class=statusLeftRight><b>" & Head & "</b>" & " </td></tr><tr><td class=statusBottomandright>" & rsNews("ingress") & "<br>" &_
"<a href=news/nyhet.asp?id=" & rsNews("id") & "&kategori=" & rsNews("kategori") & ">" & "Läs mer</a></td></tr>"
End if
Next
%>
<%
rsNews.Close
Set rsNews = Nothing
RsCat.MoveNext
Loop
rsCat.Close
Set rsCat = Nothing
%>
</table>
m_soderlund
2003-05-14, 11:36
Ooops, det ska vara:
RsNews.RecordcountDu har ju inte nån variabel som heter Rs.. :D
Klick (http://www.webforum.nu/showthread.php?s=&postid=631845#post631845). Den röda koden.. :)
Ja visst, naturligtvis... ;-)
Men då får jag en tom sida.....
m_soderlund
2003-05-14, 11:46
Så här kanske:
<%
Dim Recs, i, head
Recs = RsNews.Recordcount
Do While Not rsNews.EOF
For i = 1 To Recs
If (rsNews("id") <> "") Then
'Response.write rsCat("Kategori")
Response.write"<tr><th>" & rsCat("kategori") & "</tr></th>"
If i = 1 Then
Head = RsNews("Rubrik")
Else Head = ""
End If
Response.Write "<tr><td class=statusLeftRight><b>" & Head & "</b>" & " </td></tr><tr><td class=statusBottomandright>" & rsNews("ingress") & "<br>" &_
"<a href=news/nyhet.asp?id=" & rsNews("id") & "&kategori=" & rsNews("kategori") & ">" & "Läs mer</a></td></tr>"
'Response.write "<tr><td><img src=../images/spacer.gif width=1 height=1 border=0 alt=></td></tr>"
End if
Next
RsNews.Movenext
Loop
%>Med reservation för att koden är ganska slarvig ändå..
Nope samma resultat. Tom sida...
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.