webForumDet fria alternativet

Räkna kommentarer... fel i COUNT?

ASP

5 svar · 791 visningar · startad av Johanneshov

Medlem sedan nov. 200387 inlägg
Frågan#1

Kör koden rakt av:

<% If Request.QueryString("do")="visa" Then

Set Conn	= Server.CreateObject("ADODB.Connection")
Set Recset = Server.CreateObject("ADODB.Recordset")
Set Recset2 = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/nyheter.mdb")

SQL = "SELECT * From artiklar Order By Datum DESC"
Recset.Open SQL, Conn
x = 0 
If RecSet.EOF Then%>
<br>Inga reportage!

<% Else RecSet.MoveFirst 
%>  
<br>Listar de tio senaste reportagena!<br><br><%
Do While Not RecSet.EOF AND x<10
x = x+ 1

SQL2 = "SELECT count(*) as antal from artikel_kommentar Where artikel = "&RecSet("id")
set Recset2 = Conn.execute(SQL2)
%>

	<table border="0" width="90%" cellpadding="0" cellspacing="0" style="border-collapse: collapse" class="celltext">
  		<tr>
	    	<td width="75%" class="rubrik" style="font-weight: bold"><%=Recset("rubrik")%></td>
    		<td width="25%"><%=FormatDateTime(Recset("datum"),2)%>&nbsp;</td>
  		</tr>
	  	<tr>
	    	<td width="100%" colspan="2"><%=Recset("ingress")%><br><a href="reportage.asp?do=visareportage&reportageid=<%=Recset("id")%>">Läs hela!</a>&nbsp;</td>
  		</tr>
		<tr>
			<td class="smalltext" colspan="2">Denna artikel är läst: <%=Recset("antalklick")%> ganger och har <%Response.write antal%> kommentarer.</td>
		</tr>
	</table><br>
<%
antal = 0
Recset2.Close
Set Recset2 = Nothing
Recset.MoveNext
Loop
Recset.Close
Conn.Close

Set Recset = Nothing
Set Conn = Nothing

End If
End if
%>

Problemet är att ovan kod ger antal för alla utskrifter lika med antalet count(*) som sker vid första db-läsingen.

Har jag skrivit Count fel?
Har jag missat fnuttarna??? ;-)
Jag stegrar ju Recset till en ny ID?

Hilfe!

MVH
Johanneshov

Medlem sedan dec. 200012 464 inlägg
#2
<% If Request.QueryString("do")="visa" Then

Set Conn	= Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/nyheter.mdb")

SQL = "SELECT top 10 a.*, (select  count(*) as antal from artikel_kommentar Where artikel = a.id)as antal " & _
" From artiklar as a Order By Datum DESC"
set recset = conn.execute(sql)

If RecSet.EOF Then%>
<br>Inga reportage!
else
<br>Listar de tio senaste reportagena!<br><br><%
Do While Not RecSet.EOF 
%>

	<table border="0" width="90%" cellpadding="0" cellspacing="0" style="border-collapse: collapse" class="celltext">
  		<tr>
	    	<td width="75%" class="rubrik" style="font-weight: bold"><%=Recset("rubrik")%></td>
    		<td width="25%"><%=FormatDateTime(Recset("datum"),2)%> </td>
  		</tr>
	  	<tr>
	    	<td width="100%" colspan="2"><%=Recset("ingress")%><br><a href="reportage.asp?do=visareportage&reportageid=<%=Recset("id")%>">Läs hela!</a> </td>
  		</tr>
		<tr>
			<td class="smalltext" colspan="2">Denna artikel är läst: <%=Recset("antalklick")%> ganger och har <%Response.write recset("antal")%> kommentarer.</td>
		</tr>
	</table><br>
<%
     Recset.MoveNext
Loop
Recset.Close
Conn.Close

Set Recset = Nothing
Set Conn = Nothing

End If
End if
%>
Medlem sedan nov. 200387 inlägg
#3

Tackar, det där såg ju geschwint ut!
Men du får gärna förklara lite vad nedanstående står för i detalj, jag hänger med till 95%... a.*??? ;-)

SQL = "SELECT top 10 a.*, (select  count(*) as antal from artikel_kommentar Where artikel = a.id)as antal " & _
" From artiklar as a Order By Datum DESC"

Tack på förhand!

Medlem sedan dec. 200012 464 inlägg
#4

a är ett alias för tabellen artiklar

From artiklar as a
Medlem sedan nov. 200355 inlägg
#5

du har ju glömt RecSet.Open SQL, Conn, 3, 3
du glömde , 3, 3....

Medlem sedan juni 200032 967 inlägg
#6

atra, förklara gärna vad du menar.

Jag förstår inte varför man måste använda den koden. Det torde fungera alldeles utmärkt med en .execute-öppning av recordsetet.

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)