none
Crystal reports como colocar na propriedade setdatasource mais de um dataset RRS feed

  • Pergunta

  • Olá pessoal estou desenvolvendo um projeto e nele vou imprimir um pedido em um relatorio só que nao sei como colocar mais de um dataset em um relatorio veja o codigo:

     Dim Conn As New SqlConnection(Module1.conexao)
        Dim Cmd As SqlCommand
        Dim ds As New DataSet
        Dim da As SqlDataAdapter
        Dim sql As New Stringbuilder
        Dim Report As New ImpPedido
        Dim NrMov As Integer = 45
        Try
    
          'sql.Append("Select TabProdutos.Produto, TabProdutosPedido.QtdProd, TabProdutosPedido.VlrUnit, TabProdutosPedido.SubTot ")
          'sql.Append("from TabProdutosPedido inner join TabProdutos on TabProdutos.CodProduto = TabProdutosPedido.CodProd")
          'sql.Append("where NrMov = " & NrMov)
          sql.Append("Select TabPedidos.NrPedido as 'Nr. Pedido', TabClientes.Nome, TabClientes.FoneCom ")
          sql.Append(", TabEnderecos.Endereco, TabEnderecos.Nr, TabEnderecos.Comp, TabClientes.CgcCpf,")
          sql.Append("TabEnderecos.Bairro, TabEnderecos.Cidade, TabEnderecos.UF, TabEnderecos.Cep,")
          sql.Append("TabPedidos.DtEntrega, TabPedidos.DtEmissao, TabPedidos.Contato, TabPedidos.Obs ")
          sql.Append("from TabPedidos inner join TabClientes on TabPedidos.CodCli = TabClientes.CodCli ")
          sql.Append("inner join TabEnderecos on TabPedidos.EndEntrega = TabEnderecos.CodEnderecos ")
          sql.Append("where TabPedidos.NrMov = " & NrMov)
    
          'sql.Append("TabPedidos.DtEntrega, TabPedidos.DtEmissao, TabPedidos.Contato, TabPedidos.Obs ")
          'sql.Append("from TabPedidos inner join TabClientes on TabPedidos.CodCli = TabClientes.CodCli ")
          'sql.Append("inner join TabEnderecos on TabPedidos.EndEntrega = TabEnderecos.CodEnderecos ")
          ''sql.Append("where TabPedidos.NrMov = " & NrMov)
    
          Cmd = New SqlCommand(sql.ToString, Conn)
          da = New SqlDataAdapter(Cmd)
          da.Fill(ds, "TabPedidos")
    
          Report.SetDataSource(ds)'Aqui quero inserir outras duas consultas de produtos do pedido e de formas de pagamento.
    
          CrptVPedidos.ReportSource = Report
    
        Catch ex As Exception
          MessageBox.Show(ex.Message)
        End Try
    

    sexta-feira, 25 de fevereiro de 2011 15:05

Respostas

  • Tiago muito obrigado mesmo pela ajuda consegui exibir o pedido no sub report aqui vai o código para quem tiver a mesma dúvida:

        da = New SqlDataAdapter(Cmd)
          da.Fill(ds, "TabPedidos")
          SubReport.OpenSubreport("ImpPedido.rpt").SetDataSource(ds)'Aqui coloco 
    
    dataset como datasource do subreport
          SubReport.OpenSubreport("ImpPedido.rpt - 01").SetDataSource(ds)' e 
    
    aqui pro segundo 
          CrptVPedidos.ReportSource = SubReport
    
    Obrigado novamente e até mais.

    • Marcado como Resposta Alex Vargas sexta-feira, 25 de fevereiro de 2011 20:48
    sexta-feira, 25 de fevereiro de 2011 20:48

