Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

.NetProgrammer

Erro usando o System.Drawing.Printing

Recommended Posts

Segui os exemplos postados pra gerar relatorio usando o System.Drawing.Printing, e consegui gerar o meu Orçamento legal, so que no Preview sai certinho os totais no final do Orçamento, mas quando imprime, sai tipo com valores dobrados, na tela fica ok, mas na impressao dobra os totais ...

 

Anexo o codigo:

 

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'Impressão do orçamento

RelatorioTitulo = "Relatório de Produtos "

Dim pd As Printing.PrintDocument = New Printing.PrintDocument()

AddHandler pd.PrintPage, New Printing.PrintPageEventHandler(AddressOf Me.pdRelatorios_PrintPage)

AddHandler pd.BeginPrint, New Printing.PrintEventHandler(AddressOf Me.Begin_Print)

AddHandler pd.EndPrint, New Printing.PrintEventHandler(AddressOf Me.End_Print)

Dim objPrintPreview As New PrintPreviewDialog

 

Try

With objPrintPreview

.Document = pd

.WindowState = FormWindowState.Maximized

.PrintPreviewControl.Zoom = 1

.Text = "Catálogo de Produtos"

.ShowDialog()

End With

Catch ex As Exception

MessageBox.Show(ex.ToString())

End Try

End Sub

 

Private Sub Begin_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)

Dim conn As New SqlClient.SqlConnection

Dim comando As New SqlClient.SqlCommand

Dim cad As String = "N"

Dim dr_cab As SqlClient.SqlDataReader

 

 

conn.ConnectionString = My.Settings.SisvenConnectionString

 

Try

conn.Open()

comando.Connection = conn

comando.Parameters.AddWithValue("@pedven", TextBox1.Text)

comando.CommandText = "Select Vendas_cab.pedven,Vendas_cab.matcli,Vendas_cab.matreg,Cadcli.nomcli,Cadcli.endcli,Cadcli.baicli,Cadcli.cidade,Cadcli.estado,Cadcli.telcli,Cadcli.cgccpf,Cadcli.ie_nrg,Cadven.nomven,Cadcli.nomfan,Cadcli.faxcli,Vendas_cab.datven,Vendas_cab.perdes,Vendas_cab.desfin,Vendas_cab.despro FROM (Vendas_cab INNER JOIN Cadcli ON Vendas_cab.matcli=Cadcli.matcli) INNER JOIN Cadven ON Vendas_cab.Matreg=Cadven.Matreg Where pedven=@pedven"

dr_cab = comando.ExecuteReader

If (dr_cab.HasRows) Then

While dr_cab.Read

'Atualizar os valores dos campos do cabeçalho

numped = dr_cab.GetInt32(0)

codcli = dr_cab.GetInt32(1)

codven = dr_cab.GetInt32(2)

cliente = dr_cab.GetString(3)

endereco = dr_cab.GetString(4)

bairro = dr_cab.GetString(5)

cidade = dr_cab.GetString(6)

uf = dr_cab.GetString(7)

telefone = dr_cab.GetString(8)

numcgc = dr_cab.GetString(9)

ins_nrg = dr_cab.GetString(10)

vendedor = dr_cab.GetString(11)

fantasia = dr_cab.GetString(12)

numfax = dr_cab.GetString(13)

datavda = dr_cab.GetDateTime(14)

perdesc = 0 & dr_cab.GetValue(15)

valdesf = 0 & dr_cab.GetValue(16)

valdesp = 0 & dr_cab.GetValue(17)

valdes = valdesf + valdesp

If Len(Trim(numcgc)) = 11 Then

numcnpj = Mid(numcgc, 1, 3) & "." & Mid(numcgc, 4, 3) & "." & Mid(numcgc, 7, 3) & "-" & Mid(numcgc, 10, 2)

End If

If Len(Trim(numcgc)) = 14 Then

numcnpj = Mid(numcgc, 1, 2) & "." & Mid(numcgc, 3, 3) & "." & Mid(numcgc, 6, 3) & "/" & Mid(numcgc, 9, 4) & "-" & Mid(numcgc, 13, 2)

End If

End While

End If

dr_cab.Close()

comando.CommandText = "Select Vendas_det.codigo,Vendas_det.qdeped,Cadmer.desmer,Cadmer.marca,Vendas_det.valven,Cadmer.pespro FROM Vendas_det INNER JOIN Cadmer ON Vendas_det.codigo=Cadmer.codigo Where pedven=@pedven"

leitor = comando.ExecuteReader

PaginaAtual = 1

Catch ex As Exception

MessageBox.Show("Erro ao efetuar a conexão com a base de dados :" + ex.Message)

Finally

'conn.Close()

'conn.Dispose()

End Try

End Sub

 

 

Private Sub pdRelatorios_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)

'Variáveis das linhas

Dim LinhasPorPagina As Single = 0

Dim PosicaoDaLinha As Single = 0

Dim LinhaAtual As Integer = 0

 

'Variáveis das margens

' Dim MargemEsquerda As Single = e.MarginBounds.Left

