Avatar billede hf Nybegynder
07. december 2001 - 13:32 Der er 8 kommentarer og
1 løsning

Antal records i recordset

Hvordan vises hvor mange records der er i mit recordset?
Avatar billede nute Nybegynder
07. december 2001 - 13:37 #1
det er 2 måter...den peneste er å la din SQL gjøre jobben:

SQL = \"SELECT COUNT(*) AS total FROM tabell\"
Set RS = ConnectionObject.Execute( SQL )
response.write RS(\"total\")

mens den andre ( og litt mer grimme metoden) er å telle antall records *etter* du har mottatt dem alle:

Set RS = SErver.CreateObject(\"ADODB.RecordSet\")
SQL = \"SELECT * FROM tabell\"
RS.Open SQL, ConnectionObject, 3, 3
response.write RS.RecordCount

/nute
Avatar billede nute Nybegynder
07. december 2001 - 13:38 #2
unnskyld...\"det er 2 måter\" skal være \"det er 2 *fornuftige* måter\"

;-)
Avatar billede cyb Nybegynder
07. december 2001 - 13:39 #3
recordset.count
Avatar billede cyb Nybegynder
07. december 2001 - 13:42 #4
God pointe Nute, men det det at lade sql klare opgaven er ikke nogen god ide hvis du også skal benytte recordsne. I så tilfælde vil du skulle lave to forespørgsler til databasen, hvilket koster to gange netværkstrafik.
Avatar billede hf Nybegynder
07. december 2001 - 13:44 #5
cyb::recordset.count giver fejlen \"metoden er ikke understøttet af objektet.\"

nute::RS.RecordCount returnerer -1
Avatar billede goz Nybegynder
07. december 2001 - 13:49 #6
Hvis man alligevel skal have data ind kan det være en fordel at gøre sådan:

Set RS = conn.Execute(SQLStatement)
arraySize = -1
if RS.BOF and RS.EOF then
    dataArray = RS.GetRows( maxantal )
    arraySize = UBound( dataArray )
end if
Avatar billede goz Nybegynder
07. december 2001 - 13:53 #7
Set RS = conn.Execute(SQLStatement)
if RS.BOF and RS.EOF then
    arraySize = -1
else
    dataArray = RS.GetRows( maxantal )
    arraySize = UBound( dataArray )
end if

vil nok virke bedre :-)
Avatar billede nute Nybegynder
07. december 2001 - 13:55 #8
hf >> count er ikke en metode på recordset objectet. hvis metoden returnerer -1, så er det typisk ikke noen records ;-)

cyb >> hmmm...det er en stor diskusjon hva man vil gjøre. *jeg* ville nok benyttet SQL COUNT, men det kommer jo selvfølgelig helt an på hvordan de ulike metodene i språkene er implementert. hvis count metoden i et språk er en egenskap som ligger knyttet til recordset objektet, jammen så vil jeg da klart utelate SQL COUNT (siden dette genererer dubletter og dermed større IO), men hvis count metoden er avhengig av en iterasjon av recordset\'et etter mottagelse, jammen så vil jeg heller benytte SQL COUNT

jeg er rimelig sikker på at både .GetRows og .recordCount er implementert på den sist nevnte måte, og vil derfor (hvis jeg hr bruke for flere data) benytte en følgende SQL:

SQL = \" SELECT COUNT(ID) AS total, ID, tekst FROM tabell\"

/nute
Avatar billede wizardry Nybegynder
12. januar 2002 - 21:38 #9
HF> Hvis du falder over svaret på egen hånd må du meget gerne sige til, jeg har samme problem, og får også recordcount = -1 selvom den derefter udskriver 12 records
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