Io cerco di stampare un report utilizzando PrintDocument.
Tralascio tutto il codice per disegnare i vari oggetti grafici concentrandomi sul codice che analizza i record contenuti in un datagridview e li passa a PrintDocument.
codice:'Questa variabile contiene la posizione nel dataset Static z As Integer 'In questa invece si mette la posizione di stampa della prima riga dei dati. Dim Y As Integer = 135 'Inizio a ciclare i record 'In questo punto decido quanti record inserire in ogni pagina (in questo caso 25 ognuna) For z = z To z + 70 If z < DataGridView1.RowCount Then 'QUANTITA (In unità) Quantita = FormatNumber(DataGridView1.Rows(z).Cells(2).Value, 2) 'TotQuantita = TotQuantita + Quantita 'PREZZO (In €uro) Prezzo = FormatNumber(DataGridView1.Rows(z).Cells(3).Value, 2) 'SCONTO1 (In termini percentuali) Sconto1 = FormatNumber(DataGridView1.Rows(z).Cells(4).Value, 2) 'SCONTO2 (In termini percentuali) Sconto2 = FormatNumber(DataGridView1.Rows(z).Cells(5).Value, 2) 'SCONTO3 (In termini percentuali) Sconto3 = FormatNumber(DataGridView1.Rows(z).Cells(6).Value, 2) 'IVA (In termini percentuali) Iva = FormatNumber(DataGridView1.Rows(z).Cells(7).Value, 2) 'VALORE (Comprensivo di iva) Valore = FormatNumber(DataGridView1.Rows(z).Cells(8).Value, 2) e.Graphics.DrawString(Quantita, Font3, Brushes.Black, e.MarginBounds.Left + 256, Y) e.Graphics.DrawString(Prezzo, Font3, Brushes.Black, e.MarginBounds.Left + 310, Y) e.Graphics.DrawString(Sconto1, Font3, Brushes.Black, e.MarginBounds.Left + 364, Y) e.Graphics.DrawString(Sconto2, Font3, Brushes.Black, e.MarginBounds.Left + 418, Y) e.Graphics.DrawString(Sconto3, Font3, Brushes.Black, e.MarginBounds.Left + 472, Y) e.Graphics.DrawString(Iva, Font3, Brushes.Black, e.MarginBounds.Left + 526, Y) e.Graphics.DrawString(Valore, Font3, Brushes.Black, e.MarginBounds.Left + 580, Y) Y = Y + Font3.GetHeight e.HasMorePages = True 'Permetto di stampare la pagina successiva 'Aumenta di una unità il numero della pagina Else e.HasMorePages = False 'Blocco la stampa End If Next z
Voi penserete che tutto funziona, ed è proprio così, almeno fino al momento della stampa effettiva, dove vengono stampati tutti gli elementi grafici ma gli item del datagridview no.
Cosa è successo? dove sbaglio?
Ho provato anche a mettere Z=0 (anzichè Z=Z) visualizza correttamente solo la prima pagina, le successive no ma in compenso la prima viene stampata correttamente.
Se qualcuno sa consigliarmi o una possibile risoluzione o altre strade : GRAZIE

Rispondi quotando