Accesso ad oggetti in runtime

giovedì 17 novembre 2005 - 14.40

Shel Profilo | Newbie

Ciao ho un problema con crystal report per .net:

Mi hanno dato da tradurre un report da active report per .net a crystal report .net.

Il report in questione dovrebbe apparire ogni qualvolta viene catturata un eccezione e mostrare nella sezione di detail il risultato dell’ eccezione. Ciò chiaramente avviene a runtime ed in active report nel page load viene passato il contenuto di un array di stringhe alla property text dell’ oggetto campo di testo del report così: Report.Text3.SetText “Qui il testo dell’ eccezione”

Come faccio a fare la stessa cosa in crystal report?

Ho l’ impressione che in crystal report per .net non sia possibile accedere agli oggetti del report in runtime.

Eventualmente ho anche una versione di Crystal Report 9 Developer Ecdition. Ma Comunque non saprei come fare perché non sembra essere compatibile con VS.net 2003.

freeteo Profilo | Guru

ciao,
la versione 9 di crystal è molto valida, la puoi usare tranquillamente per fare i report che poi caricherai dentro alle tue applicazioni .net semplicemente usando l'oggetto reportDocument.
Per quanto riguarda modificare a runtime i campi puoi usare i campi parametri o formula e poi settare il loro text.
Pero' la mia domanda è come mai usi il report x stampare solo il dettagli di 1eccezione? xche 1repotr nasce con il compito di elaborare e viasualizzare 1a mole di dati tipicamente tabelle o incroci delle stesso, quindi conn piu di 1 valore (ecco perche la sezione si chiama dettagli, plurale :-)
Ad ogni modo se lavori con l'oggetto report interno di visual studio istanzi da codice 1oggetto della classse report che hai creato (tipicamente "CrystalReport1") e poi gli setti il campo formula con quel valore...dovresti riuscire senza grossi problemi...
ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

Shel Profilo | Newbie

Grazie per l' aiuto. Questo report serve per la stampa di un pdf delle eccezioni, poi ne dovrò tradurre molti altri più complessi...

Comunque continuo a non trovare il modo di accedere all' oggetto formula sul report da codice.
Ho trovato un altra soluzione anche se non ortodossa: metto sul report un field collegato ad un dataset
e poi faccio il push del dataset da codice riempendolo a mano dall' array che contiene le stringhe dell' eccezione.
{
Nell code behind del report:

Public Sub New()
Me.New(Nothing)
End Sub

Public Sub New(ByVal data As String())
MyBase.New()

If Not data Is Nothing Then
Dim ds As StampaErrorHandlerData = New StampaErrorHandlerData
Dim dr As DataRow
dr = ds.Tables(0).NewRow
dr(0) = data(0)
dr(1) = data(1)
ds.Tables(0).Rows.Add(dr)
Me.SetDataSource(ds)
End If

}
Saresti così gentile da dirmi passo passo che tipo di formula field crei e come accedi alla sua proprietà text da codice perchè non la trovo.

freeteo Profilo | Guru

ciao,
ti consigli di lavorare con l'oggetto report che hai creato tipo:

ReportDocument mioReport = new ReportDocument();
mioReport.Load("report.rpt");
...
mioReport.SetParameterValue(...
mioReport.DataDefinition.FormulaFields["miocampo"].Text = ...


e poi vai in stampa dandolo in pasto al reportviewer :

crystalreportviewer1.ReportSource = mioreport;
crystalreportviewer1.DataBind();


cosi va via tranquillo....

ps:cosi crei 1 nuovo oggetto report pero' puoi anche lavorare con la classe che ti crea quando lo aggiungi a design time ovvero tipicamente "CrystalReport1" se lasci tutto di default...poi l'accesso agli oggetti è lo stesso...
ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo
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