Crystal Report e XSD

martedì 08 dicembre 2009 - 11.44

marcomorgia Profilo | Newbie

Salve,

Vi spiego brevemente il mio problema:
Devo creare un report da un file XML generato da un DB access.
Ho convertito il DB in XML e ho estrapolato anche il file XSD.

Il problema nasce con crystal report di visual studio quando scelgo come origine dati il file XML, perchè tutti i campi vengono convertiti in stringa.

Ho provato la versione professional diCrystal Report e ho visto che oltre ad scegliere l'origine dati come XML posso scegliere anche il file XSD, che permette di avere anche campi diversi da stringa, cosicche sia possibile fare somme e altre operazioni.

Vorrei sapere se con il Crystal Report di Visual Studio è possibile fare la stessa cosa....
io non ho trovato il modo per importare il file XSD.

Grazie a tutti.

freeteo Profilo | Guru

Ciao,
mi pare di capire che i tuoi 3 messaggi siano legati, quindi ti propongo una riflessione a livello concettuale:

io non mi preoccuperei tanto di poter convertire i dati xml che hai come sorgente con crystal ma piuttosto cambierei approccio:
Il report di per sè è un ripetitore di dati, basati su una struttura nota. Non importa la sorgente dati (che puoi cambiare a codice passandoli tramite la proprietà "datasource") l'importante è che i dati che deve visualizzare abbiano la stessa struttura.

Chiaramente se non gli passi niente il report va in cerca dei dati da solo, usando le impostazioni che hai usato per disegnarlo, ma tipicamente a runtime nei computer dell'utente finale, non sono mai le stesse che hai usato durante lo sviluppo.

Quindi puoi costruire un report basato su un database temporaneo, con i campi di formato da te definito, con il quale disegni e testi il report.Quando è ok il report, lo integri nella tua applicazione con un codice dove lo carichi e gli passi i dati per poi visualizzarlo in una maschera,ma i dati che gli passi possono essere elaborati a runtime, quindi ad esempio letti da xml, ma convertiti nei tipi corretti, e poi aggiunti come righe di una datatable.
Come sempre ricorda il nome e il tipo di dati (colonne della DataTable "tabella") devono essere gli stessi con cui l'hai costruito, il fatto che siano letti da xml, generati da codice, da mysql, oracle, file csv etc...non ha importanza...usi una datatable e poi gli passi i dati al report prima di visualizzarlo:

Dim tabella as new DataTable() ...riempi i dati nella tabella... Dim mioreport as new ReportDocument() mioreport.Load("c:\...\mioreport.rpt") mioreport.SetDataSource (tabella) CrystalReportViewer1.ReportSource = mioreport

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