Report da file xml

mercoledì 12 marzo 2008 - 00.59

perla0279 Profilo | Senior Member

ciao

ciao

non riesco a stampare da file xml con cristal report.............cioè mi viene fuori solo una riga invece di 3 report.....

Codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

in poche parole mi tornano dei dati strani nella stampa............

torna solo una riga invece di 3 ,
non associa i dati con il group by
non esegue la somma dei campi

......................lo sò che è un pò inusuale usare file xml per fare stabpe complesse.......ma il programma è impostato così



freeteo Profilo | Guru

ciao,
hai verificato se nella DataTable che carichi ci sono effettivamente le 3 righe?
A parte questo, io avrei fatto un approccio piu' semplice, ovvero avrei rimappato su un oggetto mio i valori che leggo dall'XML, in questo modo:

File Xml di esempio:
<?xml version="1.0" encoding="utf-8" ?> <Fornitori> <Fornitore Codice="1233" Descrizione="AZIENDE PROGRESSO" /> <Fornitore Codice="1234" Descrizione="COOPERATIVA" /> <Fornitore Codice="1235" Descrizione="SUPERCLIENTE" /> <Fornitore Codice="1236" Descrizione="GAMMA" /> <Fornitore Codice="1237" Descrizione="BETA" /> <Fornitore Codice="1238" Descrizione="MATTEO" /> </Fornitori>

Codice dove carico il report e gli passo i dati:
private void FormXML_Load(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(@"...DatiXML.xml"); //--- carico una collection con le proprieta' dall'Xml List<RigaReport> righe = new List<RigaReport>(); foreach (XmlNode nodo in doc.GetElementsByTagName("Fornitore")) { RigaReport r = new RigaReport(); r.Codice = nodo.Attributes["Codice"].Value; r.Descrizione = nodo.Attributes["Descrizione"].Value; righe.Add(r); } ReportDocument report = new ReportDocument(); report.Load(@"..ReportXML.rpt"); report.SetDataSource(righe); crystalReportViewer1.ReportSource = report; }


Dove la mia classe "RigaReport" è questa (per l'esempio ho messo 2 campi, ma ovvio che tu ne avrai di piu') :
class RigaReport { private string codice; public string Codice { get { return codice; } set { codice = value; } } private string descrizione; public string Descrizione { get { return descrizione; } set { descrizione = value; } } }

ps: il report l'ho costruito dandogli in pasto un file XML come sorgente dati nel designer di visual studio, (DataBase Expert->Connection->DAtaBase File->miofile.XML)


ciao.

Matteo Raumer
[MCAD .net]
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