PROBLEMAS EM PRINTDOCUMENT

PERCIFILHO 08/06/2011 09:01:49
#376143
Bom dia, amigos, desculpem a minha insistência nesse assunto, mas como ainda não obtive uma resposta clara, e antes que o tópico fique muito antigo, resolvi postar novamente.
Tenho que mostrar o resultado de uma consulta em um relatório com o PrintDocument, visualizando com PrintPreview.
Minha rotina está dessa maneira:

[txt-color=#0000f0]Dim daconsulta As New SqlDataAdapter([Ô]Select * From Movimentos Where medida Like [ô][Ô] & CmbMedida.Text & [Ô][ô] And data Between [ô][Ô] & TxtDataInicial.Text & [Ô][ô] And [ô][Ô] & TxtDataFinal.Text & [Ô][ô][Ô], conexao)
Dim dsconsulta As New DataSet
daconsulta.Fill(dsconsulta, [Ô]Movimentos[Ô])
For i As Integer = 0 To dsconsulta.Tables([Ô]Movimentos[Ô]).Rows.Count - 1
e.Graphics.DrawString(dsconsulta.Tables([Ô]Movimentos[Ô]).Rows(i)([Ô]data[Ô]) & Space(2) & CDbl(dsconsulta.Tables ([Ô]Movimentos[Ô]).Rows(i)([Ô]quantidade[Ô])), New Font([Ô]Courier New[Ô], 10, FontStyle.Regular), Brushes.Black, 200, novalinha + 20)
novalinha = novalinha + 20
Next
conexao.Close()[/txt-color]

Até aí, parece tudo bem. Porém, como eu nunca saberei quantos registros a consulta irá me retornar, se por acaso o número de registros for maior do que 1 página, como fazer com que o resultado apareça em mais de uma página.
Já vi alguns exemplos, mas não consegui adaptar a esta minha rotina. Não sei, também se essa é a maneira correta de se fazer isso. Mas só falta esse detalhe para terminar essa parte do sistema. Se alguém puder me ajudar, agradeço muito.

Até mais.
PERCIFILHO 08/06/2011 12:26:33
#376166
Seguindo um exemplo que peguei, tentei fazer assim:

[ô] variavel da quantidade de linhas por página
Dim linhasporpagina As Single = 10
[ô] variavel da linha atual
Dim linhaatual As Integer = 0

For i As Integer = 0 To dsconsulta.Tables([Ô]Movimentos[Ô]).Rows.Count - 1
e.Graphics.DrawString(dsconsulta.Tables([Ô]Movimentos[Ô]).Rows(i)([Ô]data[Ô]) & Space(2) & CDbl(dsconsulta.Tables ([Ô]Movimentos[Ô]).Rows(i)([Ô]quantidade[Ô])), New Font([Ô]Courier New[Ô], 10, FontStyle.Regular), Brushes.Black, 200, novalinha + 20)
novalinha = novalinha + 20
linhaatual +=1
Next
If linhaatual > linhasporpagina Then
e.HasMorePages = True
linhaatual = 0
novalinha = 130
Else
e.HasMorePages = False
End If

Porém os registros são escritos sobre os outros e não adiciona nenhuma página, visualiza apenas uma página com todos os registros.

Onde será que estou errando? Etou tentando há quase 4 dias e ainda não consegui resolver.

Até mais.
PERCIFILHO 09/06/2011 16:44:50
#376325
Bom, por falta de soluções, estou encerrando o tópico. Vou continuar tentando e se encontrar a solução, postarei aqui.
Até mais.
Tópico encerrado , respostas não são mais permitidas