Ciao a tutti!
Sono un programmatore .NET che al momento sto lavorando ad un sito ASP.
Ho una pagina che al click su un button deve:
1)Eseguire una query di select da un db.
2)Popolare un relativo recordset.
3)Generare un file excel con i dati del recordset sul un server.
4)Visualizzare la classica finestra APRI/SALVA come popup.
La procedura funziona correttamente (e direi perfettamente, visti comunque i tempi di risposta molto ridotti) se dalla pagina chiamante avvio la ricerca con alcuni parametri.
Se invece voglio una ricerca globale, senza filtri, l'applicativo non funziona correttamente, e allora chiedo aiuto a voi.
La ricerca globale prevede 4900 records, ognuno dei quali ha circa 30 colonne.
L'excel relativo viene (dopo circa 15 minuti) generato sul filesystem ma nel frattempo la pagina visualizzata sul browser "scade" (viene il classico messaggio "IMPOSSIBILE VISUALIZZARE LA PAGINA...") e quindi non mi viene la finestra APRI / SALVA.
Dal basso della mia esperienza, credo si tratti di un problema di timeout, ma ho già giocato sui vari timeout a me conosciuti senza ottenere cambiamenti.
Qualcuno può aiutarmi?
Allego il codice della pagina che genera l'excel!
Grazie!
<!--METADATA TYPE="typelib"
UUID="00000205-0000-0010-8000-00AA006D2EA4"
NAME="ADODB Type Library"
-->
<!-- #include file="../../connessione.asp" -->
<%
Session.Timeout=120 ' Durata della sessione -> 2 ore!!!
Server.ScriptTimeout=5400 ' Tempo di attesa per il completamento dello script -> 1.5 ore!!!
Response.Expires=now()-2
response.Buffer = true
response.AddHeader "pragma", "no-cache"
response.AddHeader "cache-control", "private"
response.CacheControl = "no-cache"
strNome = "ElencoCollaboratori.xls"
' stream generico, IE chiede di salvare
Response.ContentType = "octet/stream"
' imposto il nome del file
Response.AddHeader "Content-Disposition", "attachment;filename=" & StrNome
' Nome temporaneo del file Excel
temp_excel_file = "excel_collaboratori_" & time()
' Gestione query
sSql= mia query
' Bindo il recordset
set rs = server.createObject("ADODB.Recordset")
rs.open sSql, connessione, adOpenStatic,adLockReadOnly
record = rs.RecordCount
rs.MoveFirst()
' Generazione file excel
tabella_collaboratori = ""
path_modello = Server.mappath("/collaboratori/download/modello/modello_excel.txt")
For i = 0 to record-1
tabella_collaboratori = tabella_collaboratori & "<tr>"
tabella_collaboratori = tabella_collaboratori & "<td>"& rs.fields("miaQuery_campo1") &"</td>"
tabella_collaboratori = tabella_collaboratori & "<td>"& rs.fields("miaQuery_campo2") &"</td>"
tabella_collaboratori = tabella_collaboratori & "<td>"& rs.fields("miaQuery_campo3") &"</td>"
tabella_collaboratori = tabella_collaboratori & "<td>"& rs.fields("miaQuery_campo4") &"</td>"
...
...
tabella_collaboratori = tabella_collaboratori & "</tr>"
if (i <> record-1) then
rs.MoveNext()
end if
Next
end if
rs.close
set rs = nothing
connessione.close
set connessione = nothing
' Path
path_temp = Server.mappath("/collaboratori/download/temp/"& temp_excel_file &".xls")
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(path_modello)
file_letto = a.readall
a.Close
set a = nothing
'Scrive sul file di testo il nuovo valore
Set a = fs.CreateTextFile(path_temp, True)
set fs = nothing
file_letto = replace(file_letto, "[collaboratori]", tabella_collaboratori)
a.write(file_letto)
a.Close
set a = nothing
response.Flush()
response.Clear()
xls = temp_excel_file
path_temp = server.mappath("/AnagraficaSubage/collaboratori/download/temp/"& xls &".xls")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
objStream.LoadFromFile path_temp
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
response.Flush()
response.end()
%>
LuxSkyWalker
Junior Developer .NET