Data Source

giovedì 25 ottobre 2007 - 17.57

ats Profilo | Newbie

Salve ho un problema; ho un report che richiamo in una form dove è presente il controllo viewer di CR. Apro il report pasandogli i parametri nel seguente modo:
frm_DisplayReport.CrystalReportViewer1.SelectionFormula = "({nnchiam.PT_OraTrasf} >= Date(" & parmDaData & ") AND {nnchiam.PT_OraTrasf} <= Date (" & parmAData & "))"

Il mio problema è che quando devo modificare il report sono costretto a modificare manualmente il data source nel report per farlo puntare sulla macchina di sviluppo (es. localhost), mentre prima di pubblicarlo devo variare nuovamente il data source in CR e dargli quello del server dove verrà utilizzato (serverdb oppure 172.56.25.3).

Come faccio a passare a CR il datasource che voglio, senza ricordarmi di cambiarlo ogni volta?

Cordiali saluti
Gianni

SSUPERPIPPO Profilo | Guru

Io faccio così:

1. Creo un DataSet con il Wizard di VS
2. In fase di progettazione del report lo al DataSet creato
3. A runtime creo il DataSet reale e lo passo al report (ovviamente riferito alla reale posizione del Database) in questo modo:

Dim Stampa As New ReportDocument Dim Tabella As Table Stampa.Load("TuoReport.rpt") For Each Tabella In Stampa.Database.Tables Tabella.SetDataSource(TuoDataSet) Next Tabella

Spero ti sia chiaro, ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

freeteo Profilo | Guru

ciao,
io ti consiglio questo codice che uso spesso e senza troppi problemi:
Dim tabella As New DataTable() ... mioDataAdapter.Fill(tabella) ... Dim mioreport as new ReportDocument() mioreport.load("c:\..\..\crystalreport1.rpt") mioreport .SetDataSource(tabella) CrystalReportViewer1.ReportSource = mioreport

dove "mioDataAdapter" è ovviamente ado.net, con la connessione etc...
Il report l'ho costruito puntando ad un db mio di test, che pero' avra' la stessa struttura di campi della datatable (tabella) dopo il "fill"...

ps:puoi anche fare delle query, non devono essere strutture di tabella identica, ma il ResultSet che torna deve essere uguale perche' altrimenti il report non si trova con i riferimenti dei campi...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

ats Profilo | Newbie

Ciao, ho provato come consigliato e sembra che il datasaource viene passato.
Adesso però ho due problemi.
1) Prima eseguivo l'anteprima di stampa usando la sintassi seguente:

frm_DisplayReport.CrystalReportViewer1.SelectionFormula = "({@ATS_ConvData} >= Date(" & parmDaData & ") AND {@ATS_ConvData} <= Date (" & parmAData & "))"

frm_DisplayReport.CrystalReportViewer1.ReportSource = Application.StartupPath & "\Rpt\traceMailPT.rpt"

frm_DisplayReport.Show()

Adesso cosa devo usare?

2)Utilizzando Stampa.PrintToPrinter(1, False, 1, 100) ottengo un errore (....errore nella formula ATS_Convdata... nume di campo sconosciuto): non è possibile perchè utilizzando il vecchio metodo funziona (sicuramente sbaglio ma non so dove). Ho provato anche a passare i parametri nel seguente modo, prima di eseguire la stampa:
Stampa.RecordSelectionFormula = "({@ATS_ConvData} >= Date(" & parmDaData & ") AND {@ATS_ConvData} <= Date (" & parmAData & "))"

Per chiarezza ti allego un file dove riporto il codice completo.

Grazie ancora.
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