In questo periodo ho creato un'applicazione per un magazzino che si occupava di stampare un etichetta per ogni pesatura effetuata da un operatore.
Quindi ho creato un report con intestazione e dettaglio disabilitando le altre sezioni e utilizzando un DataSet come fonte dati, il tutto in ambiente VS 2003.
Siccome sul pc era presente solo la stampante per le etichette mi è venuto naturale aggiungere alla form il report e usare il metodo PrintToPrinter per stamparlo.
Il problema era che venivano eseguiti salti pagina non impostati dopo la stampa dell'etichetta.
Per risolvere il problema ho usato il seguente codice:
Me.rptEtichetta.Close()
Me.rptEtichetta.SetDataSource(Nothing)
Me.rptEtichetta.SetDataSource(Me.dstEtichetta)
Me.rptEtichetta.PrintToPrinter(1, False, 0, 0)
Me.rptEtichetta.Close()
Si notino le istruzioni Me.rptEtichetta.Close() che risolvono il problema dei salti pagina non voluti.
Il primo Me.rptEtichetta.Close() in realtà serve per il salto pagina dopo la prima etichetta che vista in anteprima appariva con un formato pagina diversa, se invece il report veniva istanziato ogni volta o se si usava il Crystal Report Viewer il problema non si verificava.