Attesa durante caricamento di un report...

lunedì 04 ottobre 2004 - 13.39

ignatius Profilo | Newbie

Ciao a tutti quanti,
questo è il mio primo messaggio quindi comincio con il salutarvi e ringraziarvi anticipatamente.
Passo subito alla questione... vorrei fare in modo che durante il caricamento di un report all'interno di un CrystalReportViewer l'utente sia in qualche modo "intrattenuto nell'attesa" facendo apparire un messaggio del tipo "Attendere prego..."
Il mio codice è il seguente:

Dim WithEvents newrpt_01_NEW As New NEWRPT_01

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

newrpt_01_NEW.SetParameterValue("par_codsessione", "PARAMETRO UNO")
newrpt_01_NEW.SetParameterValue("par_codbillcicle", "PARAMETRO DUE")

Me.CReportViewerPrincipale.ReportSource = newrpt_01_NEW
Me.CReportViewerPrincipale.Zoom(1) ' Larghezza Pagina

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

end sub

Ho provato ad usare l'evento InitReport però non scatta quando il report è stato completamente visualizzato nel controllo...
Come posso fare? Qualcuno ha qualche suggerimento?
Grazie1000 anticipatamente,

M



alextyx Profilo | Expert

Eh....la lentezza del report è veramente una palla al piede. Io ho messo un messaggino, come dici tu, ma nn capisco perchè nn puoi visualizzarlo subito dopo aver impostato il cursore a clessidra e cancellarlo subito prima di rimettere il cursore normale.....o mi sfugge qualcosa?

trinity Profilo | Guru

alextyx
potresti postarmi il codice che hai utilizzato per far visualizzare il messaggio al caricamento del report? Vorrei testarlo

Ciao
Fabio

ignatius Profilo | Newbie

Grazie a tutti per l'interessamento...
Io ho provato a mettere ad esempio una messagebox dopo la riproposizione del cursore a default ma succede che questo avvenga ancora prima che il report sia visualizzato nel CrystalReportViewer.
Magari sbaglio qualcosa io... e quindi mi associo alla richiesta di avere un sorgente da testare :))

Grazie1000 ancora

M

alextyx Profilo | Expert

Caro Ignatius, davo x scontato che tu avessi sincronizzato il cambio del cursore in maniera acconcia e che quindi, se i tempi erano giusti per quello, lo sarebbero stati anche per un messaggio, che però nn mi sembra il caso debba essere un message box, in quanto se deve essere visualizzato da prima del caricamento a dopo la sua visualizzazione, la cosa si farebbe complicata, perchè il message box ti arresta tutte le operazioni sincrone del thread. Io uso una label sul form, che chiamo LabelConteggio. Noterai che propongo anche un refresh del report. In realtà nn è che sia strettamente necessario, ma avevo delle difficoltà di aggiornamento che mi indussero a introidurlo. Probabilmente nn serve più e dovrei toglierlo, ma siccome ho altri problemi da risolvere, ho rimandato tutto a tempi migliori!:-)
Mi sembra che, grossomodo (nn sono un esteta della programmazione, anzi direi che sono piuttosto grezzotto!), la cosa funzioni coi tempi giusti. Spero che il codice, la logica del quale puoi in massima parte ignorare, ti serva di ispirazione. Un'ultima cosa....io uso un reporta associato ad una tabella che riempio da codice. In pratica uso CR solo perchè mi consente di impaginare,stampare ed esportare i report. Infatti spero di poterne fare a meno, appena avrò capito meglio come gestire le stampe. Salutoni e buon lavoro.....ah, occhio ai comandi di .refresh, anche per la label;il trucco potrebbe essere anche in quelli, non dimenticare di usarli!

Private Sub BtnStampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStampa.Click
Static StoLavorando As Boolean
If StoLavorando = True Then
Exit Sub
Else
StoLavorando = True
Me.LblScrittaCausale.Visible = False
Me.LblCausale.Visible = False
Call Me.RiempiLswNota(False)
Me.LblConteggio.Text = "Preparazione dell'anteprima di stampa in corso....."
Me.LblConteggio.Refresh()

StoLavorando = False
Dim StrSQL As String

Me.LswNota.Visible = False

StrSQL = "SELECT Data,Causale,Cassa,Banca,Note,CassaTotale FROM TabStampaNota"
RstNota.Open(StrSQL, GIN.CnnGIN, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)

RptNota.SetDataSource(RstNota)

Me.CrystalReportViewer1.ReportSource = RptNota

Me.CrystalReportViewer1.Visible = True

Me.CrystalReportViewer1.RefreshReport()

RstNota.Close()
Me.LblConteggio.Text = ""

End If
End Sub

ignatius Profilo | Newbie

Ciao alextyx,
grazie 1000 veramente per la spiegazione e il sorgente che hai allegato... si, per quanto riguarda la messagebox hai perfettamente ragione, l'avevo introdotta solo per un esempio ben sapendo la sua inopportunità...
Per ora purtroppo sono impegnato in altra attività ma sicuramente in giornata faccio qualche prova con i tuoi suggerimenti e ti farò sapere.
Grazie1000 ancora per l'aiuto.
Ciaociao,

M
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5