Avatar billede tomato_20 Nybegynder
26. oktober 2005 - 12:38 Der er 5 kommentarer

faste / dynamiske værdier i variabler

Hvordan kan det være, at hvis jeg i nedenstående kodeudsnit andvender faste værdier i variablen i, så virker scriptet som det skal og tæller "i" antal pladser ned i recordsettet? Men når man bruger request.Querystring("id") som vist i koden og angiver et tal i HTTP Query'en, så virker det ikke, så får jeg en ADODB.Recordset error '800a0bcd' ang. at recordsettet er tomt. Scriptet fejler i den linie, hvor der står rs.movenext.

På forhånd tak.
Thomas Hansen

...

sql = "SELECT * FROM tblKrigere ORDER BY lastname"
set rs = Cn.Execute(sql)
i = Request.Querystring("id")
response.write (i)

count = 0
do while count <  i
rs.movenext
count = count + 1
response.write (count)
loop
...
Avatar billede goose Nybegynder
26. oktober 2005 - 12:41 #1
Hvad sker der hvis du bruger:

i = cint(Request.Querystring("id"))

/Goose
Avatar billede fennec Nybegynder
26. oktober 2005 - 12:47 #2
Grunden er at Querystring altid returnere tekst, så hvis der står et tal, får du teksten "123" istedet for tallet 123. Løsningen er (som goose skriver) at typecaste værdin til Integer, hvis du skal bruge værdien til beregninger.
Avatar billede softspot Forsker
26. oktober 2005 - 16:24 #3
Umiddelbart synes jeg det lyder mærkeligt, da VBScript selv burde konvertere tal i strenge til tal hvis der var behov for det.

Rent bort set fra det, så er det en lidt "farlig" metode at navigere frem i et recordset på, da du ikke laver noget check for om der er flere elementer i recordsettet inden du kalder movenext. Du bør i det mindste lave en stopbetingelse i din while-løkke, som tager højde for eof, altså:

sql = "SELECT * FROM tblKrigere ORDER BY lastname"
set rs = Cn.Execute(sql)
i = Request.Querystring("id")
response.write (i)

count = 0
do while (count <  i) and not rs.eof
  rs.movenext
  count = count + 1
  response.write (count)
loop


Hvad skriver count i øvrigt for hvert gennemløb? Hvis den tæller count op som en numerisk værdi, så er request.querystring("id") blevet konverteret til en int og dermed er det ikke datatypen som er et problem...
Avatar billede tomato_20 Nybegynder
27. oktober 2005 - 09:38 #4
Det er bare helt perfekt... og det virker. Havde godt luret at det var det der var problemet, men kunne ikke finde det der skulle til for at løse det...

Thomas
Avatar billede tomato_20 Nybegynder
27. oktober 2005 - 09:42 #5
Hej Softspot...

Tak for din bekymring, men den måde man kommer ind til dette script gør, at dette stykke kode ikke kan komme til EOF

Thomas
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