[ASP] "index buiten bereik"

Pagina: 1
Acties:

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 15-09 18:34

Wally-S

-Snowboarding is art-

Topicstarter
ik krijg de volgende foutmelding:
code:
1
2
3
4
5
6
7
Om object verzoeken fout 'ASP 0105 : 80004005' 

Index buiten bereik 

/127.0.0.1/file.asp, regel 9 

Een index van een array valt buiten het bereik.

Ik heb een form waarmee ik data post. Het zijn allemaal textboxen met de naam 1 t/m 20.
Als er een is aangevinkt krijgt hij de waarde 1 mee.
Nu zoek ik met de volgende code op of de waarde 1 is.:
code:
1
2
3
4
5
6
7
Do while (i<= strhigh)
   if request.form(i) ="1" then
    response.write(i)
    response.write("<BR>")
   end if
   i=i+1
loop

Dit is dus effe een voorbeeldje, ik wil hiermee dus de nummer op het scherm krijgen die ik heb aangevinkt. Ik krijg echter de bovenstaande foutmelding.
Ik heb google al gebruikt, maar daar kom ik ook niet verder als:
Een index van een array valt buiten het bereik

O ja, hij geeft de foutmelding pas na dat hij de eerste cijfers op het scherm heeft getoond.

Wie weet wat ik fout doe.

Snow is only frozen water


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

<gok=wild>
je loopt er 1 te ver door
</gok>

Doet iets met Cloud (MS/IBM)


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 15-09 18:34

Wally-S

-Snowboarding is art-

Topicstarter
Op woensdag 19 december 2001 14:52 schreef D2k het volgende:
<gok=wild>
je loopt er 1 te ver door
</gok>
Ja duh...

Maar dan moet hij er gewoon niet op reageren inplaats van een foutmelding geven.
Nog iets:
code:
1
2
test=3
If request.form(test) ="1"

Doet het gewoon als request.form("1") ook echt "1" is

maar:
code:
1
2
test=8
if request.form(test)="1"

Werkt niet als request.form("8") geen 1 is.
Maar in hetzelfde geval werkt het volgende wel.
code:
1
if request.form("8")="1"

Ik snap het niet meer..

ps. met "niet werken" bedoel ik dat ie een foutmelding geeft en niet dat er gewoon niets gebeurd omdat het statement niet waar is.

Snow is only frozen water


Verwijderd

Wat je met Request.form(i) doet is niet d.m.v. de naam van de textbox de waarde opvragen.

Request.Form is een collectie van alle form elementen die get post worden. Ik begrijp dat je geen textboxen gebruikt maar checkboxen.

Wanneer een je een checkbox aan vinkt op de form en dan submit zal deze in de collectie opgenomen worden. Dus niet aangevinkte checkboxen komen ook niet als resultaat in de collectie voor dus zal je array (de collectie) niet het aantal bevatten als het aantal checboxen op de form.

Dus oplossing hiervoor is Array maken: arrCheckboxName =
Array("0","1","2") en Dan Request.Form(arrCheckboxName(i)) doen.

Of je kan wat experimenteren met deze code:
<code>
For Each vItem in Request.Form
For iCount = 1 to Request.Form(vItem).Count
Response.write vItem & " = " & Request.Form(vItem)(iCount) & "<BR>" & vbCrLf
Next
Next
</code>

MvGr,
Bas

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 08:48
Op woensdag 19 december 2001 14:58 schreef RoadHog het volgende:
MvGr,
Bas
Groetjes terug! Niet dat ik ze neit wil, maar lees faq... ;)

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 15-09 18:34

Wally-S

-Snowboarding is art-

Topicstarter
Uhm.. ik heb het probleem al gevonden.
Ik gebruikte de waarde van i de ene keer als integer en de andere keer als character.
Dus iedereen bedankt.

Maar ik heb nog een vraagje aan RoadHog:
Op woensdag 19 december 2001 14:58 schreef RoadHog het volgende:
Wat je met Request.form(i) doet is niet d.m.v. de naam van de textbox de waarde opvragen.
Als ik een tekstvak met de naam "test" heb.
Dan vraag ik de inhoud ervan toch op met request.form("test") ?
Dit doe ik altijd en nooit problemen mee gehad.

