Ve l'avevo promesso, e con un po' di ritardo l'ho fatto davvero. Ieri sera - ma ne do notizia
solo adesso - ho pubblicato con MSBuild il nuovo file ZIP con i sorgenti
aggiornati di Fatturazione . Ho sistemato un po' di
cosettine:
- ho tolto un sacco di warning in fase di compilazione,
di cui prima non mi importava molto
- ho cambiato i namespace, anteponendo ByteAdventure ed
ottenendo uno schema simile a
ByteAdventure.NomeLayer.NomeOggetto
Per scaricarlo, cliccate sul logo all'interno del mio blog oppure
direttamente a questo link.
Siccome sono stanco di riferirmi continuamente alla "nuova release", presto
gestirò come si dovrebbe fare il versioning degli assembly. Inoltre, chi di voi
ha scaricato Fatturazione si sarà accorto della presenza di un
piccolo progetto FxCop per valutare la qualità del codice: ho intenzione, a
costo di stravolgere il codice, di aumentare i feedback positivi riportati da
questo tool.
Osservazione sui report di stampa
Il
file che contiene il report della fattura si trova nell'assembly
FatturazioneReports, ed è Fattura.rdlc. Questo file è una
embedded resource, quindi durante la compilazione verrà incluso nell'assembly e
siamo a posto. Nello stesso assembly ho messo una Windows Form che contiene un
oggetto ReportViewer: tale form può quindi essere utilizzata per far vedere
l'anteprima di stampa di diversi report, basta caricare un file .rdlc piuttosto
che un altro.
Il codice che ho utilizzato nel metodo
StampaFattura (anzi, mi pare che questo sia codice di
Davide , mi sbaglio?) è questo:
public void StampaFattura(Fattura entity)
{
fatturaBindingSource.DataSource = entity;
rigaFatturaBindingSource.DataSource = entity.Articoli;
clienteBindingSource.DataSource = entity.Cliente;
this.repAnteprima.LocalReport.DisplayName = "Fattura n." + entity.Denominazione;
this.repAnteprima.LocalReport.ReportEmbeddedResource = "FatturazioneReports.Fattura.rdlc";
this.repAnteprima.RefreshReport();
this.ShowDialog();
}
Questo codice evita di caricare un report da un file esterno, ma lo
facciamo da una risorsa interna all'assembly. La risorsa è identificata dal nome
del file .rdlc, comprensivo di namespace come nell'esempio qui sopra.
Osservazione: se sbagliate a scrivere il
nome della risorsa, non otterrete alcuna eccezione, nè alcun messaggio di
errore. Sarà l'oggetto ReportViewer a mostrare un errore sull'anteprima,
dicendo che non è riuscito a caricare il report definition file.
Scusate la scarsa precisione, ma non ho davanti il codice per poter documentare
al meglio!
Alla prossima...
powered by IMHO 1.2