webForumDet fria alternativet

Räkna rader i tabell?

ASP

4 svar · 318 visningar · startad av Yoda

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

Jag ska räkna antalet rader i tabellen för att skicka denna siffra vidare till Flash. Jag har fyra rader i tabellen men jag får ut -1 och förstår inte varför. Något jag missat i koden kanske, är ju en nybörjare på asp...

<!--#include file="dbConn.asp"-->
<%
dim rs, sql

set rs = server.CreateObject("adodb.recordset")
sql = "SELECT * " & _
	"FROM Participant "		
set rs = conn.execute(sql)

do while not rs.eof
   response.write "fname=" & Server.URLEncode(rs("fname")) & "&"
   response.write "lname=" & Server.URLEncode(rs("lname")) & "&"
   response.write "email=" & Server.URLEncode(rs("email")) & "&"
   response.write "position=" & Server.URLEncode(rs("position")) & "&"
   response.write "workplace=" & Server.URLEncode(rs("workplace")) & "&"
   response.write "city=" & Server.URLEncode(rs("city")) & "&"	
rs.moveNext
Loop
response.write "TotalRecords=" & rs.RecordCount
rs.Close 
%>

I TotalRecords finns alltså -1 men jag vill att det ska vara 4 eftersom det finns fyra rader i tabellen. Vad är det jag har missat tro?

Medlem sedan juni 200032 967 inlägg
#2

Du har öppnat recordsetet på fel sätt.

Kika till exempel här: http://www.webforum.nu/showthread.php?s=&forumid=22&threadid=107264

Medlem sedan nov. 2002291 inlägg
#3

Löste det med en counter istället:

<!--#include file="dbConn.asp"-->
<%
dim rs, sql, counter
counter = 0
set rs = server.CreateObject("adodb.recordset")
sql = "SELECT * " & _
	"FROM Participant "		
set rs = conn.execute(sql)

do while not rs.eof
   response.write "fname" & counter & "=" & Server.URLEncode(rs("fname")) & "&"
   response.write "lname" & counter & "=" & Server.URLEncode(rs("lname")) & "&"
   response.write "email" & counter & "=" & Server.URLEncode(rs("email")) & "&"
   response.write "position" & counter & "=" & Server.URLEncode(rs("position")) & "&"
   response.write "workplace" & counter & "=" & Server.URLEncode(rs("workplace")) & "&"
   response.write "city" & counter & "=" & Server.URLEncode(rs("city")) & "&"	
   counter = counter + 1
	
rs.moveNext
Loop
response.write "TotalRecords=" & counter
rs.Close 

%>
Medlem sedan juni 200032 967 inlägg
#4

Ok.

Känns inte helt rätt, men visst. ;)

Medlem sedan okt. 2002257 inlägg
#5

Kan man inte lösa det med en en subselect då?

<!--#include file="dbConn.asp"-->
<%
dim rs, sql

set rs = server.CreateObject("adodb.recordset")
sql = "SELECT *, (SELECT count(*) FROM Participant) AS antal FROM Participant"		
set rs = conn.execute(sql)

counter = rs("antal")

do while not rs.eof
   response.write "fname=" & Server.URLEncode(rs("fname")) & "&"
   response.write "lname=" & Server.URLEncode(rs("lname")) & "&"
   response.write "email=" & Server.URLEncode(rs("email")) & "&"
   response.write "position=" & Server.URLEncode(rs("position")) & "&"
   response.write "workplace=" & Server.URLEncode(rs("workplace")) & "&"
   response.write "city=" & Server.URLEncode(rs("city")) & "&"	
rs.moveNext
Loop
response.write "TotalRecords=" & counter
rs.Close 
%>
267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)