VB.net e Crystal Report

lunedì 21 settembre 2009 - 10.06

slavishdany Profilo | Newbie

Buongiorno a tutti,
Sono nuovo del forum e inizio scusandomi se per caso apro un thread gia trattato, ma e una cosa urgentissima e non ho avuto il tempo di leggere gli altri thread.
Io sto facendo un programma in vb.net che prende i dati da un DB Access, li visualizza su un datagridview , dopo di che quelli selezionati devono essere stampati su due tipi di report diversi (un prodotto per pagina o 4 prodotti per pagina ).
Premetto che non ho mai usato Crystalreport, infatti io ora ho fatto generare un codice html che poi converto in .doc e lo stampo su una stampante PDF, però viene un po' una schifezza. Voi sapreste darmi qualche dritta per Crystal Report? Sopratutto, è fattibile con Crystalreport una cosa del genere?
Vi ringrazio infinittamente della vosta cortese attenzione

freeteo Profilo | Guru

Ciao,
si certo che è fattibile, in quanto Crystal Report come quasi tutti i tool di reportistica, nascono per dare una forma grafica ai dati, anche da diverse fonti.
Nel tuo caso, i dati da stampare sono quelli selezionati in griglia, e quindi dovresti aggiungerli ad una DataTable cicliando appunto sulle righe selezionate e poi passare quest'ultima al report.

Chiaramente il report va prima disegnato, ma i dati che usi per disegnarlo non devono essere esattamente quelli che visualizzerai, nel tuo caso infatti glieli passerai da codice visto che sono solo le righe selezionate...però attento che la struttura deve essere la stessa, ossia ti conviene costruire il report sulla tabella (o sulla query) che torna una struttura di colonne uguali a quelle che gli passerai poi a runtime, le righe invece cambieranno...

Quindi procederei con questi passi:
1) costruisci il report accedendo al db access che ha i dati
2) lo disegni come vuoi, mettendo i campi/tabelle/immagini etc...
3) metti un reportviewer nella tua applicazione
4) con un codice di questo tipo gli passi i dati da visualizzare:
... dataGridView1.DataSource = tuaDataTable; //--- carico il file dal disco report.Load("report\\report.rpt"); //--- carico solo quelle selezionate dall'utente oppure tutte if (dataGridView1.SelectedRows != null) { List< DataRowView> righe = new List<DataRowView>(); foreach (DataGridViewRow riga in dataGridView1.SelectedRows) { DataRowView r = riga.DataBoundItem as DataRowView; righe.Add(r.Row); } report.SetDataSource(righe); } else report.SetDataSource(dataGridView1.DataSource); crystalReportViewer1.ReportSource = report; crystalReportViewer1.RefreshReport();


il codice è in C# ma puoi convertirlo in vb.net facilmente (http://www.carlosag.net/Tools/CodeTranslator/)

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

slavishdany Profilo | Newbie

grazie mille appena ho due minuti di tempo lo provo
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