Dim MargemEsquerda As Single = 25

Dim MargemSuperior As Single = e.MarginBounds.Top + 50

' Dim MargemDireita As Single = e.MarginBounds.Right

Dim MargemDireita As Single = 25

Dim MargemInferior As Single = e.MarginBounds.Bottom

 

Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)

Dim codigoProduto As String

Dim nomeProduto As String

Dim marcaProduto As String

Dim qtdeProduto As Single

Dim valorProduto As Single

Dim subtProduto As Single

 

'Variáveis das fontes

Dim FonteNegrito As Font

Dim FonteTitulo As Font

Dim FonteSubTitulo As Font

Dim FonteRodape As Font

Dim FonteNormal As Font

 

FonteNegrito = New Font("Arial", 9, FontStyle.Bold)

FonteTitulo = New Font("Arial", 15, FontStyle.Bold)

FonteSubTitulo = New Font("Arial", 12, FontStyle.Bold)

FonteRodape = New Font("Arial", 8)

FonteNormal = New Font("Arial", 9)

 

LinhaAtual = 0

 

'Cabeçalho

e.Graphics.DrawString("ORCAMENTO DE VENDAS", FonteTitulo, Brushes.Blue, MargemEsquerda + 150, 40, New StringFormat())

'Imagem

e.Graphics.DrawImage(Image.FromFile("C:\MagroparWeb\imagens\" & "LogoBio.jpg"), 11, 60)

e.Graphics.DrawString("Nº.:" & numped.ToString(), FonteSubTitulo, Brushes.Black, MargemEsquerda + 154, 65, New StringFormat())

e.Graphics.DrawString("DE :" & datavda, FonteSubTitulo, Brushes.Black, MargemEsquerda + 290, 65, New StringFormat())

'e.Graphics.DrawString("DE :" & System.DateTime.Today, FonteSubTitulo, Brushes.Black, MargemEsquerda + 290, 65, New StringFormat())

e.Graphics.DrawLine(CanetaDaImpressora, 180, 90, 815, 90)

'Dados do Cabeçalho do Orçamento

e.Graphics.DrawString("Cliente ........: " & codcli & "-" & cliente, FonteRodape, Brushes.Black, MargemEsquerda + 154, 100, New StringFormat())

e.Graphics.DrawString("Nome Fantasia: " & fantasia, FonteRodape, Brushes.Black, MargemEsquerda + 550, 100, New StringFormat())

e.Graphics.DrawString("Endereço .....: " & endereco & "-" & bairro, FonteRodape, Brushes.Black, MargemEsquerda + 154, 115, New StringFormat())

e.Graphics.DrawString("Vendedor .....: " & codven & "-" & vendedor, FonteRodape, Brushes.Black, MargemEsquerda + 550, 115, New StringFormat())

e.Graphics.DrawString("Cidade/UF ..: " & cidade & "-" & uf, FonteRodape, Brushes.Black, MargemEsquerda + 154, 130, New StringFormat())

e.Graphics.DrawString("Numero Cep ..: " & codven & "-" & vendedor, FonteRodape, Brushes.Black, MargemEsquerda + 550, 130, New StringFormat())

e.Graphics.DrawString("Numero CNPJ .: " & numcnpj, FonteRodape, Brushes.Black, MargemEsquerda + 154, 145, New StringFormat())

e.Graphics.DrawString("Inscricao/RG ..: " & ins_nrg, FonteRodape, Brushes.Black, MargemEsquerda + 550, 145, New StringFormat())

e.Graphics.DrawString("Telefone ......: " & telefone, FonteRodape, Brushes.Black, MargemEsquerda + 154, 160, New StringFormat())

e.Graphics.DrawString("Numero FAX...: " & numfax, FonteRodape, Brushes.Black, MargemEsquerda + 550, 160, New StringFormat())

' e.Graphics.DrawLine(CanetaDaImpressora, 180, 30, 180, 190) - linha vertical

e.Graphics.DrawLine(CanetaDaImpressora, 10, 180, 815, 180)

e.Graphics.DrawString("Código", FonteNegrito, Brushes.Black, MargemEsquerda, 190, New StringFormat())

e.Graphics.DrawString("Produto", FonteNegrito, Brushes.Black, MargemEsquerda + 100, 190, New StringFormat())

e.Graphics.DrawString("Marca", FonteNegrito, Brushes.Black, MargemEsquerda + 400, 190, New StringFormat())

e.Graphics.DrawString("Qtde.", FonteNegrito, Brushes.Black, MargemEsquerda + 500, 190, New StringFormat())

e.Graphics.DrawString("Valor", FonteNegrito, Brushes.Black, MargemEsquerda + 600, 190, New StringFormat())

e.Graphics.DrawString("Subtotal", FonteNegrito, Brushes.Black, MargemEsquerda + 700, 190, New StringFormat())

LinhasPorPagina = e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9

LinhaAtual += 5

'Aqui são lidos os dados

While (LinhaAtual < LinhasPorPagina AndAlso leitor.Read())

codigoProduto = leitor.GetString(0)

qtdeProduto = leitor.GetValue(1)

nomeProduto = leitor.GetString(2)

marcaProduto = leitor.GetString(3)

valorProduto = leitor.GetValue(4)

pesmer = 0 & leitor.GetValue(5)

subtProduto = valorProduto * qtdeProduto

PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))

