Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    progress bar per export excel

    Ciao a tutti, stavolta da solo non ce la faccio... chiedo aiuto qui xke sono sicuro che qualcuno sapra darmi la risposta che cerco...

    allora, devo esportare un set di record (anche 6.000 per botta) da oracle in excel, e fin qui nessun problema... file con header modificato che costruisce una semplice tabella e la stampa nello stream del file...

    domanda.... siccome l esecuzione richiede spesso molto tempo... c e un sacrosanto modo di realizzare una progressbar in grado di restituirmi la percentuale di avanzamento in tempo reale (su una pagina aspx)???

    Avevo provato senza ajax, facendo il reload temporizzato di una pagina dentro un iframe, la quale mi stampava la percentuale che avevo memorizzato in sessione (nel file .xls in creazione, ad ogni record passato, incrementavo la stessa)... funziona... con un piccolo difetto... il tempo che sta paginetta nell iframe si carichi, visto che in esecuzione contemporanea c e il file di excel che si sta creando, partiva col conteggio oltre il 50%.... ho provato con un div e ajax da un file asp che mi restituiva sempre la variabile in sessione... stesso problema...

    non e che il mio workaround era corretto ma e stato progettato male il db? non so nemmeno se ci siano indici su quel db... purtroppo e un lavoro conto terzi e il db nn posso toccarlo, visto che in gestione ce l ha un altra ditta... mi date un parere? quasi quasi ci metto una semplice gif animata a sto punto...

  2. #2
    PS = qualsiasi pagina restituita dal server contemporaneamente quando interrogo piu di 100 record su quel db tende a piantarsi... non solo quelle relative il mio problema... mi sa che e la macchina stessa a sforzare... anche quando faccio query sul db via shell... il web server quasi si pianta... IIS me ne risente tantissimo... anche quando la richiesta non e generata da uno script...

  3. #3
    Ciao,
    Anche a me capita di lavorare sulle esportazioni, e quando carico un set con più di 5000 record ne sento il peso

    Io lavoro solo su MSSQL 2005, e quando il db è lento in genere è colpa del log che si è "gonfiato" troppo o degli indici che sono troppo frammentati. Capita in genere con l'utilizzo massivo del DB; prova a controllare sul tuo db oracle se ci possono essere le stesse problematiche...

    Per quanto riguarda l'export, non ti conviene usare un webservice?
    Ecco quello che farei io:

    WebMethod che viene "lanciato" da un bottone [1] dalla pagina di export (con, al suo interno, controlli per evitare lanci multipli dalla stessa sessione).
    Il WebMethod scrive in session la percentuale di completamento.
    La pagina va in postback (o ajax callback) automatico ed ogni reload visualizza la percentuale di completamento presa dalla session.
    Al termine dell'operazione il Webmethod scrive l'output in un file (o nella session. Meglio in un file) e in una session un valore true che serve per identificare il termine dell'operazione.
    La pagina legge il valore di completamento e va a leggersi il file excel così creato.

    P.s.[1]: all'onclick del bottone, ovviamente, vengono azzerate le variabili session relative al flusso di export.

    Il flusso così descritto può servire anche come servizio in differita:
    Lancio l'export di 10^n record. Quando termina mi arriva una mail col link per scaricare il file.

    Ciao,
    b.

  4. #4
    ciao b.,
    innanzitutto ti ringrazio tantissimo della risposta, molto chiara e concisa!!!

    Per quanto riguarda il db, Oracle è la prima volta che ci ho a che fare ed, oltretutto, non essendo mio il lavoro in appalto (la mia e una maschera ufficiosa per dimostrare quanto sia datato il vecchio sistema), non posso assolutamente metterci mano....

    Il sistema che mi hai descritto tu l'avevo tentato in questo modo:

    - barra di avanzamento sulla pagina "risultati.aspx" che automaticamente postava e rileggeva la variabile in sessione relativa alla %, mentre "export.aspx" creava il file .xls e, ad ogni record, incrementava la var in sessione... Fin qui tutto regolare, unico neo -> il server rallentava e la barra di avanzamento mi si visualizzava quando ormai l operazione era oltre il 50%, perche al postback la pagina "risultati.aspx" rimaneva in caricamento troppo a lungo... come se il server nn ce la facesse a elaborare le due pagine contemporaneamente...

    Ora ti chiedo, per curiosita: se creo un WebService avrei lo stesso problema? viene compilato ed interpretato con lo stesso peso di un aspx? o viene chiamato come fosse in background? con un altra priorita? ti parlo da ignorante xke di asp net non sono molto esperto...

  5. #5
    dimenticavo grazie ancora!!!!

  6. #6
    scusa se ti scrivo ancora ma rileggendo il mio messaggio ho notato che la domanda non era molto chiara... la mia domanda e:

    - a livello di processo applicativo sul server, un WebService risiede nello stesso processo della pagina da cui viene richiamato? perche nel mio caso la pagina "risultati" esportava facendo richiesta al server della pagina "export" (stessa application) e questo mi bloccava il caricamento di "risultati" sul browser... se invece richiamasse un "servizio", eseguito su un altro processo (risorse tutte sue), probabilmente risulterebbe come una richiesta di provenienza diversa, e non mi rallenterebbe tutta la routine...

    Non sto affermando nulla anzi, sto cercando di capire come funzione asp.net... purtroppo non ho tempo di testare questo workaround con altri linguaggi al momento, per capire se e davvero colpa solo del db o se sia colpa delle troppe risorse richieste dallo stesso richiedente (stessa sessione) che vengono limitate dal server.

    ciao e grazie ancora!!!

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.