Caricamento immagini

lunedì 03 maggio 2010 - 11.26

nihira Profilo | Newbie

Ciao a tutti,

sto cercando, dato un report standard uguale per tutti i clienti, di visualizzare un logo differente, a seconda del file excel che viene dato in pasto a crystal, che verrà caricato mediante la valorizzazione di un campo (in questo caso contenuto in un file excel, ma potrebbe essere in futuro anche un xml) inteso come percorso del file.
Quello che so è che si può collegare il file da un oggetto OLE già sapendo quale sia, ma non riesco a trovare il sistema per farlo diventare del tutto generalizzato, cioè senza sapere da principio che cosa andrà a leggere il report.

E' gradito qualsiasi suggerimento. Grazie mille.

ps: dato che non ho conoscenze specifiche di programmazione, spero che la cosa sia gestibile senza scrivere del codice...

freeteo Profilo | Guru

>ps: dato che non ho conoscenze specifiche di programmazione,
>spero che la cosa sia gestibile senza scrivere del codice...
secondo me di codice devi scriverne per forza, non hai alternative...non sarà tanto ma qualcosa devi scrivere se vuoi rendere parametrizzabile la sorgente dati.

Io ti consiglierei questo iter:
1) definisci il report disegnandolo, dandogli in pasto una sorgente dati (magari un db access temporaneo) basta che rispecchi il contenuto del file xls
2) da codice leggi il file xls, o xml, etc...riportandoti alla stessa struttura che hai dato in pasto al report
3) gli passi i dati al report che visualizza quello che gli hai passato tu da codice, ignorando i dati del db temporaneo usato per disegnarlo

Per i punti 2,3, il codice è 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 FrmCrystal_Load(object sender, EventArgs e) { //--- per salvarlo ho fatto un Serialize dello stesso, quindi posso usare Deserialize 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(@"F:\...\reportXML.rpt"); report.SetDataSource(lista); crystalReportViewer1.ReportSource = report; }
questo è un esempio in C# che legge un file XML caricando una collection di oggetti Utente, nel tuo caso se fosse un file Xls puoi fare una connessione OleDb e farti tornare una DataTable...quello che volevo segnalarti è il concetto sulle operazioni da fare, piuttosto che il dettaglio (magari lo vediamo con un tuo progetto reale).

Comunque sia, alla fine devi per forza scrivere codice per fare quello che vuoi fare tu

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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5