Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23

    Indice non incluso nell'intervallo

    Salve,
    ho un problema con un ciclo su un array.
    Praticamente estraggo una serie di record con una query (select * from tabella), poi per ogni elemento dell'array risultante (arrResult) effettuo delle operazioni se è verificata una condizione:

    Codice PHP:
    IF isarray(arrResultTHEN
       
    FOR i=0 to ubound(arrResult,2)
          IF 
    arrResult(0,i) >1 then
             id
    =arrResult(0,i)
            ELSE
             
    id 0
         END 
    IF
       
    NEXT
    END 
    IF 
    tuttavia in esecuzione ottengo l'errore:
    Errore di run-time di Microsoft VBScript error '800a0009'
    Indice non incluso nell'intervallo: 'arrResult'

    qualcuno sa darmi una mano?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,563
    Ad occhio non è qui l'errore, forse fai altre operazioni perché così alla fine otterrai un "id" che corrisponde solo all'ultimo valore assunto dall'array nel ciclo.

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23
    EDIT:
    Grazie della risposta.
    Ho semplificato il codice, se si verifica la condizione faccio delle query sulla stessa tabella.
    L'errore appare proprio se effettuo queste operazioni, se invece la condizione non si verifica mai scorro tranquillamente l'array senza errori.

    Può servire come informazione?

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,563
    codice:
    IF isarray(arrResult) THEN 
    response.write(ubound(arrResult,2))
    response.end 
       FOR i=0 to ubound(arrResult,2)
    Cosa ottieni?
    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23
    ottengo 2

    (2 record infatti)

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,563
    Eh ti avevo detto che non era lì l'errore.

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23
    avevo semplificato il codice, se si verifica la condizione faccio delle query sulla stessa tabella.
    L'errore appare proprio se effettuo queste operazioni, se invece la condizione non si verifica mai scorro tranquillamente l'array senza errori.

    Possibile che il problema si verifichi perchè effettuo queste query (update)?
    davo per scontato che il valore di ubound(arrResult,2) rimanga inalterato dal momento che lo determino fuori dal ciclo FOR.

    Stampando il valore dell'indice questo funziona fino a quando non raggiunge il secondo record da modificare, poi torna l'errore.

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,563
    Eh ma se non fai vedere quello che fai...

    Roby

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23
    questo il codice completo:

    Codice PHP:
    effetti=0
    arrEffetti
    =getarrayres("SELECT * FROM effetti WHERE nome='"&pg&"' and attivo=1 order by id")
    IF 
    isarray(arrEffettiTHEN
        
    FOR i=0 to ubound(arrEffetti,2)
            
    futuro DateAdd("h"Cint(arrEffetti(6,i)),arrEffetti(2,i))
            if 
    now()>futuro then
                id_effetto
    =Cstr(arrEffetti(0,i))
                
    list_eff=arrEffetti(5,i)
                
    arrEFFETTI=split(list_eff,"#")
                
    N_effetto=0
                
    for each strEFFETTI in arrEFFETTI
                    N_effetto
    =N_effetto+1
                    
    if int(N_effetto)=2 then a=strEFFETTI
                    
    if int(N_effetto)=3 then b=strEFFETTI
                    
    if int(N_effetto)=4 then c=strEFFETTI
                NEXT
                COMANDO
    ="UPDATE background SET a=a"&int(a)&", c=c"&int(c)&", b=b"&int(b)&" WHERE nome='"&pg&"'"
                
    conn.execute(COMANDO)
                
    conn.execute("UPDATE effetti SET attivo=0 WHERE id="&id_effetto)
            else
                
    effetti=1
                
    if arrEffetti(3,i)="BlueSky" then effetti=2
            end 
    if
        
    NEXT
    END 
    IF 
    l'errore si verifica quando la prima query torna più record e la successiva condizione si verifica (if now()>futuro).
    L'errore è sull'istruzione id_effetto=Cstr(arrEffetti(0,i))

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,563
    La riga dell'errore???

    Roby

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.