Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Select dinamiche e loro funzionamento

    Buonasera a tutti.

    Ho trovato con la ricerca sul forum un interessante script che utilizza il metodo OnChange per il popolamento di select dinamiche.

    Riesco a farlo funzionare, ma ho un problema quando devo splittare il valore restituito dalla prima select, perchè il codice restituisce:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A000D)
    Tipo non corrispondente
    Ecco il codice:
    codice:
    <%
    strSql = "SELECT * FROM SCHEDA_IMPIANTO ORDER BY NOMEFORNITORE ASC"
    
    Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.Open strSql, objCONN, 3, 3
    %>
            <select size="1" name="NOMEFORNITORE" onChange="window.document.location='forminsdescrmercefornitore.asp?NOMEFORNITORE='+this.options[this.selectedIndex].value+'';">
            
    <% NOMEFORNITORESEL = request("NOMEFORNITORE") %>    
    <option value="<%=NOMEFORNITORESEL%>"><%=NOMEFORNITORESEL%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = Trim(objRs("ID")) %>-<% = Trim(objRs("NOMEFORNITORE")) %>"><% = Trim(objRs("ID")) %>-<%  = Trim(objRs("NOMEFORNITORE")) %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    
    <%
    NOMEFORNITORE = request("NOMEFORNITORE")
    
    NOMEFORNITORE  = Split(NOMEFORNITORE , "-") 
    NOMEFORNITORE1 = NOMEFORNITORE (0)
    NOMEFORNITORE2 = NOMEFORNITORE (1) 
    
    strSql = "SELECT * FROM SCHEDA_IMPIANTO WHERE NOMEFORNITORE = '"&NOMEFORNITORE&"' ORDER BY NOMEFORNITORE ASC"
    objRs.Open strSql, OBJCONN, 3, 3
    %>
            <select name="CodiceProdottoFornitore" onChange="window.document.location='forminsdescrmercefornitore.asp?CODICEPRODOTTOFORNITORE='+this.options[this.selectedIndex].value+'&NOMEFORNITORE=<%=NOMEFORNITORE%>';">
    
    <% CodiceProdottoFornitoresel = request("CodiceProdottoFornitore") %>    
    <option value="<%=CodiceProdottoFornitoresel%>"><%=CodiceProdottoFornitoresel%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = objRs("CodiceProdottoFornitore") %>"><%  = objRs("CodiceProdottoFornitore") %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    L'errore è sulla riga rossa.

    Grazie per eventuali suggerimenti.

  2. #2
    Forse non mi sono spiegato....

    nella prima select ho necessita' di avere un valore del tipo:
    codice:
    4-Pippo
    Il problema e' che quando passo alla seconda select dinamica non funziona piu' niente perche' non riesco a splittare quanto mi arriva dalla prima select, mi seguite? :master:

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    NOMEFORNITORE = request("NOMEFORNITORE")
    
    ARR_NOMEFORNITORE  = Split(NOMEFORNITORE , "-") 
    NOMEFORNITORE1 = ARR_NOMEFORNITORE(0)
    NOMEFORNITORE2 = ARR_NOMEFORNITORE(1)
    Roby

  4. #4
    Grazie moderatore, ho scritto così:
    codice:
    <%
    strSql = "SELECT * FROM SCHEDA_IMPIANTO ORDER BY NOMEFORNITORE ASC"
    
    Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.Open strSql, objCONN, 3, 3
    %>
            <select size="1" name="NOMEFORNITORE" onChange="window.document.location='forminsdescrmercefornitore.asp?NOMEFORNITORE='+this.options[this.selectedIndex].value+'';">
            
    <% NOMEFORNITORESEL = request("NOMEFORNITORE") %>    
    <option value="<%=NOMEFORNITORESEL%>"><%=NOMEFORNITORESEL%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = Trim(objRs("ID")) %>-<% = Trim(objRs("NOMEFORNITORE")) %>"><% = Trim(objRs("ID")) %>-<%  = Trim(objRs("NOMEFORNITORE")) %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    
    <%
    NOMEFORNITORE = request("NOMEFORNITORE")
    
    ARR_NOMEFORNITORE  = Split(NOMEFORNITORE , "-") 
    NOMEFORNITORE1 = ARR_NOMEFORNITORE(0)
    NOMEFORNITORE2 = ARR_NOMEFORNITORE(1)   
    
    strSql = "SELECT * FROM SCHEDA_IMPIANTO WHERE NOMEFORNITORE = '"&NOMEFORNITORE2&"' ORDER BY NOMEFORNITORE ASC"
    objRs.Open strSql, OBJCONN, 3, 3
    %>
            <select name="CodiceProdottoFornitore" onChange="window.document.location='forminsdescrmercefornitore.asp?CODICEPRODOTTOFORNITORE='+this.options[this.selectedIndex].value+'&NOMEFORNITORE=<%=NOMEFORNITORE%>';">
    
    <% CodiceProdottoFornitoresel = request("CodiceProdottoFornitore") %>    
    <option value="<%=CodiceProdottoFornitoresel%>"><%=CodiceProdottoFornitoresel%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = objRs("CodiceProdottoFornitore") %>"><%  = objRs("CodiceProdottoFornitore") %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    Ma quando richiamo la pagina per la prima volta restituisce:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A0009)
    Indice non incluso nell'intervallo: '[number: 0]'
    /GEST/pagina.asp, line 184

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ah! Mi pareva....
    Allora l'errore è la prima volta ed è giusto che sia così.
    Tu fai eseguire sempre e comunque il codice di split ma la prima ovviamente cos'ha da splittarsi? Un bel niente perché il form non l'hai ancora eseguito....

    Quindi devi spezzare il codice con un IF
    La prima parte la esegui sempre, la seconda SOLO se l'onchange ha avuto effetto.

    Roby

  6. #6
    Ho capito... ma come faccio a prevedere una condizione IF SOLO se l'onchange ha avuto effetto ???? Intendi "spezzare" no spazzare, vero?

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Originariamente inviato da Vitacillina
    Ho capito... ma come faccio a prevedere una condizione IF SOLO se l'onchange ha avuto effetto ???? Intendi "spezzare" no spazzare, vero?
    Metti questo

    codice:
    NOMEFORNITORE = request("NOMEFORNITORE")
    in cima allo script. Poi

    codice:
    <%if len(NOMEFORNITORE) > 0 then%>
    L'onchange ha avuto effetto
    <%else%>
    sei appena entrato
    <%end if%>
    Roby

  8. #8
    Non va, certamente sbaglio qualcosa...
    codice:
    <% 
    
    Session.LCID = 1040 
    
    Response.Expires = -1500 
    Response.ExpiresAbsolute = now()-1500
    Response.Addheader "pragma","no-cache"
    Response.Addheader "cache-control","private"
    Response.Cachecontrol="no-cache"
    
    NOMEFORNITORE = request("NOMEFORNITORE")
    
    %>
    
    <%
    strSql = "SELECT * FROM SCHEDA_IMPIANTO ORDER BY NOMEFORNITORE ASC"
    
    Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.Open strSql, objCONN, 3, 3
    %>
            <select size="1" name="NOMEFORNITORE" onChange="window.document.location='forminsdescrmercefornitore.asp?NOMEFORNITORE='+this.options[this.selectedIndex].value+'';">
            
    <% NOMEFORNITORESEL = request("NOMEFORNITORE") %>    
    <option value="<%=NOMEFORNITORESEL%>"><%=NOMEFORNITORESEL%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = Trim(objRs("ID")) %>-<% = Trim(objRs("NOMEFORNITORE")) %>"><% = Trim(objRs("ID")) %>-<%  = Trim(objRs("NOMEFORNITORE")) %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    
    <%
    
    if len(NOMEFORNITORE) > 0 then
    response.write "L'onchange ha avuto effetto"
    else
    response.write "sei appena entrato"
    end if
    
    
    ARR_NOMEFORNITORE  = Split(NOMEFORNITORE , "-") 
    NOMEFORNITORE1 = ARR_NOMEFORNITORE(0)
    NOMEFORNITORE2 = ARR_NOMEFORNITORE(1)   
    
    strSql = "SELECT * FROM SCHEDA_IMPIANTO WHERE NOMEFORNITORE = '"&NOMEFORNITORE2&"' ORDER BY NOMEFORNITORE ASC"
    objRs.Open strSql, OBJCONN, 3, 3
    %>
            <select name="CodiceProdottoFornitore" onChange="window.document.location='forminsdescrmercefornitore.asp?CODICEPRODOTTOFORNITORE='+this.options[this.selectedIndex].value+'&NOMEFORNITORE=<%=NOMEFORNITORE%>';">
    
    <% CodiceProdottoFornitoresel = request("CodiceProdottoFornitore") %>    
    <option value="<%=CodiceProdottoFornitoresel%>"><%=CodiceProdottoFornitoresel%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = objRs("CodiceProdottoFornitore") %>"><%  = objRs("CodiceProdottoFornitore") %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>

  9. #9
    Modifico così:
    codice:
    if len(NOMEFORNITORE) > 0 then
    
    NOMEFORNITORE  = Split(NOMEFORNITORE , "-") 
    NOMEFORNITORE1 = NOMEFORNITORE(0)
    NOMEFORNITORE2 = NOMEFORNITORE(1) 
    
    strSql = "SELECT * FROM SCHEDA_IMPIANTO WHERE NOMEFORNITORE = '"&NOMEFORNITORE2&"' ORDER BY NOMEFORNITORE ASC"
    objRs.Open strSql, OBJCONN, 3, 3
    
    ...
    
    else
    response.write "sei appena entrato"
    end if
    Ma restituisce:
    Tipo di errore:
    Oggetto risposta, ASP 0106 (0x80020005)
    È stato individuato un tipo di dati privo di handle.

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Riposta tutto lo script modificato.

    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.