Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Limite del numero di parametri sulla stringa di comando

    Ciao a tutti,
    spero di riuscire a spiegare bene il mio problema.

    Da form "madre" apro una "popup" (chiamata nomefilecode.asp) che mi visualizza una lista di item da scegliere (check).
    Una volta scelti, la popup
    a) richiama se stessa
    b) inserisce sul db con una procedura pl/sql
    c) si chiude e fa refresh della madre
    d) aggiornamento dei dati nella madre

    Il dati della popup e della form madre sono in una base dati.

    I valori possono essere scelti manualmente, uno ad uno, oppure cliccando su un link "tutti" che li seleziona automaticamente.

    Il tutto funziona (anche l'opzione "tutti" ), quando il numero degli item scelto è basso (non so quantificarlo esattamente), mentre se il numero è notevole (è prevista la possibilità di arrivare fino a 600), il tutto si blocca, senza dare alcun errore.

    Io credo che dipenda dal numero di parametri "accettabili". Infatti nel caso di pochi parametri la stringa di comando è la seguente

    codice:
    nomefilecode.asp?search=&FLAG_PUBB=N&vc_flagconf=S&vn_codiboll=1289&record_226318=226318&record_226315=226315&record_226314=226314&record_226313=226313
    A qualcuno è mai successo un qualcosa di simile ed eventualmente come ha risolto?

    Qui di seguito vi invio lo schema del codice che utilizzo, dove tolgo tutto quello che non serve.

    codice:
    <script language="javascript">
    
    function checkCommit()
    {
     	document.datiform.vc_flagconf.value='S';
     	document.datiform.submit();
    }
    </script>
    
    </script>
    
    
    </head>
    
    <body bgcolor="#f0f0f0">
    <%
    	str_FLAG_PUBB = Request.QueryString("FLAG_PUBB")
    	vc_flagconf = Request.QueryString("vc_flagconf")
    	strSearch = Request.QueryString("search")
    	strSearch = Replace(strSearch, "'", "''")
    	vc_data = Request.QueryString("DATA_INIZ_VALI")
    
    	set currboll =     request("vn_codiboll")
    
    	if vc_flagconf <> "S" then
    		sql = "SELECT to_char(sysdate,'yyyy') anno, to_char(sysdate,'dd/mm/yyyy') vc_data FROM dual"
    		Set rs = Server.CreateObject("ADODB.Recordset")
    		Set cn = Server.CreateObject("ADODB.Connection")
    		cn.Open  application("ConnDB")
    		Set rs.ActiveConnection = cn
    		rs.Open sql, cn
    		vc_data= rs("vc_data")
    		rs.close
    
    		Set con = Server.CreateObject("ADODB.Connection")
    		con.Open  application("ConnDB")
    
    		if str_FLAG_PUBB<>"S"  then
    			'ENTRO COME NON PUBBLICATI
    			
    			SQL = "SELECT * " _
    			&" FROM v_Asp_ANAGAVVI " _
    			....
    		else
    
    			'ENTRO COME PUBBLICATI
    
    	    		SQL = "SELECT * " _
    			&" FROM v_Asp_ANAGAVVI " _
    			....
    		end if
    
    		Set rsscrip = con.Execute(sql)
    
    		if not rsscrip.EOF then
    		%>
    			<script language="javascript">
     				function selezionatutti(){
    				<%
       					do while not(rsscrip.eof)
    					id = rsscrip("CODI_AVVI")
    				%>
    				
    				document.forms.datiform.record_<%=id%>.checked = true;
    				
     				<% 	rsscrip.MoveNext
    					Loop%>
    			}
       			</script>
    		<%
    		end if
    		rsscrip.Close
           		set rsscrip = Nothing
    
    		Set rs = con.Execute(sql)
    
    		%>
    		<form name="datiform" action="<%= strURL %>?vc_flagconf=S" method="get">
    		<font class="titololista">Numero: </font>
    			<input name="search"  class="campinotnull" value="<%= strSearch %>" size="15" />
    				<font class="titololista">
             			<select name="FLAG_PUBB" class="campinotnull">
              	 			<option value="N"  <%if  str_FLAG_PUBB="N" then response.write("SELECTED")%>>Non Pubblicati</option>
              	 			<option value="S" <%if  str_FLAG_PUBB="S" then response.write("SELECTED")%>>Pubblicati</option>
              			</select>
    		</font>
    		
    
    		
    
    		<center>
    			<input type="submit" value="Ricerca" onClick="Modulo()" class="campiform" onMouseOver="this.className='campiform2'" onmouseOut="this.className='campiform'" />
    			<input type="submit" onClick="javascript:checkCommit()"  value="Conferma" class="campiform">
    		</center>
    		
    
    
     	   	<input type="hidden" name="vc_flagconf" value="N">
           		<input type="hidden" name="vn_codiboll" value="<%= currboll%>" />
    		<%
        		if not rs.EOF then
    		%>
    			<table border="1">
    				<tr>
    					<th class=testolabel>Numero</th>
    					<th	class=testolabel>ENTE</th>
    					<th class=testolabel>Tutti</th>
    				</tr>
    				<%
    					Do While Not rs.EOF
    					id = rs("CODI_AVVI")
    				%>
    				<tr>
    					<td valign="top" class=testolista><%= rs("nume_avvi") %></td>
    					<td valign="top" class=testolista><%= rs("DESC_DENO_ENTE") %></td>
    					<td valign="top" class=testolista><input type="checkbox" name="record_<%=id%>" value="<%=id%>"></td>
    				</tr>
       				<%
       					rs.MoveNext
    					Loop
    				%>
    			</table>
    
     			<p align="center">
     				<input type="submit" onClick="javascript:checkCommit()"  value="Conferma" class="campiform">
     			</p>
    		<%
    			else
    		%>
    			<p class="errori" >
          			Non risultano Avvisi da inserire
          		</p>
    		<%
    			end if
    		%>
    
        <table>
        </form>
    
    <%
    	else
    
    	' Entro qui se ho fatto commit e quindi vc_flagconf uguale a S
    	
    %>
    
    	<form name="datiform" action="<%= strURL %>?vc_flagconf=S&vn_codiboll=<%=currboll%>" method="get">
    	<%
    		
    		response.write "STRINGA"&strSearch
    		Set con = Server.CreateObject("ADODB.Connection")
    		con.Open  application("ConnDB")
    		
    			if str_FLAG_PUBB="N" then
    				SQL = "SELECT CODI_AVVI " _
    				& "FROM ANAGAVVI " _
    				...
    			else
    				SQL = "SELECT CODI_AVVI " _
    				& "FROM ANAGAVVI " _
    				...
    			end if		
    		end if
    
    		response.write "SECONDA SELECT "&SQL&"
    "
    
    		Set rs = con.Execute(sql)
    	   	i=0
    	   	if not rs.EOF then
    		     Do While Not rs.EOF
    
    				record = request("record_" & rs("codi_avvi"))
    
    				if len(record) <> 0 then
    					i=i+1
          	
    					iStoredProc = 4
    					Set conn = Server.CreateObject("ADODB.Connection")
    					set command = Server.CreateObject("ADODB.Command")
    					conn.Open  application("ConnDB")
    					con.CommandTimeout = 8000
    					Server.ScriptTimeout = 9000
    					command.ActiveConnection = conn
    					command.CommandText = "PR_MODIXXXX"
    					command.CommandType = iStoredProc
    					set objParameter = command.CreateParameter ("VN_CODI_BOLL_AVVI",200,1,10,"")
    					command.Parameters.Append objParameter
    					set objParameter = command.CreateParameter ("VC_ROWID",200,1,50,"")
    					command.Parameters.Append objParameter
    					set objParameter = command.CreateParameter ("VC_CODICAPO",200,1,100,record)
    					command.Parameters.Append objParameter
    					set objParameter = command.CreateParameter ("VC_CODIBOLL",200,1,100,request("vn_codiboll"))
    					command.Parameters.Append objParameter
    					set objParameter = command.CreateParameter ("VC_USERPROC",200,1,50,vc_user)
    					command.Parameters.Append objParameter
    					set objParameter = command.CreateParameter ("VC_CODITIPOOPER",200,1,2,"I")
    					command.Parameters.Append objParameter
    
    					'PAREMETRI OUTPUT
    					set objParameter = command.CreateParameter ("vc_codierro",200,2,16)
    					command.Parameters.Append objParameter
    					set objParameter = command.CreateParameter ("vc_descerro",200,2,200)
    					command.Parameters.Append objParameter
    					command.Execute , , adExecuteNoRecords
    
    					vc_risuinse = command.Parameters("vc_descerro")
    					vc_codirisuinse = command.Parameters("vc_codierro")
    					Response.write "esito " & vc_risuinse
    					record =""
    					end if
    
       		rs.MoveNext
        	Loop
    	end if
    %>
       <script language="JavaScript">
           window.opener.location.reload();
           this.close();
       </script>
    
         </form>
    <%end if	%>

  2. #2
    prova a passarli in una session invece che in qs

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da optime
    prova a passarli in una session invece che in qs
    Ho provato ma non ci sono riuscito.
    Potresti postarmi il codice che inseriresti te?

    Grazie intanto per la risposta.

    ciao ciao

  4. #4
    fa' vedere come hai provato, che lo si sistema

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    La modifica (almeno per me) è troppo lunga e al momento non ho troppo tempo per implementarla.

    Per ora risolvo permettendo di selezionare 50 record per volta. Il caricamento impiega un minuto. Oltre i 50 le prestazioni decadono o si blocca.

    Se vi interessa la modifica è la semplice introduzione di una "if" all'interno della funzione selezionatutti(), il cui codice completo ho postato sopra, che modifico così

    codice:
    ....
    		if not rsscrip.EOF then
    		%>
    			<script language="javascript">
     				function selezionatutti(){
    				<%
       					do while not(rsscrip.eof)
    
       					icont=icont+1
       					if icont<=50 then
       						id = rsscrip("CODI_AVVI")
       					end if
    				%>
    
    				document.forms.datiform.record_<%=id%>.checked = true;
    
     				<% 	rsscrip.MoveNext
    					Loop%>
    			}
       			</script>
    		<%
    			end if
    .....
    Ancora non capisco però se è un problema di Browser, di Asp oppure semplicemente di tempi di elaborazione troppo lunghi.

    Grazie dei consigli e appena avrò tempo implementerò (e cercherò di far funzionare) il suggerimento di optime.


  6. #6
    Utente di HTML.it L'avatar di AvOJaromil
    Registrato dal
    Feb 2006
    residenza
    laddove si stagiona formaggio dentro a dei grossi buchi di tufo
    Messaggi
    549
    dal momento che tramite get le variabili le spedisci interpolate nell'url c'è un limite massimo di caratteri che questo puo contenere. ad esempio ie sopporta al massimo 2083 caratteri (http://support.microsoft.com/kb/208427/it). comunque credo sia per tutti simile.
    come ti è già stato consigliato spedisci tutto in una variabile di sessione, oppure (credo si possa fare) tramite metodo POST con XMLHttp di ajax

    per il "seleziona tutti" se ho capito bene, puoi farlo fare al client senza asp:
    Codice PHP:
    <script language="Javascript" type="text/javascript">
    function 
    selezionaTutti()
    {

        var 
    elementi window.document.nomeForm;
        var 
    numeroElementi elementi.length;
             
        for (var 
    numeroElementi i++ )
        {
            if 
    elementi[i].type == "checkbox")
            { 
                (
    ielementi[i].checked==false) ? elementi[i].checked=true elementi[i].checked=false;
                
                
            }
        }

    }
    </script> 
    "homer sei tonto come un mulo e due volte più brutto. se uno sconosciuto ti offre un passaggio tu devi accettarlo..."

    www.flickr.com/photos/asciella/
    www.lastfm.it/user/qvaioe/

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Grazie del suggerimento e delle informazioni che mi hai inviato.

    Al momento però sono costretto a risolvere come indicato in un post precedente, per problemi di tempi e di risoluzione di altre funzionalità.

    Appena implemento la soluzione, post di nuovo qui il nuovo codice.

    Grazie mille ancora.


  8. #8
    ho solo dato una rapida occhiata a quello che fai nel ciclo: sembra che tu aggiorni n records tutti con lo stesso valore (che deduci dalla form): è giusto? o i valori cambiano?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.