Ir para conteúdo
Fórum Script Brasil
  • 0

Código para o menu imprimir


Carlos Rocha

Pergunta

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 é:

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

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...