Avatar billede webnoob Nybegynder
18. maj 2006 - 22:21 Der er 37 kommentarer og
1 løsning

array problem

jeg har en form som "kun" kan indeholde tal. Den form bliver behandlet af et array, men jeg vil gerne have muligheden for at formen kan være blank og arrayet så behandler det som <NULL>, kan det lade sig gøre?

Hvis ja, hvordan?

mit array ser såden her ud:

arrstr = split(storrelse, ", ")
for t = 0 to ubound(arrstr)
next

Havde håbet på det var så let her:

if storrelse=Request.Form("storrelse") = "" then
    arrstr =  <NULL>
    for t = 0 to ubound(arrstr)
    next
    else
    arrstr = split(storrelse, ", ")
    for t = 0 to ubound(arrstr)
    next
end if

men det er det selvfølgelig ikke.

hvis jeg bruger if'en så får jeg denne her fejl:

Microsoft VBScript runtime error '800a0009'

Subscript out of range: 't'
Avatar billede eagleeye Praktikant
18. maj 2006 - 22:33 #1
men hvis du sætte den til null giver det ikke så meget mening at loope igennem prøv evt. sådan her:


storrelse=Request.Form("storrelse")
if storrelse = "" then
    arrstr =  NULL
else
    arrstr = split(storrelse, ", ")
    for t = 0 to ubound(arrstr)
    next
end if



du kan evt. tjekke med isArray funktionen om arrstr er et array:

storrelse=Request.Form("storrelse")
if storrelse = "" then
    arrstr =  NULL
else
    arrstr = split(storrelse, ", ")
end if
if isArray(arrstr) then
  for t = 0 to ubound(arrstr)
  next
end if
Avatar billede Slettet bruger
18. maj 2006 - 22:34 #2
Hejsa!

Nej så let kan det vist ikke gøres... Men Hvordan definerer du <NULL>? Skal det bare være en "erklæring" eller sådan noget...? For i så fald kan du jo bare gøre sådan her:

if storrelse=Request.Form("storrelse") = "" then
    arrstr =  "<NULL>"
    for t = 0 to ubound(arrstr)
    next
    else
    arrstr = split(storrelse, ", ")
    for t = 0 to ubound(arrstr)
    next
end if

I hvert fald SKAL du have gåseøjne rundt om når det ikke er et tal vi har med at gøre...

\Dan
Avatar billede webnoob Nybegynder
18. maj 2006 - 22:41 #3
eagleeye>> hvis jeg prøver med dit første eksempel så får jeg en Type mismatch fejl.
Avatar billede eagleeye Praktikant
18. maj 2006 - 22:43 #4
hvilken linie er det den kommer?
Avatar billede webnoob Nybegynder
18. maj 2006 - 22:44 #5
den kommer i linje 56 som ser sådan her ud:

sql = "INSERT INTO shop_varer_str_ref(vareID,storrelse,antal,undergruppeID,synlig) VALUES('"&vareID&"','"&arrstr(t)&"','"&arrantal(t)&"','"&arrID(t)&"','"&synlig&"')"
Avatar billede eagleeye Praktikant
18. maj 2006 - 22:46 #6
Ja så er arrstr ikke et array.

Vil der altid være lige så mange elementer i alle dine arrays?
Avatar billede webnoob Nybegynder
18. maj 2006 - 22:47 #7
hvad mener du med elementer?
Avatar billede eagleeye Praktikant
18. maj 2006 - 22:48 #8
hvis der nu er 5 vare i arrID vil der så være 5 størrelser i arrstr og vil der være 5 gange antal i arrantal?
Avatar billede webnoob Nybegynder
18. maj 2006 - 22:50 #9
ja det vil der.
Avatar billede eagleeye Praktikant
18. maj 2006 - 22:51 #10
Hmm så lyder det underligt du får den fejl.
Er du sikker på form feltet hedder "storrelse" ?
Avatar billede webnoob Nybegynder
18. maj 2006 - 22:53 #11
ja 10000000% arrayet har virket indtil jeg ville have den mulighed at have formen blank.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:01 #12
men så skal du stadig lave en split:

arrstr = split(storrelse, ", ")



Så vil den indeholde en tom streng "" hvis der ikke står noget i feltet.
Så skal du rette det som gemmer i database så det bliver i stil med:


