COMO IMPRIMIR MAIS DE 1 PAGINA PELO PRINT PREVIEW?

DONGUSTAVOSCCP 28/11/2013 17:49:31
#431589
Senhores estou com dificuldade em imprimir mais de uma pagine pelo controle print preview, visto que eu tenho alguns itens em um data grid view, os mesmos imprimem apenas 36 itens e sobrepõe o rodapé da minha página.

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

DONGUSTAVOSCCP 28/11/2013 17:54:21
#431590
Eu uso um data set pra abastecer o grid view, esqueci de mencionar, grato em quem puder auxiliar, só falta eu ajeitar esses relatórios para entregar o meu tcc na ETEC
RUBINHO 29/11/2013 22:06:35
#431627
Resposta escolhida
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
DONGUSTAVOSCCP 29/11/2013 23:21:14
#431629
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
Tópico encerrado , respostas não são mais permitidas