Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Monitorare una query

  1. #1

    Monitorare una query

    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

  2. #2
    Scusate ho risolto

    Nella pagina vera, non l'esempio, facevo eseguire la query troppo presto... prima ancora che fosse finita di disegnare a video perfino la form che doveva compilare. Adesso si vede un contatore che, in tempo reale, informa l'utente su che record è stato raggiunto dalla query di aggigornamento.

    Funziona benone e credo sia utile in tutti quei casi in cui le operazioni, nonostante l'ottimizzazione del codice, si fanno lunghe.

    A presto, Spectrumino

    P.S. ma, secondo voi, il response.buffer = False lo posso usare senza problemi in questi casi o rallenta ulteriormente e troppo l'esecuzione del tutto?

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.