Carcleo 4 Denunciar post Postado Janeiro 6, 2009 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 preco 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") preco = leitor("preco") 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(preco, 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 Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Janeiro 12, 2009 Bom, consegui resolver, se ajudar a alguem, tai a solução.; 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.Pedidos.BringToFront() Exit Sub Else Dim imprimepedido As New Pedidos imprimepedido.ccodigo = drp.Item("pedidoID") imprimepedido.Impimir_Click(Nothing, Nothing) End If Next End If End Sub Compartilhar este post Link para o post Compartilhar em outros sites