e.Graphics.DrawString(codigoProduto.ToString(), FonteNormal, Brushes.Black, MargemEsquerda, PosicaoDaLinha, New StringFormat())

e.Graphics.DrawString(nomeProduto, FonteNormal, Brushes.Black, MargemEsquerda + 100, PosicaoDaLinha, New StringFormat())

e.Graphics.DrawString(marcaProduto.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 400, PosicaoDaLinha, New StringFormat())

e.Graphics.DrawString(qtdeProduto.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 500, PosicaoDaLinha, New StringFormat())

e.Graphics.DrawString(FormatCurrency(valorProduto).ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 600, PosicaoDaLinha, New StringFormat())

e.Graphics.DrawString(FormatCurrency(subtProduto).ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 700, PosicaoDaLinha, New StringFormat())

LinhaAtual += 1

totmer = totmer + (valorProduto * qtdeProduto)

qdevol = qdevol + qtdeProduto

pestot = pestot + pesmer

End While

If PosicaoDaLinha < 500 Then

PosicaoDaLinha = 500

End If

e.Graphics.DrawLine(CanetaDaImpressora, 10, PosicaoDaLinha, 815, PosicaoDaLinha)

e.Graphics.DrawString(System.DateTime.Today, FonteRodape, Brushes.Black, MargemEsquerda, PosicaoDaLinha + 1, New StringFormat())

e.Graphics.DrawString("Total Volumes : " & qdevol, FonteRodape, Brushes.Black, MargemEsquerda + 400, PosicaoDaLinha + 1, New StringFormat())

e.Graphics.DrawString("Total Mercadoria : ", FonteRodape, Brushes.Black, MargemEsquerda + 550, PosicaoDaLinha + 1, New StringFormat())

e.Graphics.DrawString(FormatCurrency(totmer), FonteRodape, Brushes.Black, MargemEsquerda + 700, PosicaoDaLinha + 1, New StringFormat())

'2ª linha fechamento orçamento

e.Graphics.DrawString(TextBox4.Text, FonteRodape, Brushes.Black, MargemEsquerda, PosicaoDaLinha + 18, New StringFormat())

e.Graphics.DrawString("Peso Mercad. .: " & pestot, FonteRodape, Brushes.Black, MargemEsquerda + 400, PosicaoDaLinha + 18, New StringFormat())

e.Graphics.DrawString("Desconto Financ. " & perdesc & "% :", FonteRodape, Brushes.Black, MargemEsquerda + 550, PosicaoDaLinha + 18, New StringFormat())

e.Graphics.DrawString(FormatCurrency(valdesf), FonteRodape, Brushes.Black, MargemEsquerda + 700, PosicaoDaLinha + 18, New StringFormat())

'3ª linha fechamento orçamento

e.Graphics.DrawString("Transportadora : " & TextBox5.Text, FonteRodape, Brushes.Black, MargemEsquerda, PosicaoDaLinha + 38, New StringFormat())

e.Graphics.DrawString("Desconto Promoc. : ", FonteRodape, Brushes.Black, MargemEsquerda + 550, PosicaoDaLinha + 38, New StringFormat())

e.Graphics.DrawString(FormatCurrency(valdesp), FonteRodape, Brushes.Black, MargemEsquerda + 700, PosicaoDaLinha + 38, New StringFormat())

totped = totmer - (valdesf + valdesp)

e.Graphics.DrawString("Valor Final Pedido : ", FonteRodape, Brushes.Black, MargemEsquerda + 550, PosicaoDaLinha + 58, New StringFormat())

e.Graphics.DrawString(FormatCurrency(totped), FonteRodape, Brushes.Black, MargemEsquerda + 700, PosicaoDaLinha + 58, New StringFormat())

'Rodapé

e.Graphics.DrawLine(CanetaDaImpressora, 10, MargemInferior, 815, MargemInferior)

' e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)

e.Graphics.DrawString(System.DateTime.Now.ToString() & "-" & Usuario, FonteRodape, Brushes.Black, MargemEsquerda + 600, MargemInferior, New StringFormat())

e.Graphics.DrawString("Página : " & PaginaAtual, FonteRodape, Brushes.Black, MargemDireita, MargemInferior, New StringFormat())

'Incrementa o número da página

PaginaAtual += 1

If (LinhaAtual > LinhasPorPagina) Then

e.HasMorePages = True

Else

e.HasMorePages = False

End If

End Sub

 

 

Tô com a corda no pescoço por conta de prazo estourado, quem puder, ajude aê ... valeu !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz eu sinceramente não vou poder te ajudar muito pq não sei, mas ontem no macoratti eles postaram um esquema de "Imprimindo em uma aplicação Windows Forms", veja: http://www.macoratti.net/09/09/c_prn1.htm

 

Espero que possa te ajudar.

 

 

Boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.