Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Crystal Reports e reportistica
Stampa: invece che aprire l'anteprima, mi ricarica la pagina del repor...
mercoledì 17 dicembre 2008 - 15.20
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ellis
Profilo
| Newbie
2
messaggi | Data Invio:
mer 17 dic 2008 - 15:20
Ciao a tutti,
il mio problema è che non riesco più a stampare i report con reportviewer.
Purtroppo sono nuovo di crystal report su asp.net, quindi ho riscontrato alcuni problemi. Nel cercare di risolverli ho scoperto che la stampa non funzionava più. Ma procediamo con ordine:
1) Stamattina il report si apriva in visualizzazione con reportviewer, si aggiornava, stampava e esportava. Il problema è che queste 2 ultime funzionalità (stampa ed esportazione) restituivano il report coi dati al suo interno salvati, anche se avevo appena aggiornato lo stesso.
2) per risolvere il problema ho fatto 2 cose:
a. Ho aggiunto un reportSource. A quest'ultimo ho fatto puntare il datasource del reportviewer. Successivamente ho modificato il codice in modo che passasse il report al Source invece che al Viewer.
b. fatto questo, al termine del processo di renderizzazione del riport, salvo lo stesso, in modo da avere sempre il report con gli ultimi dati aggiornati. (ovviamente quando lancio l'aggiornamento del report, al termine, scateno anche l'evento posteriore prerender, di conseguenza lo aggiorno coi dati aggiornati)
A questo punto il salvataggio del report funziona bene, ma ho scoperto che non riesco più a stampare i report, ne ad esportarli. Quando clicco su uno dei 2 pulsanti, mi apre la relativa finestra delle opzioni, ma quando confermo, all'interno della finestra, mi riapre la pagina dei report, invece dell'anteprima.
allego un po' di codice in modo che sia più chiaro:
.ascx (si tratta di un controllo che ho creato in modo da poterlo riutilizzare in + pagine):
...
<%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
...
...
<CR:CrystalReportViewer ID="crvReportViewer" runat="server" AutoDataBind="true" HasRefreshButton="True" Height="1103px" ReuseParameterValuesOnRefresh="True" Width="350px" ReportSourceID="crsReportSource" />
<CR:CrystalReportSource ID="crsReportSource" runat="server" />
...
.ascx.vb:
...
' Imposto il ReportDocument del ReportSource
crsReportSource.ReportDocument.FileName = objFileInfo.PhysicalPath
crsReportSource.DataBind()
...
' Salvo il report dopo il prerender del report
crsReportSource.ReportDocument.SaveAs(crsReportSource.ReportDocument.FileName, True)
Qualche idea su come risolvere?
grazie
Ellis
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 22 dic 2008 - 16:18
>1) Stamattina il report si apriva in visualizzazione con reportviewer,
>si aggiornava, stampava e esportava. Il problema è che queste
>2 ultime funzionalità (stampa ed esportazione) restituivano il
>report coi dati al suo interno salvati, anche se avevo appena
>aggiornato lo stesso.
probabilmente non gli passi i dati tu, o cmq i parametri di connessione, quindi lui non sapendo dove prenderli, per default si tiene quello che ha in cache, che spesso sono i dati con cui lo hai costruito.
>b. fatto questo, al termine del processo di renderizzazione del
>riport, salvo lo stesso, in modo da avere sempre il report con
>gli ultimi dati aggiornati. (ovviamente quando lancio l'aggiornamento
>del report, al termine, scateno anche l'evento posteriore prerender,
>di conseguenza lo aggiorno coi dati aggiornati)
io tipicamente uso passare i dati al report via codice (metodo SetDataSource() ) o cmq impostargli i parametri di connessione (LogonInfo) quindi sono sicuro che i dati se li va a prendere ogni volta che serve dalla sorgente dati.
Il codice è quello mostrato qui, in entrambi i casi (vedi tu quale dei 2 ti è preferibile usare) :
http://www.dotnethell.it/forum/messages.aspx?ThreadID=21962
anche se è fatto per Win32 è lo stesso codice che puoi usare su asp.net, cambia solo il fatto che dovresti metterlo nel Load della pagina.
>A questo punto il salvataggio del report funziona bene, ma ho
>scoperto che non riesco più a stampare i report, ne ad esportarli.
>Quando clicco su uno dei 2 pulsanti, mi apre la relativa finestra
>delle opzioni, ma quando confermo, all'interno della finestra,
>mi riapre la pagina dei report, invece dell'anteprima.
questo non so cosa possa essere dovuto, come ti dicevo prima non lo uso mai perchè preferisco avere controllo via codice su cosa viene visualizzato...se vuoi provare a seguire la mia strada e vedere se si risolve.
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
ellis
Profilo
| Newbie
2
messaggi | Data Invio:
lun 22 dic 2008 - 16:56
Ciao,
anzitutto grazie per la risposta. Nel frattempo ho risolto il problema, ma non so perchè, il forum, non mi permetteva di rispondere al mio stesso messaggio.
Il problema, che in parte continuo a non spiegarmi, è che ricaricava il report ad ogni chiamata (quindi anche in fase di stampa o esportazione). Passando dinamicamente il report, tramite un panelbar laterale, mi dava errore perchè non tenevo traccia del report stesso. Avevo scartato questa ipotesi in quanto, prima delle ultime modifiche, non si comportava così.
Comunque scoperto il problema, ho provveduto a tener traccia dell'ultimo report selezionato dall'utente.
Relativamente a quello che dici, trovo più corretto e interessante, il tuo modo per mantenere aggiornato il report (passare ogni volta i dati aggiornati). Per mancanza di tempo ho cercato di fare la cosa "apperentemente" più veloce, anche perchè CrystalReport lo conosco poco, però ripensandoci non ho fatto una buona analisi.
Il prossimo step sarà quello di fare l'aggiornamento automatico del report, senza salvarlo.
Grazie mille
Ellis
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 22 dic 2008 - 17:23
>Ciao,
>anzitutto grazie per la risposta. Nel frattempo ho risolto il
>problema, ma non so perchè, il forum, non mi permetteva di rispondere
>al mio stesso messaggio.
eh infatti dovresti andare in modifica di quello stesso messaggio, magari scrivendo in maiuscolo "EDIT" oppure "RISOLTO" in modo che balzi all'occhio.
>Il problema, che in parte continuo a non spiegarmi, è che ricaricava
>il report ad ogni chiamata (quindi anche in fase di stampa o
>esportazione). Passando dinamicamente il report, tramite un panelbar
>laterale, mi dava errore perchè non tenevo traccia del report
>stesso. Avevo scartato questa ipotesi in quanto, prima delle
>ultime modifiche, non si comportava così.
oddio non so come sia impostata la tua applicazione, ma tieni presente che HTML (e quindi asp.net dato che gira lato server, ma alla fine il browser riceve ed invia come se fosse pure HTML) è un protocollo passivo, quindi di fatto viene ricostruita tutta la richiesta ogni volta (ecco il motivo per cui passa sempre sul "page_load") e tramite alcuni meccanismi (il primo è il "viewstate", ma anche "session" o "cookies") viene ricostruito lo "stato" appunto della chiamata, ossia "a che punto eravamo rimasti?"
Questo ovviamente non succede in applicazioni che girano lato client, come Win32, che sfruttano la memoria della macchina, e tutto gira in quella istanza, tenendo sempre attivo lo stato intrinsecamente.
>Comunque scoperto il problema, ho provveduto a tener traccia
>dell'ultimo report selezionato dall'utente.
ok
>Relativamente a quello che dici, trovo più corretto e interessante,
>il tuo modo per mantenere aggiornato il report (passare ogni
>volta i dati aggiornati). Per mancanza di tempo ho cercato di
>fare la cosa "apperentemente" più veloce, anche perchè CrystalReport
>lo conosco poco, però ripensandoci non ho fatto una buona analisi.
nessun problema vedi tu come si comporta, anche in fase di sovraccarico se il tutto è abbastanza reattivo, la tua soluzione può andare bene lo stesso
>Il prossimo step sarà quello di fare l'aggiornamento automatico
>del report, senza salvarlo.
ok
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !