webForumDet fria alternativet

@numrows i Sql Server

11 svar · 499 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena
Jag vill i samband med en sökfunktion på en sajt kunna visa antalet träffar ovanför sökresultaten.
Nu undrar jag om det finns någon funktion i SQL-Server / ASP likt mysql_num_rows resp. mssql_num_rows som finns i PHP.

Jag har Googlat lite och hittat något som heter @numrows, men har ingen aning om hur det fungerar eller hur jag ska använda.

Jag har testat lite, bla. SELECT @numrows AS antal, * FROM x ... men då får jag ett felmess som säger att jag måste deklarera variabeln @numrows.

Så, hur funkar det egentligen?

Tack!

LarsGMedlem sedan dec. 200012 464 inlägg
#2

@@rowcount eller @@rowcount_big

Du får returnera den separat.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Okej, vad är skillnaden mellan dessa två?
Kan jag köra conn.execute("SELECT @@rowcount") direkt efter min ordinarie Execute()?
Funkar det på liknande sätt som @@IDENTITY, så att man inte behöva ange någon tabell?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#4

Aha...

http://msdn2.microsoft.com/en-us/library/ms187316.aspx skrev:

@@ROWCOUNT (Transact-SQL)
Returns the number of rows affected by the last statement. If the number of rows is more than 2 billion, use ROWCOUNT_BIG.

Låter bra det där, tack!

MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

Hm, det fungerar inte riktigt som jag trodde, såhär har jag gjort:

Set rs = conn.Execute (sql)
Set hits = conn.Execute("SELECT @@ROWCOUNT")
search_hits = hits(0)
hits.close : Set hits = Nothing

Den översta raden exekverar själva frågan och direkt under försöker jag få ut antal rader.

Men search_hits blir alltid 0 (noll).

Vad har jag gjort för fel?

@ndersMedlem sedan juni 200032 969 inlägg
#6

Om det är en select-fråga du kör så påverkar den inga poster i tabellen, så det är rätt att du får 0.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

Okej, men det jag vill är att på ett enkelt sätt räkna antalet träffar i en sökfunktion (som använder SELECT).
Frågan som ska köras är olika beroende på vad man vill söka fram, så jag är ute efter ett enkelt sätt att visa antalet träffar ovanför resulten, därför kan jag inte med. tex hjälp av i räkna hur många varv loopen körs.

Fler förslag`?

@ndersMedlem sedan juni 200032 969 inlägg
#8

Använd recordsetobjektets recordcount (kräver att du öppnar recordsetet med en dynamisk cursor).

MickeA.comMedlem sedan feb. 20034 441 inlägg
#9

Okej, du har inte lust att visa lite kod?

@ndersMedlem sedan juni 200032 969 inlägg
#10

Hmm, grymt konstigt att du inte fann något när du sökte på recordcount i asp-forumet... Jag fick iaf drygt en miljard träffar där och på google.

set oRS = Server.CreateObject("ADODB.Recordset")
oRS.Open SQL, Conn, 3,1

lCount = oRS.RecordCount
MickeA.comMedlem sedan feb. 20034 441 inlägg
#11

@nders skrev:

Hmm, grymt konstigt att du inte fann något när du sökte...

Inte så konstigt, eftersom jag inte sökte där...

@ndersMedlem sedan juni 200032 969 inlägg
#12

Aha!

136 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)