NAO CONSIGO IMPRIMIR

PERCIFILHO 14/06/2011 16:10:01
#376737
Olá, amigos, estou com um problema na hora de imprimir um relatório no PrintDocument.
Eu estou fazendo da seguinte maneira: ao clicar no botão, crio um arquivo texto com os itens que serão impressos, aí eu imprimo o cabeçalho e em seguida os registros do arquivo. Tudo isso é feito e é aberto o PrintPreview. Aí se eu clicar no botão do PrintPreview para imprimir, só imprime o cabeçalho e os totais.
Os registros que eu [Ô]peguei[Ô] do arquivo texto são apenas visualizados porém não imprime nenhum.
Alguém pode me dizer onde está o erro?

Até mais.
TECLA 14/06/2011 20:36:40
#376776
Poste o código.
PERCIFILHO 15/06/2011 08:01:53
#376798
Olá, Tecla, por favor me ajude. Estou enviando o código, a tela do sistema, a tela da visualização do relatório e o resultado da impressão.
Se puder me orientar, verifique se estou fazendo da maneira correta, pois estou iniciando no VB.Net, apanhando um pouco, pegando um exemplo aqui e outro ali, adaptando às minhas necessidades e ainda não sei se estou fazendo tudo certo, principalmente no que diz respeito aos dados, como manipulá-los, etc.
Desde já, obrigado pela atenção.

Até mais.
PERCIFILHO 15/06/2011 13:02:56
#376826
Caros colegas, o problema está difícil de se resolver:
O código é esse:

Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports System.IO.File
Imports System.ComponentModel
Imports Microsoft.VisualBasic
Imports System.Drawing.Printing

Public Class Consultas

Inherits System.Windows.Forms.Form

Private pagina As Single = 1
Private linhasporpagina As Single = 10
Private linhaatual As Single = 0
Private ncontador As Integer = 0
Private totalquantidade As Double = 0
Private totalpeso As Double = 0
Private st As StreamReader
Private stw As StreamWriter
Private printFont As Font

Private Sub Cabecalho1(ByVal sender As Object, ByVal e As PrintPageEventArgs)
e.Graphics.DrawImage(Image.FromFile([Ô]g:\estoque bobinas\[Ô] & [Ô]ventlar.bmp[Ô]), 100, 10)
e.Graphics.DrawString([Ô]VENT-LAR INDÚSTRIA E COMéRCIO LTDA[Ô], New Font([Ô]Verdana[Ô], 14, FontStyle.Bold), Brushes.Black, 250, 10)
e.Graphics.DrawString([Ô]Relatório de Entradas de: [Ô], New Font([Ô]Courier New[Ô], 12, FontStyle.Regular), Brushes.Black, 230, 50)
e.Graphics.DrawString(TxtDataInicial.Text & [Ô] a [Ô] & TxtDataFinal.Text, New Font([Ô]Courier New[Ô], 12, FontStyle.Regular), Brushes.Black, 230, 70)
e.Graphics.DrawLine(Pens.Black, 1, 100, 830, 100)
e.Graphics.DrawString([Ô]Data Quant. Esp. Peso[Ô], New Font([Ô]Courier New[Ô], 10, FontStyle.Regular), Brushes.Black, 230, 110)
e.Graphics.DrawLine(Pens.Black, 1, 140, 830, 140)
linhaatual = 140
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
stw = New StreamWriter([Ô]c:\meu_arquivo.txt[Ô])
Dim dtconsulta As New DataTable
Dim daconsulta As New SqlDataAdapter([Ô]Select * From Movimentos Where espessura Like [ô][Ô] & CmbEspessura.Text & [Ô][ô] And data Between [ô][Ô] & TxtDataInicial.Text & [Ô][ô] And [ô][Ô] & TxtDataFinal.Text & [Ô][ô] Order by data[Ô], conexao)
daconsulta.Fill(dtconsulta)
conexao.Open()
For i As Integer = 0 To dtconsulta.Rows.Count - 1
stw.WriteLine(dtconsulta.Rows(i)([Ô]data[Ô]) & CDbl(dtconsulta.Rows(i)([Ô]quantidade[Ô])).ToString([Ô]####[Ô]).PadLeft(4) & CDbl(dtconsulta.Rows(i)([Ô]espessura[Ô])).ToString([Ô]#0.00[Ô]).PadLeft(5) & CDbl(dtconsulta.Rows(i)([Ô]peso[Ô])).ToString([Ô]###,##0.00[Ô]).PadLeft(10))
Next
conexao.Close()
stw.Close()
printFont = New Font([Ô]Arial[Ô], 10)
Dim pd As New PrintDocument()
Dim pp As New PrintPreviewDialog
AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
pp.Document = PrintDocument1
pp.WindowState = FormWindowState.Maximized
pp.PrintPreviewControl.Zoom = 0.8
pp.Text = [Ô]Visualização de relatório[Ô]
CType(pp.Controls(1), ToolStrip).RenderMode = ToolStripRenderMode.Professional
CType(pp.Controls(1), ToolStrip).GripStyle = ToolStripGripStyle.Visible
CType(pp.Controls(1), ToolStrip).Height = 28
pp.ShowDialog()
End Sub

Private Sub pd_PrintPage(ByVal sender As System.Object, ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = e.MarginBounds.Left
Dim topMargin As Single = e.MarginBounds.Top
Dim line As String = Nothing
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics) - 15
st = New StreamReader([Ô]c:\meu_arquivo.txt[Ô])
Cabecalho1(sender, e)
linhaatual = linhaatual + 20
totalquantidade = 0
totalpeso = 0
While count < linesPerPage
line = st.ReadLine()
If line Is Nothing Then
e.Graphics.DrawLine(Pens.Black, 1, linhaatual + 10, 830, linhaatual + 10)
e.Graphics.DrawString(Space(3) & [Ô]Total >>>>> [Ô] & CDbl(totalquantidade).ToString.PadLeft(4) & Space(11) & CDbl(totalpeso).ToString([Ô]###,##0.00[Ô]).PadLeft(10), New Font([Ô]Courier New[Ô], 10, FontStyle.Bold), Brushes.Black, 200, linhaatual + 20)
Exit While
End If
e.Graphics.DrawString(Space(15) & Mid(line, 1, 10) & Space(2) & CDbl(Mid(line, 11, 4)).ToString.PadLeft(4) & Space(4) & CDbl(Mid(line, 15, 5)).ToString([Ô]#0.00[Ô]).PadLeft(5) & Space(2) & CDbl(Mid(line, 20, 10)).ToString([Ô]###,##0.00[Ô]).PadLeft(10), New Font([Ô]Courier New[Ô], 10, FontStyle.Regular), Brushes.Black, leftMargin, linhaatual)
totalquantidade = totalquantidade + Mid(line, 11, 4)
totalpeso = totalpeso + Mid(line, 20, 10)
linhaatual = linhaatual + 20
count += 1
End While
If (line IsNot Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
st.Close()
End Sub

End Class


Quando o relatório tem 1 página apenas, tudo ok, porém se tiver mais de uma página, começa um loop sem fim, e me mostra várias páginas todas iguais à primeira.
Já tentei várias coisas e ainda não consegui fazer o relatório correto. Alguém me ajude, por favor?

Até mais.
Tópico encerrado , respostas não são mais permitidas