Salve a tutti!

Eliminando parti inutili posto una porzione del codice prima di parlavi del problema.
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
Il problema (notare il e.hasmorepages=true lasciato li cosi) è proprio quello.
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.