webForumDet fria alternativet

Plocka ut bara första posten ur ett recordset

ASP

11 svar · 376 visningar · startad av ENo

Medlem sedan maj 200324 inlägg
Frågan#1

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

Medlem sedan sep. 20026 425 inlägg
#2

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>
Medlem sedan sep. 20026 425 inlägg
#3

Kanske denna kod blir bättre:

<%
Dim Recs, i, head
[red]Recs = RsNews.Recordcount[/red]
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..

Medlem sedan maj 200324 inlägg
#4

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...?

Medlem sedan aug. 20003 575 inlägg
#5

Set Rs = Server.CreateObject("ADODB.Recordset")
Innan sql satsen tror jag

Medlem sedan maj 200324 inlägg
#6

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
Medlem sedan feb. 20034 441 inlägg
#7

Men har du inte stängt ditt RS innan då?

Kolla så du inte har ngra:

rs = NOTHING
rs = ""

Eller liknande innan...

Medlem sedan maj 200324 inlägg
#8

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>
Medlem sedan sep. 20026 425 inlägg
#9

Ooops, det ska vara:

RsNews.Recordcount

Du har ju inte nån variabel som heter Rs.. :D

Klick. Den röda koden.. :)

Medlem sedan maj 200324 inlägg
#10

Ja visst, naturligtvis... ;-)

Men då får jag en tom sida.....

Medlem sedan sep. 20026 425 inlägg
#11

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å..

Medlem sedan maj 200324 inlägg
#12

Nope samma resultat. Tom sida...

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)