sarrstr = arrstr(t)
if trim(sarrstr) = "" then sarrstr = "Null"
sql = "INSERT INTO shop_varer_str_ref(vareID,storrelse,antal,undergruppeID,synlig) VALUES('"&vareID&"','"&sarrstr&"','"&arrantal(t)&"','"&arrID(t)&"','"&synlig&"')"
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:02 #13
men vil den så stadig kunne splitte hvis der står noget i formen?
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:04 #14
ja formen vil altid give en komma sepereret liste også selvom et felt er tomt.
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:07 #15
kan jeg ikke lige få dig til at stille det op med

request.formen

arrayet

db.halløjet

så jeg kan være helt sikker på jeg forstår det.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:11 #16
sådan her:

storrelse=Request.Form("storrelse")
strid=Request.Form("formfeltID")
strantal=Request.Form("formfeltAntal")

arrstr = split(storrelse, ", ")
arrID = split(strid, ", ")
arrantal = split(strantal, ", ")


for t = 0 to ubound(arrID)

  sarrstr = arrstr(t)
  if trim(sarrstr) = "" then sarrstr = "Null"
  sql = "INSERT INTO shop_varer_str_ref(vareID,storrelse,antal,undergruppeID,synlig) VALUES('"&vareID&"','"&sarrstr&"','"&arrantal(t)&"','"&arrID(t)&"','"&synlig&"')"
 
  conn.execute(sql)
next
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:20 #17
nu får jeg denne her fejl igen:

Microsoft VBScript runtime error '800a0009'

Subscript out of range: 't'

/add-adjust_vare_save.asp, line 50

det har ikke nogen betydning at jeg bruger mySmartUpload.Form istedet for Request.Form?
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:23 #18
Ja så skal du bruge navnet på upload komponenten i stedet for request men det gør du nok også så den ikke brokker sig over request.form..

En anden ting er at mySmartUpload ikke har komma+mellemrum men kun komma så prøv at lave de 3 linier med split om til:



arrstr = split(storrelse, ",")
arrID = split(strid, ",")
arrantal = split(strantal, ",")
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:27 #19
samme fejl.
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:28 #20
regnede ikke med det ville hjælpe, jeg har hele tiden haft komma+mellemrum også får jeg ville lave den mulighed.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:30 #21
Ja det rigtigt så prøv at udskrive storrelse for at se hvad den udskriver:

response.write "X" & storrelse & "X" 'udskriver X før og efter.
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:34 #22
skal der stå noget i stedet for X
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:36 #23
og vil du have den linje skrevet ind?
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:36 #24
nej det var bare for at kunne se hvor strengen startede og stoppede.
eks skriver den enten: XX eller X, , X
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:37 #25
ja tilføj den efter du har hentet storrelse fra form collectionen.
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:38 #26
XX
Microsoft VBScript runtime error '800a0009'

Subscript out of range: '0'

/add-adjust_vare_save.asp, line 52

det er hvad jeg får ud af det.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:41 #27
og hvor mange tomme felter har du prøvet med?
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:42 #28
jeg har slet ikke skrevet noget i feltet.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:46 #29
Er det 1,2,3 eller flere storrelse feltere du ikke har skrevet i?


Hvis det er mere end et felt er det et problem da den så ikke laver ", " hvis feltet er tomt
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:47 #30
jeg har ikke skrevet i storrelses feltet.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:53 #31
ok??
men har du 1 eller 2 storrelse felter?
Avatar billede webnoob Nybegynder
18. maj 2006 - 23:55 #32
jeg har kun et storrelses felt.
Avatar billede eagleeye Praktikant
18. maj 2006 - 23:59 #33
og så har du også kun et ID og et antal felt?
Avatar billede webnoob Nybegynder
19. maj 2006 - 00:13 #34
ja der er kun et af hvert felt
Avatar billede eagleeye Praktikant
19. maj 2006 - 00:30 #35
ok så skal du nok i at prøve sådan her:


storrelse = myulpadxxx.upload("storrelse")

if storrelse = "" then
    redim arrstr(0)
    arrstr(0) =  "NULL"
else
    arrstr = split(storrelse, ", ")
end if




I stedet for:
arrstr = split(storrelse, ",")
Avatar billede eagleeye Praktikant
19. maj 2006 - 00:33 #36
nå det er senge tid, det jeg fik skrevet:
storrelse = myulpadxxx.upload("storrelse")


det skal være fra upload komponenten form collection ;)
Avatar billede webnoob Nybegynder
19. maj 2006 - 22:31 #37
det var dit sidste forsøg fra i går der gav pote, tak for hjælpen, lige et svar.
Avatar billede webnoob Nybegynder
19. maj 2006 - 22:31 #38
UPS det har du jo allerede gjort, så jeg klar bare resten ;)
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