Todas as Respostas

  • Prezado(a),

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

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

    Obrigado pelo apoio.


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sexta-feira, 25 de fevereiro de 2011 17:50
    Moderador
  • Alex. Como você quer esse relatório?
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 17:54
  • Alex. Como você quer esse relatório?
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.

    Olá Tiago cara quero que seja como se fosse um pedido nele deve haver informações do local de entrega do cliente das formas de pagamentos e dos produtos já montei o comando sql que trará as informações do banco. 

    Mas não estou conseguindo montar o relatório com os dados do pedido é a primeira vez que estou mexendo com o crystal por isso não tenho tanto conhecimento nele, se puder me ajudar por favor Tiago valeu.

    sexta-feira, 25 de fevereiro de 2011 18:04
  •    Ah ta.

       Entaum, você não tem que ter mais de um dataset. O dataset vai conter os campos do seu relatório ( os memsos do seu select principal ).

       Da uma olhada nos passos que indiquei nesse post:

    http://social.msdn.microsoft.com/Forums/pt-BR/vsreportingpt/thread/17bd714b-18b1-433d-afc1-ecd9ee3d79b8

    Qualquer dúvida posta ai.

    Atte.

     

     

     


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 18:12
  •    Ah ta.

       Entaum, você não tem que ter mais de um dataset. O dataset vai conter os campos do seu relatório ( os memsos do seu select principal ).

       Da uma olhada nos passos que indiquei nesse post:

    http://social.msdn.microsoft.com/Forums/pt-BR/vsreportingpt/thread/17bd714b-18b1-433d-afc1-ecd9ee3d79b8

    Qualquer dúvida posta ai.

    Atte.

     

     

     


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Olá tiago valeu pela ajuda cara só uma dúvida cara se no pedido tiver por exemplo 3 produtos quando realizar o select para trazer os dados o dataset vai trazer 3 linhas certos 1 com os dados do primeiro, 2 com do segundo produto, 3 com os dados do terceiro produto, mais ao mesmo tempo vai trazer informações como endereco de entrega , nome do cliente de novo como eu faço para arrumar isso no relatorio e mostrar das demais linhas so os produtos sem repetir as informações? muito obrigado.
    sexta-feira, 25 de fevereiro de 2011 18:27
  •    Você terá que agrupar pelo campo que repete.

       Qualquer dúvida posta um modelo do do seu datatable e de como você quer o relatório, para que possamos visualizar melhor.

     

    Atte.


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 18:32
  •    Você terá que agrupar pelo campo que repete.

       Qualquer dúvida posta um modelo do do seu datatable e de como você quer o relatório, para que possamos visualizar melhor.

     

    Atte.


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.

    Esse é o código no load do meu form que chama o relatório, só que na hora de mostrar o relatório um produto aparece muito longe do outro.:

      Private Sub frmImprimiPedido_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        Dim Conn As New SqlConnection(Module1.conexao)
        Dim Cmd As SqlCommand
        Dim ds As New DataSet
        Dim da As SqlDataAdapter
        Dim sql As New Stringbuilder
        Dim Report As New ImpPedido
        Dim NrMov As Integer = 45
    
        Try
        
          sql.Append("Select TabPedidos.NrPedido as 'Nr. Pedido', TabClientes.Nome, TabClientes.FoneCom ")
          sql.Append(", TabEnderecos.Endereco, TabEnderecos.Nr, TabEnderecos.Comp, TabClientes.CgcCpf, ")
          sql.Append("TabEnderecos.Bairro, TabEnderecos.Cidade, TabEnderecos.UF, TabEnderecos.Cep, ")
          sql.Append("TabPedidos.DtEntrega, TabPedidos.DtEmissao, TabPedidos.Contato, TabPedidos.Obs, ")
          sql.Append("TabFormasPgt.FormaPgt, TabPedidosFPgt.ValorPagar, TabPedidosFPgt.ValTotal, ")
          sql.Append("cast((TabPedidosFPgt.ValTotal * TabPedidosFPgt.ValorAcres) / 100 as Decimal(10,2)) as 'Valor acréscimo', ")
          sql.Append("TabPedidosFPgt.FreteTrans,TabProdutos.Produto, TabProdutosPedido.QtdProd, ")
          sql.Append("TabProdutosPedido.VlrUnit, TabProdutosPedido.SubTot ")
          sql.Append("from TabPedidos inner join TabClientes on TabPedidos.CodCli = TabClientes.CodCli ")
          sql.Append("inner join TabEnderecos on TabPedidos.EndEntrega = TabEnderecos.CodEnderecos ")
          sql.Append("inner join TabPedidosFPgt on TabPedidosFPgt.NrMov = TabPedidos.NrMov ")
          sql.Append("inner join TabProdutosPedido on TabProdutosPedido.NrMov =TabPedidos.NrMov ")
          sql.Append("inner join TabProdutos on TabProdutos.CodProduto = TabProdutosPedido.CodProd ")
          sql.Append(" inner join TabFormasPgt on TabFormasPgt.CodFormaPgt = TabPedidosFPgt.CodFormaPgt ")
          sql.Append("where TabPedidos.NrMov = " & NrMov)
    
          Cmd = New SqlCommand(sql.ToString, Conn)
          da = New SqlDataAdapter(Cmd)
          da.Fill(ds, "TabPedidos")
    
    
          Report.SetDataSource(ds)
          CrptVPedidos.ReportSource = Report
    
        Catch ex As Exception
          MessageBox.Show(ex.Message)
        End Try
    
    
    
      End Sub
    

    sexta-feira, 25 de fevereiro de 2011 18:50
  •    Você terá que agrupar pelo campo que repete.

       Qualquer dúvida posta um modelo do do seu datatable e de como você quer o relatório, para que possamos visualizar melhor.

     

    Atte.


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.

    Esse é o código no load do meu form que chama o relatório, só que na hora de mostrar o relatório um produto aparece muito longe do outro.:

     

     Private Sub frmImprimiPedido_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
      Dim Conn As New SqlConnection(Module1.conexao)
      Dim Cmd As SqlCommand
      Dim ds As New DataSet
      Dim da As SqlDataAdapter
      Dim sql As New Stringbuilder
      Dim Report As New ImpPedido
      Dim NrMov As Integer = 45
    
      Try
      
       sql.Append("Select TabPedidos.NrPedido as 'Nr. Pedido', TabClientes.Nome, TabClientes.FoneCom ")
       sql.Append(", TabEnderecos.Endereco, TabEnderecos.Nr, TabEnderecos.Comp, TabClientes.CgcCpf, ")
       sql.Append("TabEnderecos.Bairro, TabEnderecos.Cidade, TabEnderecos.UF, TabEnderecos.Cep, ")
       sql.Append("TabPedidos.DtEntrega, TabPedidos.DtEmissao, TabPedidos.Contato, TabPedidos.Obs, ")
       sql.Append("TabFormasPgt.FormaPgt, TabPedidosFPgt.ValorPagar, TabPedidosFPgt.ValTotal, ")
       sql.Append("cast((TabPedidosFPgt.ValTotal * TabPedidosFPgt.ValorAcres) / 100 as Decimal(10,2)) as 'Valor acréscimo', ")
       sql.Append("TabPedidosFPgt.FreteTrans,TabProdutos.Produto, TabProdutosPedido.QtdProd, ")
       sql.Append("TabProdutosPedido.VlrUnit, TabProdutosPedido.SubTot ")
       sql.Append("from TabPedidos inner join TabClientes on TabPedidos.CodCli = TabClientes.CodCli ")
       sql.Append("inner join TabEnderecos on TabPedidos.EndEntrega = TabEnderecos.CodEnderecos ")
       sql.Append("inner join TabPedidosFPgt on TabPedidosFPgt.NrMov = TabPedidos.NrMov ")
       sql.Append("inner join TabProdutosPedido on TabProdutosPedido.NrMov =TabPedidos.NrMov ")
       sql.Append("inner join TabProdutos on TabProdutos.CodProduto = TabProdutosPedido.CodProd ")
       sql.Append(" inner join TabFormasPgt on TabFormasPgt.CodFormaPgt = TabPedidosFPgt.CodFormaPgt ")
       sql.Append("where TabPedidos.NrMov = " & NrMov)
    
       Cmd = New SqlCommand(sql.ToString, Conn)
       da = New SqlDataAdapter(Cmd)
       da.Fill(ds, "TabPedidos")
    
    
       Report.SetDataSource(ds)
       CrptVPedidos.ReportSource = Report
    
      Catch ex As Exception
       MessageBox.Show(ex.Message)
      End Try
    
    
    
     End Sub
    

     

    Olá eu estava deixando a Section details muito grande por isso que um produto aparecia muito longe do outro valeu cara muito obrigado só uma dúvida como posso fazer o relatório aparecer em duas vias na mesma folha ou seja o pedido aparece duas vezes na mesmo relatório so que um ocupando metade da folha e outro ocupando a outra metade como posso fazer isso Tiago muito obrigado pela ajuda cara.
    sexta-feira, 25 de fevereiro de 2011 18:59
  • Você quer que um mesmo pedido apareça duas vezes? Sendo ambos na mesma folha?

     

    É isso?


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 19:04
  • Você quer que um mesmo pedido apareça duas vezes? Sendo ambos na mesma folha?

     

    É isso?


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    isso mesmo Tiago.
    sexta-feira, 25 de fevereiro de 2011 19:07
  • Uma opção seria você duplicar os registros no dataset.
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 19:38
  • Uma opção seria você duplicar os registros no dataset.
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    e como eu posso estar fazendo isso tiago?
    sexta-feira, 25 de fevereiro de 2011 19:43
  • Você pode duplicar os dados no momento do seu select no BD.
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    sexta-feira, 25 de fevereiro de 2011 20:09
  • Você pode duplicar os dados no momento do seu select no BD.
    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.

    Olá Tiago estava pesquisando aqui e achei outra solução é criar um sub report e assim exibir no mesmo relatorio dois sub report iguais encontrei nesse link

    http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=312777

    o problema é que está ocorrendo um erro quando eu chamo se puder me ajudar na utilização do subreport obrigado.

    sexta-feira, 25 de fevereiro de 2011 20:23
  • Tiago muito obrigado mesmo pela ajuda consegui exibir o pedido no sub report aqui vai o código para quem tiver a mesma dúvida:

        da = New SqlDataAdapter(Cmd)
          da.Fill(ds, "TabPedidos")
          SubReport.OpenSubreport("ImpPedido.rpt").SetDataSource(ds)'Aqui coloco 
    
    dataset como datasource do subreport
          SubReport.OpenSubreport("ImpPedido.rpt - 01").SetDataSource(ds)' e 
    
    aqui pro segundo 
          CrptVPedidos.ReportSource = SubReport
    
    Obrigado novamente e até mais.

    • Marcado como Resposta Alex Vargas sexta-feira, 25 de fevereiro de 2011 20:48
    sexta-feira, 25 de fevereiro de 2011 20:48