Avatar billede cyrusdk Nybegynder
17. marts 2004 - 11:07 Der er 14 kommentarer og
1 løsning

Out of range i for-løkke med arrays

Hejsa
Jeg får følgende fejl:
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 2]'

Den siger fejlen ligger i linjen arrNewDate(i) = temp(2)&"-"&temp(1)&"-"&temp(0)

Er der nogen der kan hjælpe mig med at få det til at virke?
Nedenstående er et udsnit af den kode der giver problemer.
_________________________________________________________________


    varCount = int(rsCount("rows"))
    Response.write("varCount = " & varCount)
    redim arrDate(varCount)
    redim arrNewDate(varCount)
    for i=1 to ubound(arrDate)
        temp = split(arrDate(i),"-")
        arrNewDate(i) = temp(2)&"-"&temp(1)&"-"&temp(0)
    next
Avatar billede thesurfer Nybegynder
17. marts 2004 - 11:09 #1
Er du sikker på at der er 3 "-" i arrDate(i)?: temp(2)
Den starter jo ved "0".. dvs:
temp(0) = første "-"
temp(1) = anden "-"
temp(2) = tredje "-"
Avatar billede fennec Nybegynder
17. marts 2004 - 11:12 #2
din arrDate er tom pga. redim arrDate(varCount) 3 linjer før
Avatar billede thesurfer Nybegynder
17. marts 2004 - 11:16 #3
Du kan prøve at udskrive dine værdier:
response.write "VARIABELNAVN = " & VARIABLNAVN
response.end

Erstat VARIABELNAVN med navnet på variablen, du vil check.
Husk linien response.end

Du kan også lave det som en funktion:
function udskriv(tekst, streng)
response.write "<br>" & tekst & ": " & streng & "<br>"
end function

Så kan du den som:
udskriv "arrDate(i) er", arrDate(i)
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 11:20 #4
LOL - Fennec, det kigger jeg lige på :)
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 13:16 #5
Nu har jeg følgende kode. Jeg får samme fejl som før.
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 2]'
Det er stadig linjen arrNewDate(i) = temp(2)&"-"&temp(1)&"-"&temp(0) den angiver som fejlkilden.

    varCount = int(rsCount("rows"))
    redim arrDate(varCount)
    redim arrNewDate(varCount)
   
    do while not rs.EOF
        arrDate(i) = rs("date")
        rs.movenext
    loop
   
    for i=1 to varCount
            temp = split(arrDate(i),"-")
            arrNewDate(i) = temp(2)&"-"&temp(1)&"-"&temp(0)
           
    next
Avatar billede fennec Nybegynder
17. marts 2004 - 13:26 #6
du gør noget total mærkeligt, som jeg ikke kan gennemskue, men det er stadig galt med arrDate(i). Hvilke værdier får arrDate(1), arrDate(2) også vidre i:

do while not rs.EOF
  arrDate(i) = rs("date")
  rs.movenext
loop

Hvad er det overhoved du vil???? Jeg tror nemlig at du er startet helt forkert...
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 13:45 #7
Alright...
Jeg har en MySQL database med en række datoer jeg trækker ud.
Disse datoer er i et forkert format, nemlig MM/DD/YYYY.
De skal ændres til formatet DD-MM-YYYY (Bemærk ændringen fra / til -).
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 13:46 #8
Lige et kort indskudt spørgsmål:
Kan det passe at formatet på datoen i databasen er YYYY-MM-DD, men at når jeg har trukket det ud med en select-sætning og udskriver det via ASP så er formatet MM/DD/YYYY?
Avatar billede fennec Nybegynder
17. marts 2004 - 13:52 #9
hvis det er datofelter i databasen bruges serverens format til at vise med. Prøv lige at sætte en session.lcid = 1030 i toppe af siden. Så skulle det gerne være det rigtige format der kommer ud...
Avatar billede fennec Nybegynder
17. marts 2004 - 13:54 #10
desuden ændre du ikke fra "/" men fra "-"
split(arrDate(i),"-") <-------------
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 13:59 #11
Når jeg trækker det ud fra serveren ændrer formatet sig. I databasen står det som YYYY-MM-DD men når jeg printer det står det som MM/DD/YYYY.
Ergo må jeg splitte på /

Men jeg prøver lige med det session ting
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 14:09 #12
Haha!!!! Sådan fennec :)
Det virker perfekt. Og jeg slipper for at bytte om på alting med split.
Tusind tak :)

Nu er der bare lige en anden ting, måske det skal være et nyt spørgsmål.
Men når jeg skal indsætte formatet i databasen, så skal det vel formateres sådan at det har databasens format inden jeg indsætter det, ikke?
Kan du lige hurtigt fortælle mig hvordan jeg gør det?
Avatar billede fennec Nybegynder
17. marts 2004 - 14:16 #13
Hvis du er heldig skal du ikke ændre formatet, men det kan du lige tjekke.... ellers skal du have lavet en funktion som kan gøre det for dig. Her kan du gøre brug af indbygget variabler i ASP. Her er en af dem jeg bruger...

Function ConvertToSqlDate(dato)
dim SQLYear,SQLMonth,SQLDay
  SQLYear = Year(dato)
  SQLMonth = Month(dato)
  SQLDay = Day(dato)
  if SQLDay<10 then
    SQLDay = 0&SQLDay
  end if
  if SQLMonth<10 then
    SQLMonth = 0&SQLMonth
  end if
  'retur YYYYMMDD
  ConvertToSqlDate = SQLYear&SQLMonth&SQLDay
End Function
Avatar billede cyrusdk Nybegynder
17. marts 2004 - 14:22 #14
Det prøver jeg. Tusind tak.
Hvis du lige svarer så giver jeg lidt point.
Avatar billede fennec Nybegynder
17. marts 2004 - 14:29 #15
det kommer her
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