No menu da minha aplicação tem o ítem imprimir pedido. ta.
Preciso arranjar um código pra por nesse menu de forma que após digitado o numero do pedido, o código vai la no form de pedidos e entra no beginprint de um PrintDocument que tem la e envia para la o numero do pedido para que o PrintDocument que tem la exiba pelo printpreviewdialog os dados do pedido tal.
O código que estou usando no menu é:
Private Sub PedidoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PedidoToolStripMenuItem.Click
Dim frmAberto As Boolean = False
For Each frm As Form In Application.OpenForms
If frm.Name = "VisualizarImprimir" Then
frmAberto = True
Exit For
End If
Next
Dim ret As String = String.Empty
While True
ret = InputBox("Entre o Número do Pedido")
' Será que o usuário está tentando cancelar?
If ret.Trim() = String.Empty Then
If MessageBox.Show("Deseja Cancelar a consulta?", "Consulta", MessageBoxButtons.YesNo) = _
Windows.Forms.DialogResult.Yes Then
Return
End If
ElseIf Not IsNumeric(ret) Then
MessageBox.Show("Digite somente números!")
Else
Exit While
End If
End While
Dim sqlp As String = "Select * from " & TabelaPedidos & " where pedidoID = " & ret
ds = accDb.ExecuteDS(sqlp, TabelaPedidos)
If ds.Tables(0).Rows.Count = 0 Then
MsgBox("Pedido não encontrado!")
Else
For Each drp As DataRow In ds.Tables(0).Rows
If frmAberto = True Then
My.Forms.VisualizarImprimir.BringToFront()
Exit Sub
Else
'#######
'AQUI ENTRARIA O CÓDIGO INFORMANDO QUE O CÓDIGO DO PEDIDO É O CÓDIGO DIGITADO NA CAIXINHA DE DIALOGO ret = InputBox("Entre o Número do Pedido").
'#######
End If
Next
End If
End Sub
o CÓDIGO DO MEU FORM DE PEDIDOS É ESSE:
(ESTOU EXCLUINDO A PARTE DO CÓDIGO QUE NÃO TEM NADA A VER COM O PRINT DOCUMENTO TA?)
Imports MySql.Data.MySqlClient
Imports System.Text.RegularExpressions
Imports System.Math
Imports System.Drawing.Printing
Public Class Pedidos
'INICIO DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
Inherits System.Windows.Forms.Form
Dim accDb As New DBConnection
Dim registrocliente As Integer
Dim registroproduto As Integer
Dim registroitem As Integer
Dim registropedido As Integer
Dim registropedidos As Integer
Dim Proximopedido As New Integer
Dim ds As DataSet = Nothing
Dim ds_itens As DataSet = Nothing
Dim ds_itens_temp As DataSet = Nothing
Dim dt As DataTable
Dim dr As DataRow
Dim TabelaClientes As String = "clientes"
Dim TabelaProdutos As String = "produtos"
Dim TabelaPedidos As String = "pedidos"
Dim TabelaDetalhesPedidos As String = "detalhespedidos"
'FIM DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
''''''''''''''''''''''''''''''''''''''''''
'INICIO DAS FUNÇÕES E PROCÍDURES
###########RESTO DO ODIGO DO FORM####
####################
'Recursos da Paginação
Private RelatorioTitulo As String
Dim leitor As MySqlDataReader
Private PaginaAtual As Integer = 1
Private TotalPaginas As Integer
Dim TotalNota As Integer
Dim totalLinhas As Long
Dim ccodigo As Integer
Dim conexao As New MySqlConnection
Private Sub Impimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Impimir.Click
RelatorioTitulo = "Impressão de pedido "
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)
ccodigo = codigoped.Text
Dim strConnString As String = "server=localhost;userid=root;password=;database=Vendas"
conexao = New MySqlConnection(strConnString)
conexao.Open()
'pegando o numero total de linhas
Dim PrintStringdetalhespedidoscount As String = "Select Count(*) from detalhespedidos where pedidoID= " & ccodigo & " order by produtoID"
Dim cmdcount As New MySqlCommand(PrintStringdetalhespedidoscount, conexao)
totalLinhas = CInt(cmdcount.ExecuteScalar())
Dim PrintStringdetalhespedidos As String = "Select * from detalhespedidos where pedidoID= " & ccodigo & " order by produtoID"
Dim cmd As New MySqlCommand(PrintStringdetalhespedidos, conexao)
leitor = cmd.ExecuteReader()
PaginaAtual = 1
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 MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemDireita As Single = e.MarginBounds.Right
Dim MargemInferior As Single = e.MarginBounds.Bottom
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)
Dim produtoID As Integer
Dim unidade As String
Dim descricao As String
Dim preço As Integer
Dim quantidade As Integer
Dim subtotal As Integer
'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
'********************************
'inicio imprime o cabeçalho do relatório
'********************************
e.Graphics.DrawLine(Pens.Black, MargemEsquerda, 60, MargemDireita, 60)
e.Graphics.DrawImage(Image.FromFile("imagens\" & "maco10.gif"), 100, 68)
e.Graphics.DrawString("PEDIDO", New Font("arial", 15, FontStyle.Regular), Brushes.Black, MargemEsquerda + 260, 80)
e.Graphics.DrawString("Dados da empresa", New Font("arial", 15, FontStyle.Regular), Brushes.Black, MargemEsquerda + 400, 80)
e.Graphics.DrawString("Pedido : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda, 160)
e.Graphics.DrawString(ccodigo, New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 140, 160)
Dim pgto As String
Dim PrintStringpedidos As String = "select p.pedidoID, p.clienteID, p.ativo, p.data, p.cobranca, p.entrega, p.frete, p.pgto, p.CondPgto, c.nome as nome, c.tipo as pessoa, c.cpf_cnpj as dcto from pedidos p inner join clientes c ON p.clienteID = c.clienteID where pedidoID= " & ccodigo
Dim DRP As DataSet = accDb.ExecuteDS(PrintStringpedidos, TabelaPedidos)
For Each linha As DataRow In DRP.Tables(0).Rows
e.Graphics.DrawString("Data : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 200, 160)
e.Graphics.DrawString(linha.Item("data"), New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 250, 160)
e.Graphics.DrawString("Frete : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 400, 160)
e.Graphics.DrawString(linha.Item("frete"), New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 450, 160)
If linha.Item("PGTO") = "V" Then
pgto = "À Vista"
e.Graphics.DrawString("PAGAMENTO:", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 300, 180)
e.Graphics.DrawString(pgto, New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 450, 180)
End If
If linha.Item("PGTO") = "P" Then
pgto = "À PRAZO"
e.Graphics.DrawString("PAGAMENTO:", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 300, 180)
e.Graphics.DrawString(pgto, New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 400, 180)
e.Graphics.DrawString("Forma: ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 500, 180)
e.Graphics.DrawString(linha.Item("CondPgto").ToString.Replace(" ", ",") + " Dias", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 570, 180)
End If
Dim documento As String = ""
Dim TIPO As String = ""
If linha.Item("dcto").ToString.Length = 11 Then
' mascara de cpf
documento = String.Format("999,999,999-99", linha.Item("dcto").ToString)
TIPO = "CPF"
End If
If linha.Item("dcto").ToString.Length = 14 Then
' mascara de cnpj
documento = String.Format("99,999,999-9999-99", linha.Item("dcto").ToString)
TIPO = "CNPJ"
End If
e.Graphics.DrawString(TIPO & " : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda, 180)
e.Graphics.DrawString(documento, New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 140, 180)
e.Graphics.DrawString("Nome : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda, 200)
e.Graphics.DrawString(linha.Item("nome"), New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 140, 200)
e.Graphics.DrawString("Cobrança : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda, 220)
e.Graphics.DrawString(linha.Item("cobranca"), New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 140, 220)
e.Graphics.DrawString("Endereço : ", New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda, 240)
e.Graphics.DrawString(linha.Item("entrega"), New Font("arial", 10, FontStyle.Regular), Brushes.Black, MargemEsquerda + 140, 240)
Next linha
'********************************
'fim imprime o cabeçalho do relatório
'********************************
'*******************************************
'imprime os títulos das colunas do relatório
'*******************************************
e.Graphics.DrawLine(Pens.Black, MargemEsquerda, 260, MargemDireita, 260)
e.Graphics.DrawString("Cód.", FonteNormal, Brushes.Red, MargemEsquerda, 260, New StringFormat())
e.Graphics.DrawString("Unid.", FonteNormal, Brushes.Red, MargemEsquerda + 50, 260, New StringFormat())
e.Graphics.DrawString("Descrição", FonteNormal, Brushes.Red, MargemEsquerda + 100, 260, New StringFormat())
e.Graphics.DrawString("Preço", FonteNormal, Brushes.Red, MargemEsquerda + 350, 260, New StringFormat())
e.Graphics.DrawString("Qtde", FonteNormal, Brushes.Red, MargemEsquerda + 450, 260, New StringFormat())
e.Graphics.DrawString("Total", FonteNormal, Brushes.Red, MargemEsquerda + 550, 260, New StringFormat())
e.Graphics.DrawLine(Pens.Black, MargemEsquerda, 280, MargemDireita, 280)
'define o número de linhas por página de acordo com a área de impressão e o tamanho da fonte
'subtraimos o valor 10 do resultado para acomodar o rodapé do relatório
LinhasPorPagina = e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 10
'LinhasPorPagina = 8
'ativamos o tratamento de erro
While (LinhaAtual < LinhasPorPagina AndAlso leitor.Read())
produtoID = leitor("produtoID")
unidade = leitor("unidade")
descricao = leitor("descricao")
preço = leitor("preço")
quantidade = leitor("quantidade")
subtotal = leitor("subtotal")
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics)) + 100
e.Graphics.DrawString(produtoID, FonteNormal, Brushes.Black, MargemEsquerda, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(unidade, FonteNormal, Brushes.Black, MargemEsquerda + 50, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(descricao, FonteNormal, Brushes.Black, MargemEsquerda + 100, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(preço, FonteNormal, Brushes.Black, MargemEsquerda + 350, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(quantidade, FonteNormal, Brushes.Black, MargemEsquerda + 450, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(subtotal, FonteNormal, Brushes.Black, MargemEsquerda + 550, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
End While
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
e.Graphics.DrawString("Página : " & PaginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
'Incrementa o número da página
PaginaAtual += 1
TotalPaginas = Ceiling(totalLinhas / LinhasPorPagina)
If (PaginaAtual <= TotalPaginas) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
Private Sub End_Print(ByVal sender As Object, ByVal byvale As Printing.PrintEventArgs)
leitor.Close()
conexao.Close()
End Sub
'FIM DO CARREGAMENTO DAS PROPRIEDADES E EVENTOS
End Class
Pergunta
Carlos Rocha
ola.
To precisando de uma luz!
Seguinte:
No menu da minha aplicação tem o ítem imprimir pedido. ta.
Preciso arranjar um código pra por nesse menu de forma que após digitado o numero do pedido, o código vai la no form de pedidos e entra no beginprint de um PrintDocument que tem la e envia para la o numero do pedido para que o PrintDocument que tem la exiba pelo printpreviewdialog os dados do pedido tal.
O código que estou usando no menu é:
o CÓDIGO DO MEU FORM DE PEDIDOS É ESSE: (ESTOU EXCLUINDO A PARTE DO CÓDIGO QUE NÃO TEM NADA A VER COM O PRINT DOCUMENTO TA?)Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.