PROBLEMAS EM PRINTDOCUMENT
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.
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.
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.
[ô] 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.
Bom, por falta de soluções, estou encerrando o tópico. Vou continuar tentando e se encontrar a solução, postarei aqui.
Até mais.
Até mais.
Tópico encerrado , respostas não são mais permitidas