webForumDet fria alternativet

Visa antal resultat

ASP

17 svar · 280 visningar · startad av Janspeed

Medlem sedan jan. 2001510 inlägg
Frågan#1

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

Medlem sedan apr. 200165 inlägg
#2

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

Medlem sedan apr. 200165 inlägg
#3

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

Medlem sedan jan. 2001510 inlägg
#4

Hur skriver jag in det i koden? Jag får inte recordset.RecordCount att fungera.

//JANspeed

Medlem sedan apr. 200165 inlägg
#5

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

Medlem sedan jan. 2001510 inlägg
#6

Nope. Det funkade inte. Allt jag får är ett -1 istället för antalet resultat.

Medlem sedan jan. 2001510 inlägg
#7

Aha... nu ser jag. Man kanske skulle tilldela var = dbRS.RecordCount innan jag kör dbRS.movefirst. Ska prova..

Medlem sedan jan. 2001510 inlägg
#8

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.

Medlem sedan jan. 2001510 inlägg
#9

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]

Medlem sedan juni 200032 967 inlägg
#10

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>

Medlem sedan apr. 200165 inlägg
#11

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

Medlem sedan mars 2001484 inlägg
#12

Pröva följande:

SQL = "SELECT COUNT(*) AS num FROM tabellnamn WHERE kolumn = " & värde
Set rs = DataConn.Execute(SQL)
Response.Write rs("num")
Medlem sedan jan. 2001510 inlägg
#13

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.

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

Medlem sedan mars 200116 inlägg
Medlem sedan jan. 2001510 inlägg
#15

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

Medlem sedan mars 20002 836 inlägg
#16

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.

Medlem sedan mars 20019 inlägg
#17

Heter det inte

dbRS.count ?

Medlem sedan jan. 2001510 inlägg
#18

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

262 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)