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