none
Relatório de Vendas com Cristal Report ( Sub Relatório ) RRS feed

  • Pergunta

  • Amigos quero gerar um relatório de vendas onde Eu tenho os dados da venda e dentro da venda os itens de produtos

    Exemplo

    ----------------------------------------------------------------

    Codigo da Venda | Data da Venda

    ----------------------------------------------------------------

    Nome do Cliente | Endereço Completo

    ------------------------------------------------------------------

    Cód_001 | Produto 1 | 02 Unid | R$ 10,00 | R$ 20,00

    Cód_001 | Produto 1 | 03 Unid | R$ 10,00 | R$ 30,00

    Cód_001 | Produto 1 | 04 Unid | R$ 10,00 | R$ 40,00

    -------------------------------------------------------------------

    Total da Compra R$ ----------------------------| R$ 90,00

    Eu cheguei a tentar fazer mas não consegui veja o código, a venda vem mas o itens vendidos não me retorna nada

    CÓDIGO DO FORM QUE CHAMA O RELATÓRIO

        public partial class Form1 : Form
        {
            //INSTANCIAMENTO DO OBJETOS
            Banco banco;
            CrystalDecisions.CrystalReports.Engine.ReportDocument myReportDocument;
            CrystalDecisions.CrystalReports.Engine.ReportDocument myReportDocument2;
    
            //INICIALIZAÇÃO DO FORM1
            public Form1()
            {
                InitializeComponent();
    
                //CLASSE DE CONEXÃO COM BANCO
                banco = new Banco();
    
                //CRISTAL REPORT INSTANCIAMENTO
                myReportDocument = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
                myReportDocument2 = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
    
                //DATA TABLE SQL 1 -------- SQL DA VENDA
                DataTable sql = banco.SelectionQuery(@"SELECT ven_codigo, ven_data, ven_total, ven_forma_pagamento, pes_codigo, 
                                                        fun_codigo, ven_desconto, ven_vlrpago
                                                        FROM venda WHERE ven_codigo = 99");//CÓDIGO PARA TESTE 99
    
                
                //CHAMO O RELATORIO RPT DA VENDA
                myReportDocument.Load(@"C:\Users\Desktop\Backups Faculdade\SISPS- Engenharia 3\SISPS\Relatorio\CrystalReport2.rpt");
    
                //PASSO O SQL PARA O RELATÓRIO DE VENDA
                myReportDocument.SetDataSource(sql);
                crystalReportViewer1.ReportSource = myReportDocument;
                crystalReportViewer1.Refresh();
    
                //CHAMO O RELATORIO RPT DOS ITENS DA VENDA
                DataTable sql2 = banco.SelectionQuery(@"SELECT vpi_quantidade, vpi_valor, ven_codigo, pro_codigo
                                                                    FROM venda_produto_item WHERE ven_codigo = 99");
    
                //PASSO O SQL PARA O RELATÓRIO DOS ITENS DA VENDA
                myReportDocument2.Load(@"C:\Users\Luiz Chequini\Desktop\Backups Faculdade\SISPS- Engenharia 3\SISPS\Relatorio\cr_ItensVenda.rpt");
    
                //PASSO O SQL PARA O RELATÓRIO DOS ITENS DA VENDA
                /*
                 * 
                 * 
                 NESTA PARTE NÃO FUNCIONA O SUB-RELATÓRIO
                 *
                 * 
                 */
                myReportDocument2.SetDataSource(sql2);
                crystalReportViewer1.ReportSource = myReportDocument;
                crystalReportViewer1.Refresh();
            }

    Fico no aguardo 

    Obrigado

    sábado, 21 de junho de 2014 01:10

Respostas

  • Bom dia Cyberlacs,

    //1 passo: carregar o relatório principal
            string strPathreport = Server.MapPath("~\\CrystalReports\\rptPrecoProdutos.rpt"); 
            crReportDocument.Load(strPathreport); 
            
            //2 passo: passar os dados para o relatório (datatable) 
            //abrindo conexão com o banco de dados 
            oConn.ConnectionString = strConexao; 
            oConn.Open(); 
            
            //carregando os dados 
            strSQL.Append(" SELECT "); 
            strSQL.Append(" Production.Product.ProductID, "); 
            strSQL.Append(" Production.Product.Name, "); 
            strSQL.Append(" Production.Product.Color, "); 
            strSQL.Append(" Production.Product.ListPrice, "); 
            strSQL.Append(" Production.ProductSubcategory.Name AS NameSubcategory "); 
            strSQL.Append(" FROM "); 
            strSQL.Append(" Production.Product INNER JOIN Production.ProductSubcategory "); 
            strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID; "); 
            
            strSQL.Append(" SELECT "); 
            strSQL.Append(" ProductID, "); 
            strSQL.Append(" StartDate, "); 
            strSQL.Append(" EndDate, "); 
            strSQL.Append(" ListPrice"); 
            strSQL.Append(" FROM Production.ProductListPriceHistory"); 
            
            SqlDataAdapter oDA = new SqlDataAdapter(strSQL.ToString, oConn); 
            oDA.Fill(oDataset); 

            //definindo o DataSource do relatório principal

            crReportDocument.Database.Tables(0).SetDataSource(oDataset.Tables(0));

            
            //definindo o DataSource do sub-relatório 
            crReportSubDocument = crReportDocument.OpenSubreport("rptPrecoProdutoHistorico.rpt"); 
            crReportSubDocument.Database.Tables(0).SetDataSource(oDataset.Tables(1)); 
            
            //visualizando o relatório 
            crPrintPreview.DisplayGroupTree = false; 
            crPrintPreview.HasCrystalLogo = false; 
            crPrintPreview.ReportSource = crReportDocument; 
        } 
        
        catch (Exception ex) { 
            System.Diagnostics.Debug.WriteLine(ex.Message); 
        } 
        
        finally { 
            
            //fechando a conexão com o banco de dados 
            oConn.Close(); 
            
            //liberando os objetos 
            oConn.Dispose(); 
            oDataset.Dispose(); 
            
            oConn = null; 
            oDataset = null; 
        } 


    http://social.msdn.microsoft.com/Forums/vstudio/pt-BR/488e735f-0ecd-4ba3-ab36-ab75b1e91941/problemas-no-crystal-report-com-subrelatrios

    http://www.linhadecodigo.com.br/artigo/1131/criando-relatorio-utilizando-crystal-reports-e-csharp.aspx

    http://www.macoratti.net/13/01/c_crpt1.htm

    Espero que te ajude, no primeiro link acho que tem a resposta para sua dúvida.

    Abraço


    terça-feira, 24 de junho de 2014 13:46
    Moderador

Todas as Respostas

  • Será que alguem pode me ajudar na minha dúvida ?

    Obrigado

     
    sábado, 21 de junho de 2014 20:02
  • Bom dia Cyberlacs,

    //1 passo: carregar o relatório principal
            string strPathreport = Server.MapPath("~\\CrystalReports\\rptPrecoProdutos.rpt"); 
            crReportDocument.Load(strPathreport); 
            
            //2 passo: passar os dados para o relatório (datatable) 
            //abrindo conexão com o banco de dados 
            oConn.ConnectionString = strConexao; 
            oConn.Open(); 
            
            //carregando os dados 
            strSQL.Append(" SELECT "); 
            strSQL.Append(" Production.Product.ProductID, "); 
            strSQL.Append(" Production.Product.Name, "); 
            strSQL.Append(" Production.Product.Color, "); 
            strSQL.Append(" Production.Product.ListPrice, "); 
            strSQL.Append(" Production.ProductSubcategory.Name AS NameSubcategory "); 
            strSQL.Append(" FROM "); 
            strSQL.Append(" Production.Product INNER JOIN Production.ProductSubcategory "); 
            strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID; "); 
            
            strSQL.Append(" SELECT "); 
            strSQL.Append(" ProductID, "); 
            strSQL.Append(" StartDate, "); 
            strSQL.Append(" EndDate, "); 
            strSQL.Append(" ListPrice"); 
            strSQL.Append(" FROM Production.ProductListPriceHistory"); 
            
            SqlDataAdapter oDA = new SqlDataAdapter(strSQL.ToString, oConn); 
            oDA.Fill(oDataset); 

            //definindo o DataSource do relatório principal

            crReportDocument.Database.Tables(0).SetDataSource(oDataset.Tables(0));

            
            //definindo o DataSource do sub-relatório 
            crReportSubDocument = crReportDocument.OpenSubreport("rptPrecoProdutoHistorico.rpt"); 
            crReportSubDocument.Database.Tables(0).SetDataSource(oDataset.Tables(1)); 
            
            //visualizando o relatório 
            crPrintPreview.DisplayGroupTree = false; 
            crPrintPreview.HasCrystalLogo = false; 
            crPrintPreview.ReportSource = crReportDocument; 
        } 
        
        catch (Exception ex) { 
            System.Diagnostics.Debug.WriteLine(ex.Message); 
        } 
        
        finally { 
            
            //fechando a conexão com o banco de dados 
            oConn.Close(); 
            
            //liberando os objetos 
            oConn.Dispose(); 
            oDataset.Dispose(); 
            
            oConn = null; 
            oDataset = null; 
        } 


    http://social.msdn.microsoft.com/Forums/vstudio/pt-BR/488e735f-0ecd-4ba3-ab36-ab75b1e91941/problemas-no-crystal-report-com-subrelatrios

    http://www.linhadecodigo.com.br/artigo/1131/criando-relatorio-utilizando-crystal-reports-e-csharp.aspx

    http://www.macoratti.net/13/01/c_crpt1.htm

    Espero que te ajude, no primeiro link acho que tem a resposta para sua dúvida.

    Abraço


    terça-feira, 24 de junho de 2014 13:46
    Moderador