Avatar billede danino Nybegynder
26. juni 2007 - 14:57 Der er 5 kommentarer og
1 løsning

Hvordan tæller man antal rækker, som kommer ud fra mssql-database

Hej Alle.

Hvordan tæller man antal rækker i et mssql-udtræk - altså client-side?

Jeg har objektet rs - hvorfor jeg troede man kunne skrive rs.RecordCount, men den returnerer altid -1, uanset hvor mange rækker der returneres.

Jeg kan ikke bare i min sql-query skrive SELECT count(*), for min sql er forholdsvis kompleks, og den vil derfor have mig til at skrive nogle kolonner i en GROUP BY eller en anden funktion - men der må være en nemmere metod.

I php kan man jo f.eks. bare skrive mysql_num_rows(rs)...

Håber nogen kan hjælpe.
Avatar billede fennec Nybegynder
26. juni 2007 - 15:20 #1
Recordsette skal åbnes med den rigtige cursor/mode eller hvad det nu hedder. Mener det er 3,3 der skal på:

rs.open sql, conn, 3, 3
response.write rs.RecordCount
Avatar billede fennec Nybegynder
26. juni 2007 - 15:21 #2
Det er vist ikke muligt i de gamle versioner af MySQL/Driver at gøre dette...
Avatar billede danino Nybegynder
26. juni 2007 - 15:41 #3
Hm.. Er ikke helt med - er som sagt helt ny indenfor asp.

Kan du sætte det ind i følgende:?

' Opret forbindelse
set Conn = server.createobject("adodb.connection")
Conn.open "PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=localhost;uid=***;pwd=***;DATABASE=***"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

If rs.RecordCount > 0 Then
....
Avatar billede fennec Nybegynder
26. juni 2007 - 15:56 #4
For at bruge RecordCount metoden, skal objektet oprette som et recordset. Conn.execute giver kun begrænset muligheder:

set Conn = server.createobject("adodb.connection")
Conn.open "PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=localhost;uid=***;pwd=***;DATABASE=***"

set rs = server.createobject("adodb.recordset")
rs.open strSQL, Conn, 3, 3
If rs.RecordCount > 0 Then

Men hvis du bare skal tjekke om der er rækker eller ej. kan du bruge eof (End Of File) i stedet:

Set rs = Conn.Execute(strSQL)
If not rs.EOF Then
end if

eller bare starte løkken. Den kører kun så længe der er rækker:
Set rs = Conn.Execute(strSQL)
while not rs.eof
  ...
  rs.MoveNext
wend
Avatar billede danino Nybegynder
26. juni 2007 - 16:03 #5
Tak - ja, jeg skulle bare tjekke, om den overhovedet returnerede nogen rækker.

Læg et svar :-)
Avatar billede fennec Nybegynder
26. juni 2007 - 16:20 #6
.o) <-- One Eyed Jack
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester