Salve a tutti!
Eliminando parti inutili posto una porzione del codice prima di parlavi del problema.
Il problema (notare il e.hasmorepages=true lasciato li cosi) è proprio quello.codice:Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim Font1 As New Font("Verdana", 16, FontStyle.Regular) Dim Y As Integer = 340 Dim i As Integer = 0 'apro il db già inizializzato (il select funziona correttamente) Try conn.Open() cmd = New OleDbCommand("SELECT * FROM personale", conn) daPERSONE = New OleDbDataAdapter() daPERSONE.SelectCommand = cmd dtPERSONE = New DataTable() daPERSONE.Fill(dtPERSONE) drPERSONE = cmd.ExecuteReader If drPERSONE.HasRows Then While drPERSONE.Read i = 436 Dim cf As Integer = 35 e.Graphics.DrawString("Nome", Font1, Brushes.Black, 50, i) e.Graphics.DrawString(drPERSONE.Item(1), Font1,Brushes.Black, 350, i) i = i + cf e.Graphics.DrawString(drPERSONE.Item(2), Font1, Brushes.Black, 350, i) e.Graphics.DrawString("Cognome", Font1, Brushes.Black, 50, i) e.HasMorePages = True End If End While End If conn.Close() Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Nel dettaglio, ricevo 3 record (nel mio esempio) e attraverso delle msgbox di controllo ho notato che effettivamente il ciclo è di 3 passaggi.
La stampa nel caso in cui io non inserisca nessun hasmorepages=true stampa 3 pagine sovrapposte.
Nel caso in cui io inserisca hasmorepages=true invece stampa all'infinito.
Non ci piove che sia necessario un controllo per verificare come e quando settare e.hasmorepages=false ma come?
il mio scopo anche se penso sia ormai palese è stampare ad ogni passaggio del ciclo su una pagina diversa finke il ciclo duri.

Rispondi quotando