none
Imprimir pedido de Venda em Asp net com Crystal Reports RRS feed

  • Pergunta

  • Olá pessoal..

    Utilizo o VS 2008 com Asp Net, e tenho uma tela de pedido de venda e preciso imprimir esse pedido através de um botãzinho de imprimir na tela do pedido . Pesquisei sobre o assunto e pelo que vi a ferramenta mais interessante para isso seria o Crystal Reports. Alguém poderia me dar um auxílio de como começo isso, ou me indicar algum material que me ajude, pois os que eu encontrei não me ajudaram muito e a maioria utiliza uma conexão direta ao banco local, que não é o meu caso. No sistema tem uma arquivinho de conexão que é o que vai conectar bo BD.

    Desde já agradeço.


    Nessa
    segunda-feira, 2 de agosto de 2010 18:50

Respostas

  • Ola

    Bom... o crystal nunca foi muito bom nisso, mas vamos lá

    1: configure a pagina para A5 paisagem (que é um A4 pela metade)

    2: para multiplas colunas, olhe a ultima opçao do Section Expert (clique com o botao direito sobre o relatorio ou va no menu crystalreports>Report... olhe a ultima opcao (format with multiple columns) depois que vc marca essa opçao aparece uma aba layout. ali vc define a largura da coluna.

    So uma questao, as quantidade sao fixas? digo, serao sempre 10 itens?

    E o mesmos itens devem aparecer na segunda parte?

     

    Se for isso eu vejo que a saida vai ser usar sub-report...

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    quinta-feira, 12 de agosto de 2010 13:04
  • Povo enfim cheguei a uma solução do meu problema do pedido de venda. Acabei não utilizando as duas colunas conforme eu queria, mas segue abaixo o código para o meu pedido de venda. Está imprimindo certinho. Serviu pra mim espero que sirva pra alguem.
    Abraço a todos e obrigada pela ajuda William.

    Imports Model_Layer
    Imports Business_Layer
    Imports System.Data
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Imports Data_Layer
    Imports System.Data.SqlClient
    
    Partial Class PedidoVenda_Impressao
      Inherits System.Web.UI.Page
    
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        'Dim bl As New EstoqueBL
        Dim crReportDocument As New ReportDocument
        Dim crSubReportDocument As New ReportDocument
        Dim sqlPar As SqlParameter, colPar As New Collection
        Dim strSQL As New StringBuilder, sqlReader As SqlDataReader
        Dim tb As New DataTable, row As System.Data.DataRow
        Dim idColumn As DataColumn = New DataColumn()
        Dim mlItens As Pedido_Venda_ItemRelML, clItens As Pedido_Venda_ItensRelML
        Dim bl_item As New Pedido_Venda_ItemBL
        Dim ml As Pedido_VendaRelML, bl As New Pedido_VendaBL
        Dim Func As New FuncoesCalculo
        Dim tbx As New DataTable <br/>
        Dim tbTemp As New DataTable
    
        Dim NumPed As String = Page.Request.QueryString("Num_Ped")
        Dim strPathreport As String = Server.MapPath("Relatorios\PedidoVenda.rpt") <br/>
        Dim Emp As String = Session("empresa")
        Dim PercDesconto As Double
    
    
        crReportDocument.Load(strPathreport)
    
    
        '--------Pega valor SubTotal dos Itens com o Desconto
    
        strSQL.Append("SELECT Per_Desconto from Pedido_Venda").AppendLine()
        strSQL.Append("WHERE Num_Pedido=" + NumPed.ToString).AppendLine()
        strSQL.Append(" and Empresa=" + Emp.ToString).AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
    
        If sqlReader.Read Then PercDesconto = sqlReader("Per_Desconto")
    
        'tbTemp.Load(sqlReader)
        sqlReader.Close()
    
    
        '-----------Cria Tabela para Itens do Pedido
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "Num_Pedido"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "ID_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Qnt_Solicitada"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Preco_Venda"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Descr_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "Sequencia"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "SubTotal_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Unid_Venda"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "COD_ITEM_FORNECEDOR"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "CodBarra"
        tb.Columns.Add(idColumn)
    
        '---------- Carrega os Itens do Pedido
        clItens = bl_item.CarregarItensPedido(Emp, NumPed)
        ml = bl.VerificarTotalPedido(Emp, NumPed)
        Dim ICMSST As Double = 0
        Dim SubtotalDesconto As Double
        ' Dim SubTotDesc As Double
    
        For cont As Integer = 0 To clItens.Count - 1
          mlItens = clItens(cont)
          row = tb.NewRow()
          row("Num_Pedido") = NumPed
          row("ID_Item") = mlItens.ID_Item
          row("Preco_Venda") = mlItens.Preco_Venda.ToString("#,###,##0.00")
          row("Qnt_Solicitada") = mlItens.Qnt_Solicitada
          row("Descr_Item") = mlItens.Descr_Item
          row("Unid_Venda") = mlItens.Unid_Venda
          row("COD_ITEM_FORNECEDOR") = mlItens.COD_ITEM_FORNECEDOR
          row("CodBarra") = mlItens.Cod_Barra
          SubtotalDesconto = mlItens.Qnt_Solicitada * mlItens.Preco_Venda
          row("SubTotal_Item") = SubtotalDesconto * (1 - (PercDesconto / 100))
          ICMSST = ICMSST + Func.ICMS_ST(mlItens.Empresa, mlItens.ID_Item, row("SubTotal_Item"), ml.ID_Participante)
          tb.Rows.Add(row)
        Next
    
    
        'Criar o Cabeçalho
        '3 passo: definir o DataSource do relatório
        'Obtém dados do cabeçalho do pedido
        sqlPar = New SqlParameter
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = NumPed
        sqlPar.ParameterName = "@Num_Pedido"
        colPar.Add(sqlPar)
    
        sqlPar = New SqlParameter
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = Emp
        sqlPar.ParameterName = "@Empresa"
        colPar.Add(sqlPar)
    
        strSQL = New StringBuilder
    
        strSQL.Append("SELECT PV.Empresa, PV.Codigo, PV.Num_Pedido, PV.ID_Participante, Part.Nome as Nome_Participante, PV.Data_Emissao, Cnd_Pgto_Venda.Descricao AS Cnd_Pgto, ").AppendLine()
        strSQL.Append("PV.Per_Desconto, PV.VL_Desconto, PV.Texto, PV.Per_Desconto_Comissao, PV.VL_Desconto_Comissao, PV.Data_Registro, PV.Usuario_Registro, ").AppendLine()
        strSQL.Append("PV.Status, PV.ID_Nota_Fiscal, Vendedor.Nome AS Vendedor, Part.Fantasia, Part.Endereco, Part.Cep, Cidade_IBGE.Nome AS Cidade, Part.Num, ").AppendLine()
        strSQL.Append("Part.FoneFix, Cidade_IBGE.UF,Part.CNPJ, Part.IE, Part.CPF, ").AppendLine()
        strSQL.Append("CASE Part.CRT WHEN 1 THEN 'Simples Nacional' WHEN 2 then 'Simples Nacional – Excesso de Sublimite de Receita Bruta' WHEN 3 then 'Regime Normal' END as CRT").AppendLine()
        strSQL.Append("FROM Pedido_Venda AS PV ").AppendLine()
        strSQL.Append("left outer join empresa on PV.empresa=empresa.codigo").AppendLine()
        strSQL.Append("LEFT OUTER JOIN Participante AS Part ON PV.ID_Participante = Part.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cnd_Pgto_Venda ON PV.ID_Cnd_Pgto_Venda = Cnd_Pgto_Venda.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Vendedor ON PV.Vendedor = Vendedor.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cidade_IBGE ON Part.Cod_Mun = Cidade_IBGE.Codigo").AppendLine()
        strSQL.Append("WHERE PV.Num_Pedido=@Num_Pedido and PV.Empresa=@Empresa").AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
        tbx.Load(sqlReader)
        sqlReader.Close()
    
    
        '--------------- Calcula Valor de ICMS ST
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Vl_ICMS_ST"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Vl_Desconto"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Vl_Total_Geral"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Mensagem"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Perc_Desconto"
        tbx.Columns.Add(idColumn)
    
        '------------- Cacula Total Pedido
    
        row = tbx.Rows(0)
        row("Vl_ICMS_ST") = ICMSST
        row("VL_Desconto") = ml.Vl_Desconto
        row("Vl_Total_Geral") = ml.Total.ToString("#,###,##0.00") + ICMSST
        row("Perc_Desconto") = PercDesconto
    
    
    
        '-------------- Carrega Mensagem Vidros
    
        Dim cl As New Pedido_Venda_ItensML
        cl = bl_item.VerificaPedidoItemVidro(Emp, NumPed)
        If cl.Count <> 0 Then
          row("Mensagem") = "OBS: NAO TROCAMOS A LINHA DE VIDROS, PORCELANA E PINTADOS. FAVOR CONFERIR"
        End If
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Descr_Negocio"
        tbx.Columns.Add(idColumn)
    
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Dt_Cadastro"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "EmpresaNome"
        tbx.Columns.Add(idColumn)
    
        '-------------- Carrega Descrição do Negócio - Participantes
    
    
        strSQL = New StringBuilder
    
        strSQL.Append(" SELECT Pedido_Venda.Num_Pedido, Empresa.Fantasia, Participante.Descr_Negocio, Participante.Dt_Cadastro, ISNULL(Cnd_Pgto_Venda.Banco,0) as Banco ").AppendLine() 'ISNULL(Cnd_Pgto_Venda.Banco,0)
        strSQL.Append("FROM Pedido_Venda LEFT OUTER JOIN").AppendLine()
        strSQL.Append(" Empresa ON Pedido_Venda.Empresa = Empresa.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Participante ON Pedido_Venda.ID_Participante = Participante.Codigo").AppendLine()
        strSQL.Append("LEFT OUTER JOIN Cnd_Pgto_Venda ON Pedido_Venda.ID_Cnd_Pgto_Venda = Cnd_Pgto_Venda.Codigo").AppendLine()
        strSQL.Append("WHERE Pedido_Venda.Num_Pedido =@Num_Pedido and pedido_venda.empresa=@Empresa").AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
    
        Dim banco As Boolean
        If sqlReader.Read Then banco = sqlReader("Banco")
    
        If ml.Total > 1000 Or banco = True Then
          row = tbx.Rows(0)
          row("Descr_Negocio") = sqlReader("Descr_Negocio")
          row("Dt_Cadastro") = "Data Cadastro: " + sqlReader("Dt_Cadastro")
          row("EmpresaNome") = sqlReader("Fantasia")
        End If
    
        sqlReader.Close()
    
        crReportDocument.Database.Tables(0).SetDataSource(tb)
        crReportDocument.Database.Tables(1).SetDataSource(tbx)
    
    
        '4 passo: visualizar o relatório
        Imprimir_Pedido.DisplayGroupTree = False
        Imprimir_Pedido.HasCrystalLogo = False
        Imprimir_Pedido.ReportSource = crReportDocument
    
      End Sub
    End Class
    
    



    Nessa
    segunda-feira, 4 de outubro de 2010 11:25

Todas as Respostas

  • Oi Vanessa

    Projetinho bobo que fiz e vai te ajudar

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/f64066b2-4f92-41e3-a6fe-87e4177151ab/

    Mas basicamente vc tem que :

    1- Criar um XSD que vai servir de mascara de dados para o Crystal

    2- Crie um Dataset que seja do mesmo formato do XSD

    3- Utilize o dataset como fonte de dados do crystal

     

    Aqui esta um outro projeto

    http://www.c-sharpcorner.com/UploadFile/rsubhajit/CrystalReportwithDataSet03012006060655AM/CrystalReportwithDataSet.aspx

    e mais um

    http://www.beansoftware.com/asp.net-tutorials/using-crystal-reports.aspx

     

    Mas eu daria uma olhada no ReportViewer (é o substituto do Crystal feito pela Microsoft)

    http://www.codeproject.com/KB/webforms/ReportViewer.aspx

    e

    http://www.vbdotnetheaven.com/UploadFile/mahesh/reportfromDataSet05102007235707PM/reportfromDataSet.aspx

    eu acho melhor que o crystal por nao precisar distribuir nenhuma DLL extra, o que no crystal sempre foi (e sempre será) uma dor de cabeça adicional... Lembre-se do VB6

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 2 de agosto de 2010 19:16
  • Oi William, pois é eu estudei sobre o Report Viewer também, até fiz uns testes e tals, mas tive um pouco de dificuldades com ele em questão de formatação e tals.. Mas vou dar mais uma olhada, quem sabe agora eu me entenda com ele =D

    Muito obrigado pelas dicas, vou dar uma lida e ver o que faço aqui.

    Abraço.

     


    Nessa
    segunda-feira, 2 de agosto de 2010 19:52
  • Prezado(a),

    Estou migrando seu post para o fórum de Geração de Relatórios.

    Por favor, das próximas vezes que for postar alguma dúvida referente a esse assunto, poste por lá.

    Obrigado.


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    segunda-feira, 2 de agosto de 2010 19:58
    Moderador
  • Olá William, eu fiz uns testes pra ver se dava certo.. Abaixo está a página em aspx que joga os resultados para o relatório. O cabeçalho já está imprimindo certinho.

     

    Imports Model_Layer
    Imports Business_Layer
    Imports System.Data
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Imports Data_Layer
    Imports System.Data.SqlClient
    
    Partial Class PedidoVenda_Impressao
      Inherits System.Web.UI.Page
    
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        'Dim bl As New EstoqueBL
        Dim crReportDocument As New ReportDocument
        Dim sqlPar As New SqlParameter, colPar As New Collection
        Dim strSQL As New StringBuilder, sqlReader As SqlDataReader
        Dim tb = New DataTable
    
    
        Dim strPathreport As String = Server.MapPath("Relatorios\PedidoVenda.rpt")
        crReportDocument.Load(strPathreport)
    
        '3 passo: definir o DataSource do relatório
    
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = strNumPed
        sqlPar.ParameterName = "@Num_Pedido"
        colPar.Add(sqlPar)
    
        strSQL.Append("SELECT PV.Empresa, PV.Codigo, PV.Num_Pedido, PV.ID_Participante, Part.Nome as Nome_Participante, PV.Data_Emissao, Cnd_Pgto_Venda.Descricao AS Cnd_Pgto, ").AppendLine()
        strSQL.Append("PV.Per_Desconto, PV.VL_Desconto, PV.Texto, PV.Per_Desconto_Comissao, PV.VL_Desconto_Comissao, PV.Data_Registro, PV.Usuario_Registro, ").AppendLine()
        strSQL.Append("PV.Status, PV.ID_Nota_Fiscal, Vendedor.Nome AS Vendedor, Part.Fantasia, Part.Endereco, Part.Cep, Cidade_IBGE.Nome AS Cidade, Part.Num, ").AppendLine()
        strSQL.Append("Part.FoneFix, Cidade_IBGE.UF,Part.CNPJ, Part.IE, Part.CPF").AppendLine()
        strSQL.Append("FROM Pedido_Venda AS PV LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Participante AS Part ON PV.ID_Participante = Part.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cnd_Pgto_Venda ON PV.ID_Cnd_Pgto_Venda = Cnd_Pgto_Venda.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Vendedor ON PV.Vendedor = Vendedor.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cidade_IBGE ON Part.Cod_Mun = Cidade_IBGE.Codigo").AppendLine()
        strSQL.Append("WHERE PV.Num_Pedido=@Num_Pedido").AppendLine()
    
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
    
        tb.Load(sqlReader)
    
        crReportDocument.SetDataSource(tb)
    
        sqlReader.Close()
    
        '4 passo: visualizar o relatório
        Imprimir_Pedido.DisplayGroupTree = False
        Imprimir_Pedido.HasCrystalLogo = False
        Imprimir_Pedido.ReportSource = crReportDocument
      End Sub
    End Class
    
    

     

    Bom ainda tenho umas dúvidas.

    1º Esse sql que fiz traz apenas a parte do cabeçalho do pedido. Entretanto para a parte dos itens eu gostaria de fazer em outro sql separado já que possue umas particularidades. Por exemplo, neste pedido temos os itens normais e os item que consideramos como "kit". O kit tem um valor fixo ex(R$ 1,20) e na tabela do pedido tem um campo chamado kit que retorna true or false. Estes itens que são considerados kit's tem que estarem agrupados e separados dos demais. Pergunta: como posso fazer um outro sql para trazer os itens do kit ali nesta página aspx e jogar no mesmo relatório. E eu teria ainda como fazer um terceiro sql para trazer os itens normais?

    2º Nesta página apsx ao invés de eu jogar o conteúdo inteiro do retorno do select sql no relatório eu tenho como escolher o que vai em cada campo do relatório como no Crystal para VB 6?
    EX: Call SUBSTITUICAO_CARACTERES_NO_CONTROLE_TX(Me, Me.tx_IMPRESSAO, "<<NOME>>", str_NOME)

    3º Tem a possibilidade de ao invés de eu fazer um select do banco eu trazer os dados direto da tela do pedido? Se tiver como posso passar o conteúdo por parametro?

    Muito obrigada pela ajuda!

    Abraço.


    Nessa
    terça-feira, 3 de agosto de 2010 14:18
  • Olá

    Bom.. Seguinte, o crystal tem como base de dados um DataSet (que é uma coleçao de tabelas e relacionamentos). esse dataset pode ser criado e preenchido de varias formas. voce pode por exemplo criar uma tabela em tempo de execuçao (com o resultado de um calculo por exemplo) sem a necessidade de ter uma conexao com um banco de dados e no mesmo dataset outra tabela que vem de um banco. Tudo isso resulta em um dataset unico.

    O que vc tem que fazer é criar um XSD (dataset schema) que sirva de mascara para o crystal (sem dados) e depois associar um dataset populado, que o crystal se encarrega de preencher as lacunas.

    Mas atençao: 

    >>EX: Call SUBSTITUICAO_CARACTERES_NO_CONTROLE_TX(Me, Me.tx_IMPRESSAO, "<<NOME>>", str_NOME)

    Nao era assim que funcionava no VB6, isso foi um metodo criado para substituiçao em documentos formatos richtext (eu sei, porque fui eu que criei isso em milnovecentos e bolinas hehe)

    O crystal para VB6 possui um compotamento parecido com o crystal para .NEt, exceto que ele possuia um Dataset propietario.

     

    >3º Tem a possibilidade de ao invés de eu fazer um select do banco eu trazer os dados direto da tela do pedido? Se tiver como posso passar o conteúdo por parametro?

    como eu te disse: o coraçao da coisa é um dataset, e nao importa como ele é populado. Voce pode mesclar dados vindo de um banco, com dados vindos de um arquivo mais tela.. tudo resulta em um dataset.

    Exemplo de um relatorio crystal que nao usa banco:

    http://vb.net-informations.com/crystal-report/vb.net_crystal_report_without_database.htm

    e um que usa

    http://www.codeproject.com/KB/cs/CreatingCrystalReports.aspx

     

    Note que o que diferencia é a forma que o dataset é criado, pois para o crystal o que importa é:

    exemplo que usa BD:

    myDataReport myDataReport = new myDataReport();
    
    // set the data source of the report
    myDataReport.SetDataSource(dataReport);
    
    // set the report source of the created “crystalReportViewer”
    // component to the created report
    crystalReportViewer1.ReportSource = myDataReport;

    ex. que nao usa banco de dados

     Dim objRpt As New CrystalReport1
        objRpt.SetDataSource(ds.Tables(1))
        CrystalReportViewer1.ReportSource = objRpt
    note que os dois usam o metodo SetDataSource

     

    Att

     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    terça-feira, 3 de agosto de 2010 14:50
  • William, o pedido tá saindo.. Meio maluco, mas tá saindo...
    Naquela versão do Crystal que vem junto com o VS 2008 sabe como faço para que o details fique em 2 colunas? E também preciso que o pedido seja cortado na metade e comece novamente + ou - menos assim:

    ****Início do pedido
    NomedoCliente   NumdoPedido Data
    Endereco Cidade Estado
    Vendedor 

    CodItem Item1 Qnt Valor Subtotal      CodItem Item7  Qnt Valor Subtotal
    CodItem Item2 Qnt Valor Subtotal      CodItem Item8  Qnt Valor Subtotal
    CodItem Item4 Qnt Valor Subtotal      CodItem Item9  Qnt Valor Subtotal
    CodItem Item5 Qnt Valor Subtotal      CodItem Item10 Qnt Valor Subtotal
    CodItem Item6 Qnt Valor Subtotal      CodItem Item11 Qnt Valor Subtotal


    ****Quebra de página

    NomedoCliente   NumdoPedido Data
    Endereco Cidade Estado
    Vendedor 

    CodItem Item1 Qnt Valor Subtotal      CodItem Item7  Qnt Valor Subtotal
    CodItem Item2 Qnt Valor Subtotal      CodItem Item8  Qnt Valor Subtotal
    CodItem Item4 Qnt Valor Subtotal      CodItem Item9  Qnt Valor Subtotal
    CodItem Item5 Qnt Valor Subtotal      CodItem Item10 Qnt Valor Subtotal
    CodItem Item6 Qnt Valor Subtotal      CodItem Item11 Qnt Valor Subtotal

                                        Sub Total = R$ xxxx,xx         Total = R$ xxxx,xx
    ****Fim

    Tipo o cliente irá imprimir o pedido e cortará a folha no meio entende..

    Assim que a impressão do pedido ficar bom eu posto aqui..
    Valew

     

     


    Nessa
    quarta-feira, 11 de agosto de 2010 18:49
  • Genteee alguém tem alguma idéia de como posso fazer isso?

    Vlw


    Nessa
    quinta-feira, 12 de agosto de 2010 12:44
  • Ola

    Bom... o crystal nunca foi muito bom nisso, mas vamos lá

    1: configure a pagina para A5 paisagem (que é um A4 pela metade)

    2: para multiplas colunas, olhe a ultima opçao do Section Expert (clique com o botao direito sobre o relatorio ou va no menu crystalreports>Report... olhe a ultima opcao (format with multiple columns) depois que vc marca essa opçao aparece uma aba layout. ali vc define a largura da coluna.

    So uma questao, as quantidade sao fixas? digo, serao sempre 10 itens?

    E o mesmos itens devem aparecer na segunda parte?

     

    Se for isso eu vejo que a saida vai ser usar sub-report...

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    quinta-feira, 12 de agosto de 2010 13:04
  • Oi garoto..

    A quantidade não é fixa, varia de acordo com o pedido. Mas tem mais um porém nesta impressão..
    Fiz a impressão com 2 Detaisl (a e b).. entretanto somente o detaisl a é que utilizará as duas colunas, o B será com a página inteira..
    Os itens do details a representam itens de kit - que possuem um valor fixo e o Details b são os itens normais entende..?

    O que consegui fazer até agora está asism:



    E ele deverá ficar +- assim:


    Eles vão imprimir em folha A5 e cortam ela no meio.. por isso tem que ter a quebra d epágina..
    Como vou ter que utilizar colunas em apenas um dos details será melhor eu utilizar subreports?

    Obrigada pela ajuda.

    Nessa
    quinta-feira, 12 de agosto de 2010 13:42
  • "Qui salada!!!!"

     

    Eu acho que só com sub-reports mesmo. De uma olhada em um antigo relatorio de caixa do sistema da igreja.. a saida é por lá.

    Eu começo a achar que o Crystal nao é a ferramenta mais adequada nesse caso.

    Comece a verificar com o Celso sobre a possibilidade de criar diretamente em PDF.

    Veja esse projeto:

    http://www.codeproject.com/KB/aspnet/Creating_PDF_documents_in.aspx

     

    ele usa uma biblioteca gratuita chama ITextSharp. com ele vc cria um PDF direto

    Vantagens: é mais flexivel do ponto de vista de controle sobre o que será impresso. Cria um pdf que pode ser visualizado antes de imprimir. Pode ter formataçao diferente de páginas(pois cada pagina é criada individualmente). É pdf, formato que pode ser guardado e enviado por email. 

    Desvantagens: a criaçao do documento é feita via código e nao visualmente (arrastando controles p.ex.). Caso seja necessário alterar o layout, tem que compilar um novo app. 

    Talvez para resolver isso essa abordagem seja a adequada. Eu sei que o pessoal isso para a geraçao de boletos. talvez seja a saida para esse caso.

    O desenvolvimento é parecido com o de criar uma pagina HTML via código.

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    quinta-feira, 12 de agosto de 2010 14:07
  • Uhmm vou dar uma lida lá então.. Muito obrigada pelas dicas, tem me ajudado muito..

    Valeu garoto.. abraço ;)


    Nessa
    quinta-feira, 12 de agosto de 2010 14:14
  • Olhe esse site (só nao fique cega olhando muito tempo pra ele)

    http://www.balaraco.com/robyn/?p=8

     

    Apesar do layout da pagina ser meio estranho o exemplo é muito bom

     

    E existe essa posibilidade tambem

    http://www.codeproject.com/KB/vb/CompleteFormFieldsOfPDFs.aspx

     

    Envolve criar um PDF com o Adobe PDF Creator (e com os campos a preencher) e preenche-los via ITextSharp

     

    com isso vc pode criar o PDF visualmente. pode ser uma opçao interessante.

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    quinta-feira, 12 de agosto de 2010 14:19
  • E por ultimo acabei de ver isso

    http://www.pdfsharp.net/wiki/Invoice-sample.ashx

     

    ele usa um outro componente grauito chamado MigraDoc. Parece ser mais amigavel que Itextsharp

     

    So vendo e exemplo mesmo. Mas note que é um pedido, menos complexo que o seu, mas pode ser facilmente alterado

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    quinta-feira, 12 de agosto de 2010 14:40
  • Brigadãum William..

    Vou dar uma estudada nos exemplos, estão bem claros. Acho que talvez sejam uma solução pra mim ;)

    Vlw


    Nessa
    segunda-feira, 16 de agosto de 2010 12:14
  • Oi William, estou tentando concluir o relatório e acho que só vou conseguir fazer o esquema dos itens de kit em colunas através do subreport.. Mas estou tendo dificuldades em carrega-lo.
    Para carregar o subreport tenho que fazer uma nova páginas aspx para ela? Ou posso carrega-lo na mesma página que carrega o relatório principal?
    O meu código hoje está assim, está funcioanndo certinho.
    Criei ali uma nova Datatable para o kit(Dim tbKit As New DataTable), defini um novo caminho para o subreport (Dim strPathreport1 As String = Server.MapPath("Relatorios\PedidoVendaKit.rpt"). Depois carreguei os itens do kit em uma tabela respectiva (tbKit.Rows.Add(row)) e por fim eu dei o comando para carregar o subreport (crReportDocument.SetDataSource(tbKit)).
    Estou muito longe de chegar a forma correta de carregar o subreport?

    Muito Obrigada!
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        'Dim bl As New EstoqueBL
        Dim crReportDocument As New ReportDocument
        Dim sqlPar As SqlParameter, colPar As New Collection
        Dim strSQL As New StringBuilder, sqlReader As SqlDataReader
        Dim tb As New DataTable, row As System.Data.DataRow
         Dim tbKit As New DataTable
        Dim idColumn As DataColumn = New DataColumn()
        Dim mlItens As Pedido_Venda_ItemRelML, clItens As Pedido_Venda_ItensRelML
    
        Dim bl_item As New Pedido_Venda_ItemBL
        Dim NumPed As String = Page.Request.QueryString("Num_Ped")
        Dim strPathreport As String = Server.MapPath("Relatorios\PedidoVenda.rpt")
        '    Dim strPathreport1 As String = Server.MapPath("Relatorios\PedidoVendaKit.rpt")
        Dim Emp As String = Session("empresa")
        crReportDocument.Load(strPathreport)
            crReportDocument.Load(strPathreport1)
    
        '3 passo: definir o DataSource do relatório
        'Obtém dados do cabeçalho do pedido
        sqlPar = New SqlParameter
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = NumPed
        sqlPar.ParameterName = "@Num_Pedido"
        colPar.Add(sqlPar)
    
        sqlPar = New SqlParameter
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = Emp
        sqlPar.ParameterName = "@Empresa"
        colPar.Add(sqlPar)
    
        strSQL.Append("SELECT PV.Empresa, PV.Codigo, PV.Num_Pedido, PV.ID_Participante, Part.Nome as Nome_Participante, PV.Data_Emissao, Cnd_Pgto_Venda.Descricao AS Cnd_Pgto, ").AppendLine()
        strSQL.Append("PV.Per_Desconto, PV.VL_Desconto, PV.Texto, PV.Per_Desconto_Comissao, PV.VL_Desconto_Comissao, PV.Data_Registro, PV.Usuario_Registro, ").AppendLine()
        strSQL.Append("PV.Status, PV.ID_Nota_Fiscal, Vendedor.Nome AS Vendedor, Part.Fantasia, Part.Endereco, Part.Cep, Cidade_IBGE.Nome AS Cidade, Part.Num, ").AppendLine()
        strSQL.Append("Part.FoneFix, Cidade_IBGE.UF,Part.CNPJ, Part.IE, Part.CPF").AppendLine()
        strSQL.Append("FROM Pedido_Venda AS PV ").AppendLine()
        strSQL.Append("LEFT OUTER JOIN Participante AS Part ON PV.ID_Participante = Part.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cnd_Pgto_Venda ON PV.ID_Cnd_Pgto_Venda = Cnd_Pgto_Venda.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Vendedor ON PV.Vendedor = Vendedor.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cidade_IBGE ON Part.Cod_Mun = Cidade_IBGE.Codigo").AppendLine()
        strSQL.Append("WHERE PV.Num_Pedido=@Num_Pedido and PV.Empresa=@Empresa").AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
    
        tb.Load(sqlReader)
        sqlReader.Close()
    
        '----- cria Tabela itens de Kit
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "ID_Item_Kit"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Qnt_Solicita_Kit"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Preco_Venda_Kit"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Descr_Item_Kit"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "Sequencia_Kit"
        tb.Columns.Add(idColumn)
    
    
        '------------- Itens KIT
        clItens = bl_item.CarregarItensKit(Emp, NumPed)
    
        For cont As Integer = 0 To clItens.Count - 1
          mlItens = clItens(cont)
          ' mlItens2 = clItens(cont + 1)
          row = tb.NewRow()
          row("Sequencia_Kit") = mlItens.Sequencia
          row("ID_Item_Kit") = mlItens.ID_Item
          row("Preco_Venda_Kit") = mlItens.Preco_Venda
          row("empresa") = 23
          row("Qnt_Solicita_Kit") = mlItens.Qnt_Solicita
          row("Descr_Item_Kit") = mlItens.Descr_Item
    
          tbKit.Rows.Add(row)
        Next
    
        '--------
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "ID_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Qnt_Solicita"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Preco_Venda"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Descr_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "Sequencia"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "SubTotal_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Unid_Venda"
        tb.Columns.Add(idColumn)
    
    
        '---------- Item do Pedido
        clItens = bl_item.CarregarItensPedido(Emp, NumPed)
    
        For cont As Integer = 0 To clItens.Count - 1
          mlItens = clItens(cont)
          row = tb.NewRow()
          row("ID_Item") = mlItens.ID_Item
          row("Preco_Venda") = mlItens.Preco_Venda
          row("empresa") = 23
          row("Qnt_Solicita") = mlItens.Qnt_Solicita
          row("Descr_Item") = mlItens.Descr_Item
          row("Unid_Venda") = mlItens.Unid_Venda
          row("Sequencia") = mlItens.Sequencia
          row("SubTotal_Item") = mlItens.Qnt_Solicita * mlItens.Preco_Venda
          tb.Rows.Add(row)
        Next
    
        crReportDocument.SetDataSource(tb)
        crReportDocument.SetDataSource(tbKit)
    
        sqlReader.Close()
    
        '4 passo: visualizar o relatório
        Imprimir_Pedido.DisplayGroupTree = False
        Imprimir_Pedido.HasCrystalLogo = False
        Imprimir_Pedido.ReportSource = crReportDocument
      End Sub
    

     


    Nessa
    segunda-feira, 16 de agosto de 2010 12:56
  • Povo enfim cheguei a uma solução do meu problema do pedido de venda. Acabei não utilizando as duas colunas conforme eu queria, mas segue abaixo o código para o meu pedido de venda. Está imprimindo certinho. Serviu pra mim espero que sirva pra alguem.
    Abraço a todos e obrigada pela ajuda William.

    Imports Model_Layer
    Imports Business_Layer
    Imports System.Data
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Imports Data_Layer
    Imports System.Data.SqlClient
    
    Partial Class PedidoVenda_Impressao
      Inherits System.Web.UI.Page
    
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        'Dim bl As New EstoqueBL
        Dim crReportDocument As New ReportDocument
        Dim crSubReportDocument As New ReportDocument
        Dim sqlPar As SqlParameter, colPar As New Collection
        Dim strSQL As New StringBuilder, sqlReader As SqlDataReader
        Dim tb As New DataTable, row As System.Data.DataRow
        Dim idColumn As DataColumn = New DataColumn()
        Dim mlItens As Pedido_Venda_ItemRelML, clItens As Pedido_Venda_ItensRelML
        Dim bl_item As New Pedido_Venda_ItemBL
        Dim ml As Pedido_VendaRelML, bl As New Pedido_VendaBL
        Dim Func As New FuncoesCalculo
        Dim tbx As New DataTable <br/>
        Dim tbTemp As New DataTable
    
        Dim NumPed As String = Page.Request.QueryString("Num_Ped")
        Dim strPathreport As String = Server.MapPath("Relatorios\PedidoVenda.rpt") <br/>
        Dim Emp As String = Session("empresa")
        Dim PercDesconto As Double
    
    
        crReportDocument.Load(strPathreport)
    
    
        '--------Pega valor SubTotal dos Itens com o Desconto
    
        strSQL.Append("SELECT Per_Desconto from Pedido_Venda").AppendLine()
        strSQL.Append("WHERE Num_Pedido=" + NumPed.ToString).AppendLine()
        strSQL.Append(" and Empresa=" + Emp.ToString).AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
    
        If sqlReader.Read Then PercDesconto = sqlReader("Per_Desconto")
    
        'tbTemp.Load(sqlReader)
        sqlReader.Close()
    
    
        '-----------Cria Tabela para Itens do Pedido
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "Num_Pedido"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "ID_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Qnt_Solicitada"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Preco_Venda"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Descr_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Int32")
        idColumn.ColumnName = "Sequencia"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "SubTotal_Item"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Unid_Venda"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "COD_ITEM_FORNECEDOR"
        tb.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "CodBarra"
        tb.Columns.Add(idColumn)
    
        '---------- Carrega os Itens do Pedido
        clItens = bl_item.CarregarItensPedido(Emp, NumPed)
        ml = bl.VerificarTotalPedido(Emp, NumPed)
        Dim ICMSST As Double = 0
        Dim SubtotalDesconto As Double
        ' Dim SubTotDesc As Double
    
        For cont As Integer = 0 To clItens.Count - 1
          mlItens = clItens(cont)
          row = tb.NewRow()
          row("Num_Pedido") = NumPed
          row("ID_Item") = mlItens.ID_Item
          row("Preco_Venda") = mlItens.Preco_Venda.ToString("#,###,##0.00")
          row("Qnt_Solicitada") = mlItens.Qnt_Solicitada
          row("Descr_Item") = mlItens.Descr_Item
          row("Unid_Venda") = mlItens.Unid_Venda
          row("COD_ITEM_FORNECEDOR") = mlItens.COD_ITEM_FORNECEDOR
          row("CodBarra") = mlItens.Cod_Barra
          SubtotalDesconto = mlItens.Qnt_Solicitada * mlItens.Preco_Venda
          row("SubTotal_Item") = SubtotalDesconto * (1 - (PercDesconto / 100))
          ICMSST = ICMSST + Func.ICMS_ST(mlItens.Empresa, mlItens.ID_Item, row("SubTotal_Item"), ml.ID_Participante)
          tb.Rows.Add(row)
        Next
    
    
        'Criar o Cabeçalho
        '3 passo: definir o DataSource do relatório
        'Obtém dados do cabeçalho do pedido
        sqlPar = New SqlParameter
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = NumPed
        sqlPar.ParameterName = "@Num_Pedido"
        colPar.Add(sqlPar)
    
        sqlPar = New SqlParameter
        sqlPar.DbType = DbType.Int32
        sqlPar.Value = Emp
        sqlPar.ParameterName = "@Empresa"
        colPar.Add(sqlPar)
    
        strSQL = New StringBuilder
    
        strSQL.Append("SELECT PV.Empresa, PV.Codigo, PV.Num_Pedido, PV.ID_Participante, Part.Nome as Nome_Participante, PV.Data_Emissao, Cnd_Pgto_Venda.Descricao AS Cnd_Pgto, ").AppendLine()
        strSQL.Append("PV.Per_Desconto, PV.VL_Desconto, PV.Texto, PV.Per_Desconto_Comissao, PV.VL_Desconto_Comissao, PV.Data_Registro, PV.Usuario_Registro, ").AppendLine()
        strSQL.Append("PV.Status, PV.ID_Nota_Fiscal, Vendedor.Nome AS Vendedor, Part.Fantasia, Part.Endereco, Part.Cep, Cidade_IBGE.Nome AS Cidade, Part.Num, ").AppendLine()
        strSQL.Append("Part.FoneFix, Cidade_IBGE.UF,Part.CNPJ, Part.IE, Part.CPF, ").AppendLine()
        strSQL.Append("CASE Part.CRT WHEN 1 THEN 'Simples Nacional' WHEN 2 then 'Simples Nacional – Excesso de Sublimite de Receita Bruta' WHEN 3 then 'Regime Normal' END as CRT").AppendLine()
        strSQL.Append("FROM Pedido_Venda AS PV ").AppendLine()
        strSQL.Append("left outer join empresa on PV.empresa=empresa.codigo").AppendLine()
        strSQL.Append("LEFT OUTER JOIN Participante AS Part ON PV.ID_Participante = Part.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cnd_Pgto_Venda ON PV.ID_Cnd_Pgto_Venda = Cnd_Pgto_Venda.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Vendedor ON PV.Vendedor = Vendedor.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Cidade_IBGE ON Part.Cod_Mun = Cidade_IBGE.Codigo").AppendLine()
        strSQL.Append("WHERE PV.Num_Pedido=@Num_Pedido and PV.Empresa=@Empresa").AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
        tbx.Load(sqlReader)
        sqlReader.Close()
    
    
        '--------------- Calcula Valor de ICMS ST
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Vl_ICMS_ST"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Vl_Desconto"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Vl_Total_Geral"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Mensagem"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.Double")
        idColumn.ColumnName = "Perc_Desconto"
        tbx.Columns.Add(idColumn)
    
        '------------- Cacula Total Pedido
    
        row = tbx.Rows(0)
        row("Vl_ICMS_ST") = ICMSST
        row("VL_Desconto") = ml.Vl_Desconto
        row("Vl_Total_Geral") = ml.Total.ToString("#,###,##0.00") + ICMSST
        row("Perc_Desconto") = PercDesconto
    
    
    
        '-------------- Carrega Mensagem Vidros
    
        Dim cl As New Pedido_Venda_ItensML
        cl = bl_item.VerificaPedidoItemVidro(Emp, NumPed)
        If cl.Count <> 0 Then
          row("Mensagem") = "OBS: NAO TROCAMOS A LINHA DE VIDROS, PORCELANA E PINTADOS. FAVOR CONFERIR"
        End If
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Descr_Negocio"
        tbx.Columns.Add(idColumn)
    
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "Dt_Cadastro"
        tbx.Columns.Add(idColumn)
    
        idColumn = New DataColumn()
        idColumn.DataType = System.Type.GetType("System.String")
        idColumn.ColumnName = "EmpresaNome"
        tbx.Columns.Add(idColumn)
    
        '-------------- Carrega Descrição do Negócio - Participantes
    
    
        strSQL = New StringBuilder
    
        strSQL.Append(" SELECT Pedido_Venda.Num_Pedido, Empresa.Fantasia, Participante.Descr_Negocio, Participante.Dt_Cadastro, ISNULL(Cnd_Pgto_Venda.Banco,0) as Banco ").AppendLine() 'ISNULL(Cnd_Pgto_Venda.Banco,0)
        strSQL.Append("FROM Pedido_Venda LEFT OUTER JOIN").AppendLine()
        strSQL.Append(" Empresa ON Pedido_Venda.Empresa = Empresa.Codigo LEFT OUTER JOIN").AppendLine()
        strSQL.Append("Participante ON Pedido_Venda.ID_Participante = Participante.Codigo").AppendLine()
        strSQL.Append("LEFT OUTER JOIN Cnd_Pgto_Venda ON Pedido_Venda.ID_Cnd_Pgto_Venda = Cnd_Pgto_Venda.Codigo").AppendLine()
        strSQL.Append("WHERE Pedido_Venda.Num_Pedido =@Num_Pedido and pedido_venda.empresa=@Empresa").AppendLine()
        sqlReader = Conexao.OpenReaderWithParam(strSQL.ToString(), colPar)
    
        Dim banco As Boolean
        If sqlReader.Read Then banco = sqlReader("Banco")
    
        If ml.Total > 1000 Or banco = True Then
          row = tbx.Rows(0)
          row("Descr_Negocio") = sqlReader("Descr_Negocio")
          row("Dt_Cadastro") = "Data Cadastro: " + sqlReader("Dt_Cadastro")
          row("EmpresaNome") = sqlReader("Fantasia")
        End If
    
        sqlReader.Close()
    
        crReportDocument.Database.Tables(0).SetDataSource(tb)
        crReportDocument.Database.Tables(1).SetDataSource(tbx)
    
    
        '4 passo: visualizar o relatório
        Imprimir_Pedido.DisplayGroupTree = False
        Imprimir_Pedido.HasCrystalLogo = False
        Imprimir_Pedido.ReportSource = crReportDocument
    
      End Sub
    End Class
    
    



    Nessa
    segunda-feira, 4 de outubro de 2010 11:25