Japp recordset.Recordcount returnerar antalet poster. Lite lurig dock för den fungerar inte alltid om man inte har besökt alla posterna först!
------------------
svensson
17 svar · 280 visningar · startad av Janspeed
Jag undrade bara om det fanns något sätt att visa hur många träffar man fått och skriva ut det innan själva resultatet.
Jag använder en SQL-sats för själva sökningen och sedan skriver jag ute resultatet med en loop.
Finns det typ nån variabel som antalet resultat lagras i? tex:
SQL = "SELECT * FROM tblTable WHERE Ort LIKE 'Stockholm'
Dim dbRS
Set dbRS = Server.CreateObject("ADODB.Recordset")
dbRS.Open SQL, dbConnect
Response.Write "Antal träffar: " & [b]dbRS.Result[/b]
Do Until dbRS.eof
Response.Write dbRS("Ort")
dbRS.movenext
Loop
Tacksam för hjälp
//JANspeed
Japp recordset.Recordcount returnerar antalet poster. Lite lurig dock för den fungerar inte alltid om man inte har besökt alla posterna först!
------------------
svensson
Du kan ju alltid loopa igenom recordset först och sedan "spola" tillbaka det med metoden recordset.movefirst som flyttar dig till första posten igen.
------------------
svensson
hoppas detta funkar!!! har inte provat den själv men det borde funka
Dim dbRS
Set dbRS = Server.CreateObject("ADODB.Recordset")
dbRS.Open SQL, dbConnect
Do Until dbRS.eof
dbRS.movenext
Loop
dbRS.moveFirst
dim var
var=dbRS.RecordCount
Response.Write "Antal träffar: " &var
Do Until dbRS.eof
Response.Write dbRS("Ort")
dbRS.movenext
Loop
------------------
svensson
Nope. Det funkade inte. Allt jag får är ett -1 istället för antalet resultat.
Aha... nu ser jag. Man kanske skulle tilldela var = dbRS.RecordCount innan jag kör dbRS.movefirst. Ska prova..
Hmm... men gör jag en loop innan så behöver jag ju inte .RecordCount alls!?
Dim dbRS
Set dbRS = Server.CreateObject("ADODB.Recordset")
dbRS.Open SQL, dbConnect
Dim Count
Count = 0
Do Until dbRS.eof
Count = Count + 1
dbRS.movenext
Loop
dbRS.moveFirst
Response.Write "Antal träffar: " & Count
Do Until dbRS.eof
Response.Write dbRS("Ort")
dbRS.movenext
Loop
Vad ska jag då med funktionen till? Det verkar ju dumt.
Det jag menade var inte att du var dum drain utan de som gjorde .RecordCount funktionen. :)
Hoppas du inte tog åt dig.
//JANspeed
[Redigerat av Janspeed den 03 apr 2001]
kort:
för att kunna använda .recordcount kan du inte, som du gjort nu, öppna recordsetet med en statisk cursor.
det finns två valbara argument till open, och jag har för mig att du ska ange parameter 3 för adOpenDynamic. lite osäker, eftersom jag inte använder ado på det sättet. jag tror att det borde se ut någonting sånt härnt:
dbRS.Open SQL, dbConnect, 3
du kan istället för 3:an ange konstantens namn (adOpenDynamic) om du har inkluderat adovbs.inc på din asp-sida.
mvh,
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>
Håller med om att det är lite korkat men du kan ju prova att istället för att loopa igenom allting använda:
recordset.movelast och sedan spola tillbaka som förut med
recordset.movefirst
//ibland skall det funka även om man inte har besökt sista posten så du kan ju prova det också // :)
------------------
svensson
Pröva följande:
SQL = "SELECT COUNT(*) AS num FROM tabellnamn WHERE kolumn = " & värde
Set rs = DataConn.Execute(SQL)
Response.Write rs("num")
för att kunna använda .recordcount kan du inte, som du gjort nu, öppna recordsetet med en statisk cursor.
det finns två valbara argument till open, och jag har för mig att du ska ange parameter 3 för adOpenDynamic. lite osäker, eftersom jag inte använder ado på det sättet. jag tror att det borde se ut någonting sånt härnt:
dbRS.Open SQL, dbConnect, 3du kan istället för 3:an ange konstantens namn (adOpenDynamic) om du har inkluderat adovbs.inc på din asp-sida.
Hmm.. detta är lite överkurs för mig. Eftersom jag aldrig jobbat med databaser tidigare så är jag inte riktigt säker på vad du menar och vad de olika sakerna betyder.
Det verkar ju för mig som nybörjare tio gånger krångligare än att bara göra en loop som räknar antalet istället.
Pröva följande:
SQL = "SELECT COUNT(*) AS num FROM tabellnamn WHERE kolumn = " & värde Set rs = DataConn.Execute(SQL) Response.Write rs("num")
Detta verkar ju en aningen lättare men jag får det dock inte att fungera. Hur gör du om du villa ha flera kolumner i COUNT() som argument. Tex.
SQL = "SELECT COUNT(Ort, Adress, telefonnr) AS num FROM tabellnamn WHERE kolumn = " & värde
Set rs = DataConn.Execute(SQL)
Response.Write rs("num")
Jag är också lite osäker över vad
Set rs = DataConn.Execute(SQL)
gör. Jag använder ju dbRS.Open SQL, dbConnect för att öppna min databas?
Som sagt så är det mycket som är frågetecken för mig.
//JANspeed
Trevlig läsning. Men nu känns det ju ännu mer som om jag får nöja mig med en vanlig loop för att räkna istället.
Det skulle inte förvåna mig om det dessutom var snabbare än att hålla på och inkludera filer och tjafs.
Vad har jag för fördelar med RecordCount?
Finns det ingen variabel som visar vilken rad man står på i databasen eller måste man gå samma krångliga väg där med?
Tack för hjälpen i alla fall.
//JANspeed
har du testat denna öppning av recordsetet:
dbRS.Open SQL, dbConnect, 3, 1
Sedan kan du "plocka" fram antal poster med:
intAntalPoster = dbRS.RecordCount
Detta sätt att öppna och räkna poster funkar, använder den själv i olika script.
OBS!! Detta funkar inte om du kör en Apache Webserver med ChilliASP installerat utan endast på MS IIS, PWS
cya,
PatrikB
------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.
Finemang PatrikB! Det funkade super och det var precis vad jag sökte efter.
Tackar! Och tackar alla andra som också hjälptet till.
//JANspeed