Buongiorno a tutti!
Sto facendo una procedura che importa dati da xml in diverse tabelle di database.
L'utente è costretto ad aspettare diversi secondi che la procedura estrapoli i dati dall'xml, li rielabori e, infine, li scriva in sql.
Mi chiedevo se era possibile con qualche accorgimento di far vedere all'utente a che punto eravamo coi lavori.... una specie di barra d'avanzamento o un numero che s'incrementa a seconda di che record è stato creato.
Alcune operazioni le monitorizzo comunemente facendo aggiornare una casella di testo a video da un piccolo javascript:
codice:
Response.Write("<script langauge='JavaScript'>document.laMiaForm.laMiaCasella.value = " & numeroOperazioniSvolte & ";</script>")
ma, durante l'esecuzione di una query, sembra che questo non sia possibile.
esempio:
codice:
<%Response.Buffer = False%>
<form name="laMiaForm">
Importo l'articolo n°<input type="text" size="6" name="laMiaCasella" value="0">
</form>
<%
numeroOperazioniSvolte = 1
do while not rs.eof
' quì ad esempio aggiungo un record
Response.Write("<script langauge='JavaScript'>document.laMiaForm.laMiaCasella.value = " & numeroOperazioniSvolte & ";</script>")
numeroOperazioniSvolte = numeroOperazioniSvolte + 1
rs.movenext
loop
%>
Il problema è che, come tutte le pagine ASP, il server elabora il tutto prima dell'output a video e mi restituisce, dopo una lunga pausa, la casella di testo con già il valore dell'ultimo record raggiunto (es. 1800° record).
Come dicevo prima, per alcuni tipi di operazioni mi è possibile farlo settando il buffer a False. Ad esempio, in una procedura che invia una serie di mail ad indirizzi presi da db, si vede la casellina che si aggiorna man mano che le mail sono state inviate (intendo senza refresh di pagina ovviamente).
Anche se a naso mi sembra impossibile ho pensato che, magari, qualcuno di voi era stato tanto brillante da aver inventato un barbatrucco per intrattenere l'utente durante operazioni particolarmente lunghe e noiose senza dovergli portare un caffè ogni volta.
Spectrumino