Avatar billede gatez Nybegynder
23. januar 2005 - 01:54 Der er 10 kommentarer og
1 løsning

Loop med variabel i SQL

Hejsa,

Hvorfor kan man ikke det her:
i = 4
do while not i > 20

Set rs_antal_stem_"&i&" = Conn.Execute("SELECT COUNT(id) AS Antal From brugerbilerpoll where brugerid = '"& profil_bruger_id &"' and stemme = '"&i&"'")
antal_stem_"&i&" = rs_antal_stem_"&i&"("antal")
rs_antal_stem_"&i&".Close

i = i + 1
loop

------------------------------

Jeg for fejl ved tegnet " i stem_"&i&"
Avatar billede softspot Forsker
23. januar 2005 - 02:03 #1
Du skal nok lave et array af antal_stem i stedet og så kan du bare genbruge dit resultset (rs_antal_stem).

dim antal_stem(4 to 20)
i = 4
do while not i > 20

  Set rs_antal_stem = Conn.Execute("SELECT COUNT(id) AS Antal From brugerbilerpoll where brugerid = '"& profil_bruger_id &"' and stemme = '"& i &"'")

  antal_stem(i) = rs_antal_stem("antal")
  rs_antal_stem.Close

  i = i + 1
loop
Avatar billede gatez Nybegynder
23. januar 2005 - 02:05 #2
Okay... god idé ;)
Men den giver fejl ved:  (4 to 20) ?
Expected ')'
Avatar billede gatez Nybegynder
23. januar 2005 - 02:16 #3
??
Avatar billede softspot Forsker
23. januar 2005 - 02:17 #4
Hmm (lidt for meget VB og lidt for lidt VBScript :))

Hvad så med:

dim antal_stem(17)
= 4
do while not i > 20

  Set rs_antal_stem = Conn.Execute("SELECT COUNT(id) AS Antal From brugerbilerpoll where brugerid = '"& profil_bruger_id &"' and stemme = '"& i &"'")

  antal_stem(i-4) = rs_antal_stem("antal")
  rs_antal_stem.Close

  i = i + 1
loop


Så starter dit array af antal_stem bare fra 0 i stedet for 4, hvis det ellers er ok...?
Avatar billede softspot Forsker
23. januar 2005 - 02:18 #5
Arrrgh!

det skal naturligvis være i=4 i linie 2 :)
Avatar billede gatez Nybegynder
23. januar 2005 - 02:27 #6
Okay, jeg nu er fejlen væk...

Men hvordan laver jeg så nu en response.write på hver ?

Jeg har prøvet:
response.write antal_stem(4)
Men det giver bare 0... Det skal det ikke gøre ;)
Avatar billede softspot Forsker
23. januar 2005 - 02:31 #7
Husk nu at array'et starter fra index 0 og ikke 4. :)

Anyway! Du kan udskrive alle elementerne således:

for idx = lbound(antal_stem) to ubound(antal_stem)
  response.write antal_stem(idx)
next

...og så er du ligeglad med hvilket index der er det første ;)
Avatar billede gatez Nybegynder
23. januar 2005 - 02:32 #8
Hvis jeg gør sådan her:
Set rs_antal_stem_4 = Conn.Execute("SELECT COUNT(id) AS Antal From brugerbilerpoll where brugerid = '"& profil_bruger_id &"' and stemme = '4'")
antal_stem_4 = rs_antal_stem_4("antal")
rs_antal_stem_4.Close

Så kommer der et tal ud... Men ikke når jeg bruger den loop...
Avatar billede gatez Nybegynder
23. januar 2005 - 02:33 #9
Ja, man lære jeg noget nyt hver dag ;)
Første gang jeg arbejder med arrays...
Avatar billede softspot Forsker
23. januar 2005 - 02:35 #10
Prøv at skrive

antal_stem(i-4) = rs_antal_stem("antal").value

i stedet for

antal_stem(i-4) = rs_antal_stem("antal")
Avatar billede softspot Forsker
23. januar 2005 - 02:48 #11
nå, men det er vist ved at være sengetid, sååeh... jeg checker ind igen op ad formiddagen. Godnat :)
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