Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: ciclo for i con array

  1. #1
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916

    ciclo for i con array

    ciao a tutti.
    ho questo problema, ho fatto un array, e un ciclo per farmi dare una serie di risultati, ma non cicla, mi da solo il risultato del primo e poi errore.

    qua il codice:

    codice:
    '-------------splitto il codiceagente-----------------
    strIdagente = request.Form("idAgente")
    arr_id = split(strIdagente, ",")
    for i = 0 to UBound(arr_id)
    '--------connessione -----------
    set objconn= server.CreateObject("adodb.connection")
    objconn.open MM_connh3g_STRING
    '--------dati agente -----------
    set rs = server.CreateObject("adodb.recordset")
    strSQL = "SELECT * FROM tabagente WHERE codiceagente = '"&arr_id(i)&"'"
    rs.open strSQL, objConn, 0, 3
    '------------lista sub agenti--------------------------
    set rs1 = server.CreateObject("adodb.recordset")
    strSQL1 = "SELECT codiceagente FROM tabagente WHERE collegato = '"&arr_id(i)&"'"
    rs1.open strSQL1, objConn, 0, 3
    po sotto estraggo i valori normalmente cosi:
    <%=rs.Fields.Item("codiceagente").value%>
    ecc...

    dove sbaglio??


    l'errore è il solito:

    ADODB.Field error '800a0bcd'

    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.



    grazie!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  2. #2
    codice:
    set objconn = server.CreateObject("adodb.connection")
    objconn.open MM_connh3g_STRING
    
    strIdagente = request.Form("idAgente")
    arr_id = split(strIdagente, ",")
    
    for i = 0 to UBound(arr_id)
    
    set rs = server.CreateObject("adodb.recordset")
    strSQL = "SELECT * FROM tabagente WHERE codiceagente = '"&arr_id(i)&"'"
    rs.open strSQL, objConn, 0, 3
    
    if not rs.eof then
    response.write rs.Fields.Item("codiceagente").value & "
    "
    else
    response.write "nessun dato corrispondente
    "
    end if
    
    set rs1 = server.CreateObject("adodb.recordset")
    strSQL1 = "SELECT codiceagente FROM tabagente WHERE collegato = '"&arr_id(i)&"'"
    rs1.open strSQL1, objConn, 0, 3
    
    if not rs1.eof then
    response.write rs1.Fields.Item("codiceagente").value & "
    "
    else
    response.write "nessun dato corrispondente...
    "
    end if
    
    rs1.close
    set rs = nothing
    
    rs.close
    set rs = nothing
    
    next
    
    objConn.close
    set objConn = nothing

  3. #3
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    :master:

    per la connessione ho capito...

    ma non posso creare tutti gli oggetti insieme sopra?e chiuderli tutti alla fine, perche devo prelevare parecchi dati.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  4. #4
    Ad ogni ciclo devi aprire e chiudere i recordset.
    La connessione invece la apri solo all'inizio e la chiudi alla fine.
    Oppure ottimizza le tabelle del tuo db.
    L'errore che ottieni, comunque, sta nel fatto che dai per scontato che i dati selezionati dal db siano presenti. L'errore, infatti, dice che non trova corrispondenze sul database. Per ovviare all'errore biasogna controllare se il recordset restituitoci è vuoto o meno, mediante l'istruzione
    codice:
    if not rs.eof then
    ' leggiamo dal recordset perchè non è vuoto, ovvero EOF (End Of File)
    else
    ' il recordset è vuoto e agiamo di conseguenza
    end if

  5. #5
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    ma sono sicuro che i campi ci sono nel db, perche singolarmente me li da giusti, è solo da quando ho messo il ciclo che mi da solo il primo che trova e poi da errore...
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  6. #6
    Ci credo, ma prova a mettere il controllo...

  7. #7
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Originariamente inviato da Mems
    Ci credo, ma prova a mettere il controllo...
    non da errore ma lascia il campo vuoto...invece i dati ci sono!


    ti metto tutto il codice, perche forse prima ho omesso alcune cose:

    codice:
    '-------------splitto il codiceagente-----------------
    strIdagente = request.Form("idAgente")
    arr_id = split(strIdagente, ",")
    for i = 0 to UBound(arr_id)
    '--------dati agente -----------
    set rs = server.CreateObject("adodb.recordset")
    strSQL = "SELECT * FROM tabagente WHERE codiceagente = '"&arr_id(i)&"'"
    rs.open strSQL, objConn, 0, 3
    '------------lista sub agenti--------------------------
    set rs1 = server.CreateObject("adodb.recordset")
    strSQL1 = "SELECT codiceagente FROM tabagente WHERE collegato = '"&arr_id(i)&"'"
    rs1.open strSQL1, objConn, 0, 3
    '------------numero contratti a buon fine--------------------
    set rs2 = server.CreateObject("adodb.recordset")
    strSQL2 = "SELECT SUM (usim) AS tot_cont FROM tabcontratto WHERE codiceagente = '"&arr_id(i)&"' AND accettato = true"
    rs2.open strSQL2, objConn, 0, 3
    '--------------totale contratti------------------------
    set rs3 = server.CreateObject("adodb.recordset")
    strSQL3 = "SELECT SUM (usim) AS tot_cont FROM tabcontratto WHERE codiceagente = '"&arr_id(i)&"' "
    rs3.open strSQL3, objConn, 0, 3
    %>
        <table width="60%"  border="1" cellpadding="0" cellspacing="0"> 
           <tr> 
            <td colspan="3"><div align="center">VISUALIZZA AGENTE</div></td> 
          </tr> 
           <tr> 
            <td colspan="2">Codice Agente </td> 
            <td width="33%"><%=(rs.Fields.Item("codiceagente").value)%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Livello</td> 
            <td> <%=rs.Fields.Item("livello").value%> </td> 
          </tr> 
           <tr> 
            <td colspan="2"> <%if rs.Fields.Item("livello").value <> "1" then
    			response.Write("Collegato ad agente")
    			response.Write"</td>"
                response.Write "<td>"
    			response.Write (rs.Fields.Item("collegato").value)
    			else
    			response.Write("Subagenti collegati")
    			response.Write"</td>"
                response.Write "<td>"
    			do while not rs1.eof
    			response.Write (rs1.Fields.Item("codiceagente").value &"
    ")
    			subAgente = subAgente &"'"& rs1.Fields.Item("codiceagente").value&"'," 
    			rs1.movenext
    			loop
    			end if
    			
    			%> 
     </td> 
          </tr> 
           <tr> 
            <td colspan="2">Data inizio contratto </td> 
            <td><%=rs.Fields.Item("datainizio").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Data fine contratto </td> 
            <td><%=rs.Fields.Item("datafine").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2"></td> 
            <td></td> 
          </tr> 
           <tr> 
            <td colspan="2">ANAGRAFICA AGENTE </td> 
            <td></td> 
          </tr> 
           <tr> 
            <td colspan="2">Nome</td> 
            <td><%=rs.Fields.Item("nomea").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Cognome</td> 
            <td><%=rs.Fields.Item("cognomea").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Indirizzo</td> 
            <td><%=rs.Fields.Item("indirizzoa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Citt&agrave;</td> 
            <td><%=rs.Fields.Item("cittaa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">CAP</td> 
            <td><%=rs.Fields.Item("capa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Provincia</td> 
            <td><%=rs.Fields.Item("provinciaa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Nazione</td> 
            <td><%=rs.Fields.Item("nazionea").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">E-Mail</td> 
            <td><%=rs.Fields.Item("emaila").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Telefono</td> 
            <td><%=rs.Fields.Item("tela").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Cellulare</td> 
            <td><%=rs.Fields.Item("cela").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Fax</td> 
            <td><%=rs.Fields.Item("faxa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">Codice Fiscale </td> 
            <td><%=rs.Fields.Item("cfa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2">P.IVA</td> 
            <td><%=rs.Fields.Item("pivaa").value%></td> 
          </tr> 
           <tr> 
            <td colspan="2"></td> 
            <td></td> 
          </tr> 
           <tr> 
            <td colspan="2">DATI DALL' INIZIO </td> 
            <td></td> 
          </tr> 
           <tr> 
            <td colspan="2"></td> 
            <td> </td> 
          </tr> 
           <tr> 
            <td colspan="2">Totale usim </td> 
            <td><%
    			'do while not rs3.eof
    			if rs3.Fields.Item("tot_cont").value <> "" then
    			response.Write(rs3.Fields.Item("tot_cont").value)
    			else
    			response.Write("0")
    			end if
    			'rs3.movenext
    			'loop
    			%> </td> 
          </tr> 
           <tr> 
            <td colspan="2">Usim a buon fine </td> 
            <td><%
    			'do while not rs2.eof
    			if rs2.Fields.Item("tot_cont").value <> "" then
    			response.Write(rs2.Fields.Item("tot_cont").value)
    			else
    			response.Write("0")
    			end if
    			'rs2.movenext
    			'loop
    			%></td> 
          </tr> 
           <tr> 
            <td colspan="2"></td> 
            <td></td> 
          </tr>
    	  </table>
    	  <%
    rs.Close
    Set rs = Nothing
    rs1.Close
    Set rs1 = Nothing
    rs2.Close
    Set rs2 = Nothing
    rs3.Close
    Set rs3 = Nothing
    next%>
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  8. #8
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916


    uppo!!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  9. #9
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    in questo caso mi riesce senza alcun problema:

    codice:
    '--------connessione-----------
    set objconn= server.CreateObject("adodb.connection")
    objconn.open conn_lista
    
    strArticolo = request.Form("id")
    arr_id = split(strArticolo, ",")
    %>
    <table width="80%"  border="1" cellspacing="0" cellpadding="0" align="center">
    <tr><td colspan="3">Lista</td></tr>
      <tr>
        <td colspan="3" align="center"><h2>Hai prenotato i seguenti articoli</h2></td>
      </tr>
      <tr align="center">
      <td>Articolo</td>
      <td>Marca</td>
      <td>Descrizione</td>
      </tr>
      <%for i = 0 to UBound(arr_id)
    set rs1 = server.CreateObject("adodb.recordset")
    strSQL1 = "SELECT * from prodotti where id ="&arr_id(i)&" "
    rs1.open strSQL1, objConn, 0, 3
     %> 
      <tr>
        <td><%=rs1.fields.item("articolo").value%></td>
        <td><%=rs1.fields.item("marca").value%></td>
        <td><%=rs1.fields.item("descrizione").value%></td>
      </tr>
      <%next%>
      <tr><td colspan="3"></td></tr>
      <tr><td colspan="3">Per confermare gli articoli prenotati compila i seguenti campi</td></tr>
    </table>
    ma in quello di prima continua a darmi errore!!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  10. #10
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    non ci sto a capire + niente, perche nel primo caso mi dice che il record è vuoto solo al 2°ciclo mentre nel secondo esempio che ho fatto tutto funziona correttamente??
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

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.