Impostazione origine file Xml a run time per crystal report

domenica 02 maggio 2010 - 10.34

O82 Profilo | Newbie

Ciao a tutti, sviluppo con Visual studio 2008 Professional edition e vorrei integrare un report nel progetto.
Il report di Crystal è basato su un file XML correttamente importato attraverso Esperto Database e tutto funziona correttamente.
Il problema è che vorrei passargli file differenti, ovviamente con la stessa struttura, a runtime.
Nel web c'è un casino di materiale al riguardo, molte persone hanno lo stesso problema, ma il problema viene risolto facendo riferimento
ai Database Access o SQL e non con i file Xml.

Ho provato anche con il metodo LogInfoTable ma richiede Password e nome utente e IDConnessione, che per un file Xml non esistono.

Se qualcuno potesse indicarmi la strada, Thanks

freeteo Profilo | Guru

Ciao,
potresti caricarti tramite codice il file xml e poi passargli quello con il metodo "SetDataSource" dell'oggetto report.
Infatti il report quando lo visualizzi non ha per forza bisogno di una "connessione", puoi ad esempio passargli tu i dati che vuoi, che possono provenire da qualsiasi sorgente (anche creati in memoria da codice) e il report visualizza quelli, ignorando le impostazioni che hai usato nel disegnarlo.

L'unica cosa fondamentale è che abbiano la stessa struttura, quindi nome colonne, tipo e ordine di queste.
Adesso non so cosa tu abbia usato per creare quel file Xml, io solitamente uso la serializzazione|deserializzazione di oggetti definiti per la mia applicazione tramite XmlSerializer, quindi nel mio caso il codice sarebbe qualcosa di questo tipo:

... public class Utente { public string Nome { get; set; } public string Cognome { get; set; } public int Eta { get; set; } public DateTime DataRegistrazione { get; set; } } ... private void Form_Load(object sender, EventArgs e) { List<Utente> lista = new List<Utente>(); using (FileStream stream = File.Open("c:\..\utenti.xml", FileMode.OpenOrCreate)) { XmlSerializer ser = new XmlSerializer(typeof(List<Utente>)); lista = ser.Deserialize(stream) as List<Utente>; } ReportDocument report = new ReportDocument(); report.Load(@"c:\...\reportXML.rpt"); report.SetDataSource(lista); crystalReportViewer1.ReportSource = report; }

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
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