PDA

View Full Version : Plocka ut bara första posten ur ett recordset


ENo
2003-05-14, 08:42
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&auml;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..

ENo
2003-05-14, 09:49
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

ENo
2003-05-14, 10:41
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...

ENo
2003-05-14, 11:19
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.. :)

ENo
2003-05-14, 11:44
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å..

ENo
2003-05-14, 12:35
Nope samma resultat. Tom sida...