Richiesta parametro in fase di stampa con Crystal Report

martedì 10 febbraio 2009 - 13.44

Simon3 Profilo | Newbie

Ciao a tutti.. Prima di postare ho cercato nel forum, provando le soluzioni dei post riguardanti il mio problema, ma non sono riuscito a risolverlo.
Ho la necessità di mostrare/non mostrare dei sottoreport in base a dei parametri che gli passo via codice.

Il tutto funziona, solo che quando vado in stampa, mi compare la finestra di richiesta di parametri, dove devo impostare manualmente gli stessi per consentire la corretta visualizzazione.
Io vorrei che questi parametri li prenda dal code behind da dove li specifico e non dalla finestra di dialogo.

Ecco il mio codice, grazie in anticipo a tutti quelli che mi aiuteranno:

public ReportDocument setPreviewPrint()
{
try
{
//Definisco il DataTable MASTER
DataTable dtArticolo = this.getDtArticolo();

//Imposto il report SOURCE MAIN
_reportArticolo.SetDataSource(dtArticolo);

//Definisco i DATATABLE DETAILS
DataTable dtArticoloDatiFisici = this.getDtDatiFisici();
DataTable dtArticoloDatiVendita = this.getDtDatiVendita();
DataTable dtArticoloCodiciBarre = this.getDtCodiciBarre();
DataTable dtArticoloDepositi = this.getDtDepositi();

//Imposto i subreports
if (App.LastFlagTipoGestionePrezzi == Azienda.defTipoGestioneListino)
{
_reportArticolo.SetParameterValue("OmettiPrezziListino", false);
_reportArticolo.SetParameterValue("OmettiPrezziNetti", true);

_reportArticolo.OpenSubreport("CrArticoloPrezziListino.rpt").SetDataSource(dtArticoloDatiVendita);
}
else
{
_reportArticolo.SetParameterValue("OmettiPrezziListino", true);
_reportArticolo.SetParameterValue("OmettiPrezziNetti", false);

_reportArticolo.OpenSubreport("CrArticoloPrezziNetti.rpt").SetDataSource(dtArticoloDatiVendita);
}

//_reportArticolo.OpenSubreport("CrArticoloDatiFisici.rpt").SetDataSource(dtArticoloDatiFisici);
_reportArticolo.OpenSubreport("CrArticoloCodiciBarre.rpt").SetDataSource(dtArticoloCodiciBarre);
_reportArticolo.OpenSubreport("CrArticoloDepositi.rpt").SetDataSource(dtArticoloDepositi);
}
catch (Exception Ex)
{
throw Ex;
}

return _reportArticolo;
}

freeteo Profilo | Guru

Ciao e perdona il ritardo nella risposta, probabilmente avrai già risolto cmq ti rispondo lo stesso.
Presumo tu stia usando i Report di Crystal, anche se non lo hai specificato ma dal codice mi sembra di intuirlo, in questo caso ti manca di impostare i parametri di connessione al db a runtime.

Guarda questo thread: http://www.dotnethell.it/forum/messages.aspx?ThreadID=21962

come vedi hai 2 metodi, o gli passi tu i dati, setDataSource (ma probabilmente per i sottoreport che poi vuoi nascondere non li imposti) oppure impostare le LogonInfo.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Simon3 Profilo | Newbie

Ciao Teo..
Si uso i Crystal Report e l'ho specificato nel titolo del Thread.

Ho risolto il mio problema, ma non potevo fare un reply al mio messaggio, così ne approfitto adesso, in modo tale da rendere la soluzione disponibile a qualche altro malcapitato.

Ho risolto impostando i parametri direttamente nella Window che contiene il Viewer e non nella funzione che crea il report.

public PrintWindow(ReportDocument doc)
{
InitializeComponent();

switch (doc.GetClassName())
{
case "Namespace.CrArticolo":
if (App.LastFlagTipoGestionePrezzi == Azienda.defTipoGestioneListino)
{
doc.SetParameterValue("OmettiPrezziListino", false);
doc.SetParameterValue("OmettiPrezziNetti", true);
}
else
{
doc.SetParameterValue("OmettiPrezziListino", true);
doc.SetParameterValue("OmettiPrezziNetti", false);
}
break;
}

////Report principale
this.cReportViewer.ReportSource = doc;
}


In questo modo prima viene creato il Report, poi gli vengono passati i parametri poco prima di andare in anteprima di stampa.
Così tutto funziona e la finestra di richiesta parametri non viene più aperta.

Grazie lo stesso. Alla prossima.
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