COMO IMPRIMIR MAIS DE 1 PAGINA PELO PRINT PREVIEW?
segue abaixo o codigo, e a imagem do relatório em anexo.
Atenciosamente
Gustavo Ibraim,
[ô]Aqui sao lidos os dados do datagridview para imprimir
Dim i As Integer = 0
[ô]Cabecalho dos itens
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, PosicaoDaLinha + 200, MargemDireita, PosicaoDaLinha + 200)
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, PosicaoDaLinha + 230, MargemDireita, PosicaoDaLinha + 230)
[ô]cabecalho do grid
e.Graphics.DrawString([Ô]Código do Pedido [Ô], FonteNormal, Brushes.Black, MargemEsq, PosicaoDaLinha + 210)
e.Graphics.DrawString([Ô]Data do Pedido [Ô], FonteNormal, Brushes.Black, MargemEsq + 200, PosicaoDaLinha + 210)
e.Graphics.DrawString([Ô]Hora do Pedido [Ô], FonteNormal, Brushes.Black, MargemEsq + 400, PosicaoDaLinha + 210)
e.Graphics.DrawString([Ô]Valor do Pedido: [Ô], FonteNormal, Brushes.Black, MargemEsq + 600, PosicaoDaLinha + 210)
[ô]percorrendo o ds
With gdvPedidos
For Each row In .Rows
id_pedido = .Rows(i).Cells(0).Value
data_pedido = .Rows(i).Cells(1).Value.ToString
hora_pedido = .Rows(i).Cells(2).Value.ToString
valor_pedido = .Rows(i).Cells(3).Value
e.Graphics.DrawString(id_pedido, FonteNormal, Brushes.Black, MargemEsq, PosicaoDaLinha + deslocamentoVertical)
e.Graphics.DrawString(data_pedido, FonteNormal, Brushes.Black, MargemEsq + 200, PosicaoDaLinha + deslocamentoVertical)
e.Graphics.DrawString(hora_pedido, FonteNormal, Brushes.Black, MargemEsq + 400, PosicaoDaLinha + deslocamentoVertical)
e.Graphics.DrawString(valor_pedido, FonteNormal, Brushes.Black, MargemEsq + 600, PosicaoDaLinha + deslocamentoVertical)
i += 1
deslocamentoVertical += 20
Next
End With
LinhaAtual += 35
[ô]Rodape
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsq, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString([Ô]Pagina : [Ô] & paginaatual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
[ô]Incrementa o numero da pagina
paginaatual += 1
[ô]verifica se continua imprimindo
If (LinhaAtual > LinhasPorPagina) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
Tenho uma variável com contador wDados
While (LinhaAtual < LinhasPorPagina AndAlso wdados <= (Me.dgv.RowCount - 1))
L += 1
Texto1 = CStr(Me.dgv.Rows(wdados).Cells(0).Value)
Texto2 = CStr(Me.dgv.Rows(wdados).Cells(1).Value)
Texto3 = CStr(Me.dgv.Rows(wdados).Cells(2).Value)
Texto4 = CStr(Me.dgv.Rows(wdados).Cells(10).Value)
Texto5 = CStr(Me.dgv.Rows(wdados).Cells(9).Value)
Texto6 = CStr(Me.dgv.Rows(wdados).Cells(3).Value)
Texto7 = CStr(Me.dgv.Rows(wdados).Cells(4).Value)
Texto8 = CStr(Me.dgv.Rows(wdados).Cells(7).Value)
Texto9 = CStr(Me.dgv.Rows(wdados).Cells(11).Value)
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(Texto8, FonteRodape, Brushes.Black, MargemEsquerda + 10, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Format(Me.dgv.Rows(wdados).Cells(0).Value, [Ô]dd/MM/yyyy[Ô]), FonteRodape, Brushes.Black, MargemEsquerda + 40, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto2, FonteRodape, Brushes.Black, MargemEsquerda + 110, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto3, FonteRodape, Brushes.Black, MargemEsquerda + 220, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto4, FonteRodape, Brushes.Black, MargemEsquerda + 300, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto5, FonteRodape, Brushes.Black, MargemEsquerda + 400, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto6, FonteRodape, Brushes.Black, MargemEsquerda + 500, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto9, FonteRodape, Brushes.Black, MargemEsquerda + 620, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(TamTex, FonteRodape, Brushes.Black, MargemEsquerda + 770, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
PosicaoDaLinha = PosicaoDaLinha + 20
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha, MargemDireita, PosicaoDaLinha)
LinhaAtual += 1
wdados += 1
End While
PosicaoDaLinha = PosicaoDaLinha + 20
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha, MargemDireita, PosicaoDaLinha)
e.Graphics.DrawLine(CanetaDaImpressora, MargemDireita, 160, MargemDireita, PosicaoDaLinha)
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 160, MargemEsquerda, PosicaoDaLinha)
PosicaoDaLinha = PosicaoDaLinha + 20
LinhaAtual += 1
[ô]Rodape
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString([Ô]Mensagem de Rodapé[Ô], FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString([Ô]Pg : [Ô] & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
paginaAtual += 1
If wdados >= Me.dgv.RowCount Then
e.HasMorePages = False
Else
e.HasMorePages = True
End If
Desta forma você terá a quebra da pagina.
Rubenilton Souto
Citação::
Gustavo, segue a dica
Tenho uma variável com contador wDados
While (LinhaAtual < LinhasPorPagina AndAlso wdados <= (Me.dgv.RowCount - 1))
L += 1
Texto1 = CStr(Me.dgv.Rows(wdados).Cells(0).Value)
Texto2 = CStr(Me.dgv.Rows(wdados).Cells(1).Value)
Texto3 = CStr(Me.dgv.Rows(wdados).Cells(2).Value)
Texto4 = CStr(Me.dgv.Rows(wdados).Cells(10).Value)
Texto5 = CStr(Me.dgv.Rows(wdados).Cells(9).Value)
Texto6 = CStr(Me.dgv.Rows(wdados).Cells(3).Value)
Texto7 = CStr(Me.dgv.Rows(wdados).Cells(4).Value)
Texto8 = CStr(Me.dgv.Rows(wdados).Cells(7).Value)
Texto9 = CStr(Me.dgv.Rows(wdados).Cells(11).Value)
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(Texto8, FonteRodape, Brushes.Black, MargemEsquerda + 10, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Format(Me.dgv.Rows(wdados).Cells(0).Value, [Ô]dd/MM/yyyy[Ô]), FonteRodape, Brushes.Black, MargemEsquerda + 40, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto2, FonteRodape, Brushes.Black, MargemEsquerda + 110, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto3, FonteRodape, Brushes.Black, MargemEsquerda + 220, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto4, FonteRodape, Brushes.Black, MargemEsquerda + 300, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto5, FonteRodape, Brushes.Black, MargemEsquerda + 400, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto6, FonteRodape, Brushes.Black, MargemEsquerda + 500, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Texto9, FonteRodape, Brushes.Black, MargemEsquerda + 620, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(TamTex, FonteRodape, Brushes.Black, MargemEsquerda + 770, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
PosicaoDaLinha = PosicaoDaLinha + 20
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha, MargemDireita, PosicaoDaLinha)
LinhaAtual += 1
wdados += 1
End While
PosicaoDaLinha = PosicaoDaLinha + 20
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha, MargemDireita, PosicaoDaLinha)
e.Graphics.DrawLine(CanetaDaImpressora, MargemDireita, 160, MargemDireita, PosicaoDaLinha)
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 160, MargemEsquerda, PosicaoDaLinha)
PosicaoDaLinha = PosicaoDaLinha + 20
LinhaAtual += 1
[ô]Rodape
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString([Ô]Mensagem de Rodapé[Ô], FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString([Ô]Pg : [Ô] & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
paginaAtual += 1
If wdados >= Me.dgv.RowCount Then
e.HasMorePages = False
Else
e.HasMorePages = True
End If
Desta forma você terá a quebra da pagina.
Rubenilton Souto
Amigo, acontece aqui igual acontecia antes, ele até quebra a pagina, mas ele exibe somente os primeiros registros , e os mesmos registros em todas as paginas, alem de ele gerar paginas sem fim , eu deixei rolar , deu mais de 500 paginas e eu só tenho 173 registros no meu gridview