Snow is only frozen water


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op woensdag 19 december 2001 15:08 schreef Wally-S het volgende:
Als ik een tekstvak met de naam "test" heb.
Dan vraag ik de inhoud ervan toch op met request.form("test") ?
Dit doe ik altijd en nooit problemen mee gehad.
True, true. Maar in je loop vraag je de waarde niet op via de naam, maar via een index-nummer.

Zoek de verschillen:
(nee tis geen echt werkende code of zo)
code:
1
2
3
4
' Collectie.Add waarde, key
Collectie.Add 1, "eerste"
Collectie.Add 3, "derde"
Collectie.Add 2, "tweede"

Als je met integers (via een index dus, zoals je ook bij arrays doet), krijg je:
code:
1
2
3
Collectie(1) geeft 1
Collectie(2) geeft 3
Collectie(3) geeft 2

Terwijl via naam (key):
code:
1
2
3
Collectie("eerste") geeft 1
Collectie("tweede") geeft 2
Collectie("derde") geeft 3

Kweet ff niet zo goed hoe ik dat nou met normale woorden moet uitleggen, maar ik hoop dat je het verschil ziet en het verschil begrijpt tussen de collectie met de naam (key) benaderen, en met een getalletje (zoals in een loep).
En dus ook dat wat jij denkt "de 3e control op de form, dus form(3)" misschien wel helemaal niet de 3e in de collectie is...

Exact expert nodig?


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 15-09 18:34

Wally-S

-Snowboarding is art-

Topicstarter
Op woensdag 19 december 2001 15:19 schreef CrazyD_at_work het volgende:

[..]

Als je met integers (via een index dus, zoals je ook bij arrays doet), krijg je:
Kweet ff niet zo goed hoe ik dat nou met normale woorden moet uitleggen, maar ik hoop dat je het verschil ziet en het verschil begrijpt tussen de collectie met de naam (key) benaderen, en met een getalletje (zoals in een loep).
En dus ook dat wat jij denkt "de 3e control op de form, dus form(3)" misschien wel helemaal niet de 3e in de collectie is...
Ik moet zeggen dat ik helemaal niet wist dat form(3) de 3e control op het form is. Ik gebruikte form("3") met de bedoeling de control te benaderen die de naam 3 heeft. En dat lukt ook nog.
Dus een misvertandje denk ik. :)
Maargoed mijn code werkt, dus ben ik blij. :)
En ik heb nog wat geleerd ook. :)

Snow is only frozen water


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op woensdag 19 december 2001 15:27 schreef Wally-S het volgende:
Ik gebruikte form("3") met de bedoeling de control te benaderen die de naam 3 heeft. En dat lukt ook nog.
Ok, in dat geval, als je zoiets in een loopje doet, expliciet CStr() erom heen zetten (Request.Form(Cstr(i)) dus), dan gaat het altijd goed (nou ja zolang dat item in de collectie dan bestaat... zonder cstr() vraag je het 3e item in de collectie, niet de control met de naam 3).

Daarom noem ik m'n controls trouwens nooit alleen een getalletje, maar iets als txt3 of chk3, in je loop lees je dan Form("txt" & i) uit, en dat is automatisch een string. Voorkomt problemen.

Exact expert nodig?


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 15-09 18:34

Wally-S

-Snowboarding is art-

Topicstarter
Op woensdag 19 december 2001 15:42 schreef CrazyD_at_work het volgende:

[..]


Daarom noem ik m'n controls trouwens nooit alleen een getalletje, maar iets als txt3 of chk3, in je loop lees je dan Form("txt" & i) uit, en dat is automatisch een string. Voorkomt problemen.
Dat is trouwens wel een goed idee ja.
Ik heb nl soms het idee: hoe korter hoe makkelijker, maar dat gaat helaas niet altijd op. :)

Snow is only frozen water

Pagina: 1