Du har öppnat recordsetet på fel sätt.
Kika till exempel här: http://www.webforum.nu/showthread.php?s=&forumid=22&threadid=107264
4 svar · 318 visningar · startad av Yoda
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?
Du har öppnat recordsetet på fel sätt.
Kika till exempel här: http://www.webforum.nu/showthread.php?s=&forumid=22&threadid=107264
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
%>
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
%>