Visualizzazione dei risultati da 1 a 10 su 10

Discussione: problema con array

  1. #1

    problema con array

    ciao a tutti,ho questo codice:

    codice:
            <%
              set rs2 = Server.CreateObject("ADODB.Recordset")
              sql = "SELECT * FROM Categories WHERE Category = 1 AND Father=" & forzato & ""
              rs.Open sql, conn, 1, 3
              
              do while not rs.EOF
                name = rs("Name")
                id = rs("ID")
                
                set rstutte = Server.CreateObject("ADODB.Recordset")
                sqltutte = "SELECT * FROM Item WHERE ID_Categories=" & id & "OR ID_Categories=" & forzato & ""
                rstutte.Open sqltutte, conn, 1, 3
                int confin
                contfin = rstutte.recordcount
                redim ciccio(contfin)
                rstutte.movefirst
                i = 0
                do while not rstutte.EOF
                  
                  i = i + 1
                  if i MOD 2 = 0 then
                    colour = ("#E8F5FF")
                  else
                    colour = ("#FFFFFF")
                  end if
                  
                  itemid = rstutte("ID")
                  
                  int c
                  controllo = Split(Session("itemid"), ";")
                           
                  for c = 0 to contfin-1
                    
                    if CInt(controllo(c)) <> CInt(itemid) then    
                    
                      ciccio(c) = itemid
                      Session("itemid") = Session("itemid") + (itemid & ";")  
                  %>
                  <tr>
                  <td>
                  <%
                  Response.Write ("Prova") & controllo(c) & "
    "
                  Response.Write ("ID_Oggetto") & itemid & "
    "
                  %>
                  </td>
                  </tr>
                  <%   
                    end if
                  next
    
                  rstutte.movenext 
                  loop
                  
                  rs.movenext
                  loop        
                  rs.close
    %>
    ora,ho questo errore:

    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A0009)
    Indice non incluso nell'intervallo: 'c'
    /IKEA-DB/oggetti/cat2.asp, line 80

    dove la linea 80 è quella rossa.qualcuno sa dirmi dov'è il problema?io è un po' che ci giro intorno...senza trovare una soluzione,ovviamente...le ho provate un po' tutte.qualcuno sa darmi anche solo un'indicazione?

  2. #2
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    l'indice che hai richiesto (c) non esiste, controlla il valore prima di splittarlo

  3. #3
    come faccio a controllare il valore di Session("itemid")?se faccio una semplice response.write mi da errore dicendomi "tipo di dati privo di handle"...

  4. #4
    ok,niente,ho trovato come controllare,ho fatto:

    h = UBound(controllo)
    Response.Write h

    ora,facendomi stampare questa variabile ho quattro valori (ed è giusto che siano quattro)...
    il problema è che il primo valore è -1(almeno,penso sia questo il problema),e visto che nell'array non c'è valore associato all'indice -1 da erroe,giusto?
    ma perchè il primo valore è -1?

  5. #5
    niente di nuovo?

  6. #6
    il ciclo fallo da lbound(controllo) a ubound(controllo)

  7. #7
    eh,ma se ubound controllo è = -1 la pagina da errore...comunque eseguo:
    il codice ora è così:

    codice:
    set rs2 = Server.CreateObject("ADODB.Recordset")
              sql = "SELECT * FROM Categories WHERE Category = 1 AND Father=" & forzato & ""
              rs.Open sql, conn, 1, 3
              
              do while not rs.EOF
                name = rs("Name")
                id = rs("ID")
                
                set rstutte = Server.CreateObject("ADODB.Recordset")
                sqltutte = "SELECT * FROM Item WHERE ID_Categories=" & id & "OR ID_Categories=" & forzato & ""
                rstutte.Open sqltutte, conn, 1, 3
                int confin
                contfin = rstutte.recordcount
                redim ciccio(contfin)
                rstutte.movefirst
                i = 0
                do while not rstutte.EOF
                  
                  i = i + 1
                  if i MOD 2 = 0 then
                    colour = ("#E8F5FF")
                  else
                    colour = ("#FFFFFF")
                  end if
                  
                  itemid = rstutte("ID")
                  
                  int c
                  controllo = Split(Session("itemid"), ";")
                  h = UBound(controllo)
                  l = LBound(controllo)         
                  
                  Response.Write ("Valore minimo: ") & l & "
    "
                  Response.Write ("Valore massimo: ") & h & "
    "
                  
                  for c = l to h
                    
                    if CInt(controllo(c)) <> CInt(itemid) then  
                    
                      ciccio(c) = itemid
                      Session("itemid") = Session("itemid") + (itemid & ";")  
                  %>
                  <tr>
                  <td>
                  <%
                  Response.Write ("Prova = ") & controllo(c) & "
    "
                  Response.Write ("ID_Oggetto = ") & itemid & "
    
    "
                  %>
                  </td>
                  </tr>               <%   
                    end if
                  next
    
                  rstutte.movenext 
                  loop
                  
                  rs.movenext
                  loop        
                  rs.close
    ma la pagina non va comunque...o meglio,il risultato è questo:

    Valore minimo: 0
    Valore massimo: -1
    Valore minimo: 0
    Valore massimo: -1
    Valore minimo: 0
    Valore massimo: -1
    Valore minimo: 0
    Valore massimo: -1

    per cui non vedo niente in quella riga di tabella che nel mio codice è messa in rosso

  8. #8
    sicuro che Session("itemid") contenga qualcosa?

  9. #9
    la prima volta che il ciclo viene eseguito è vuota per forza...poi si riempie,ma se la splitto e poi mi faccio stampare tutti i valori il primo che vedo è -1 ,quindi penso sia lui che mi incasina...

  10. #10
    niente,posso capire che in effetti come quesito non è proprio semplice(in se è semplice,controllare cosa non va senza vedere gli effetti delle modifiche so che può essere dura...)-boh,se a qualcuno dovesse venire in mente qualcosa sono qui,posti pure...

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.