none
Dificuldade em gerar relatorio (reportviewer) em pagina ASPX RRS feed

  • Pergunta

  • Ola pessoal,

    Estou tentando gerar um relatorio (reportviewer) em uma pagina ASPX e associei-o com um DataSet (tipado) , quando mando rodar ele funciona beleza.

    Só que  eu preciso criar um outro DataSet (Não tipado) e associa-lo como fonte do relatorio, pesquisando no forum eu descobri como fazer isto, só que quando abro a pagina ela só fica carregando ( mostrando a ampulheta) e nunca termina, não da erro só tambem não gera nada....

    Estou VS2010 e base Access..

    Alguem tem alguma ideia do que possa ser o problema..?

    segue o codigo fonte..

    trSQL = "SELECT   NomeDoCLiente, Endereço, CodigoDoCliente from Clientes"
    da = New OleDbDataAdapter(strSQL, sqlconexao)
    da.Fill(ds, "Clientes")
    dt = ds.Tables("Clientes")

    Dim strNome As String = ReportViewer1.LocalReport.DataSources(0).Name 'Obtém o nome do dataset
    Me.ReportViewer1.LocalReport.DataSources(0) = New ReportDataSource(strNome, dt) 'Carrega o dataset com o datatable passado como parametro.

    Obs : Já fiz exatamente desta forma em programas Windows Forms e funcionou, mas no ASP não vai...

    Grato,

    Eduardo

    terça-feira, 13 de novembro de 2012 02:10

Respostas

  • Luiz, achei o artigo que você citou no link abaixo:

    http://ecode10.com/artigo/1129/

    Achei a solução um pouco complicada, contudo lendo o artigo eu achei o problema do meu programa....

    Quando o autor do artigo esvreveu : "Depois de verficar se a pagina não é IsPostBack....." me caiu a ficha.... era isto que faltava no meu programa, ou seja, condicionar os comandos do Page_load ao Is Not Page.IsPostBack

    A SUB ficou assim :

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
            If Not Page.IsPostBack Then
                strSQL = "SELECT Clientes.NomeDoCliente, Clientes.Endereço, Clientes.CodigoDoCliente, Pedido.Pedido, Pedido.VlOriginal   FROM (Clientes  INNER JOIN Pedido ON Clientes.CodigoDoCliente = Pedido.CodigoDoCliente)"
                da = New OleDbDataAdapter(strSQL, sqlconexao)
                da.Fill(ds, "Clientes")
                dt = ds.Tables("Clientes")

                Dim strNome As String = ReportViewer1.LocalReport.DataSources(0).Name 'Obtém o nome do dataset
                Me.ReportViewer1.LocalReport.DataSources(0) = New ReportDataSource(strNome, dt) 'Carrega o dataset 

            End If
    End Sub

    Funcionou perfeitamente, eu até fiz um JOIN no SQL para pegar dados de duas tabelas.....

    Fica aqui a dica para quem tiver dificuldade com esse tipo de situação.

    Abraços,

    Eduardo



    • Editado E.Gameiro quarta-feira, 14 de novembro de 2012 01:02
    • Marcado como Resposta E.Gameiro quarta-feira, 14 de novembro de 2012 01:03
    quarta-feira, 14 de novembro de 2012 01:01

Todas as Respostas

  • Eduardo olha esse tutorial ai

    http://ecode10.com/artigo/1129/ReportViewer+sem+DataSet+Tipado+e+gerando+PDF.aspx

    fiz exemplos dele usando mais de um dataset, incluindo um com totais e funciona perfeito, dá uma olhada.


    Junior

    terça-feira, 13 de novembro de 2012 19:51
  • Luiz, esse link da erro... NOT FOUND.....

    você teria como checar se há algum erro nele...?

    Fico no aguardo...

    grato...

    terça-feira, 13 de novembro de 2012 23:39
  • Luiz, achei o artigo que você citou no link abaixo:

    http://ecode10.com/artigo/1129/

    Achei a solução um pouco complicada, contudo lendo o artigo eu achei o problema do meu programa....

    Quando o autor do artigo esvreveu : "Depois de verficar se a pagina não é IsPostBack....." me caiu a ficha.... era isto que faltava no meu programa, ou seja, condicionar os comandos do Page_load ao Is Not Page.IsPostBack

    A SUB ficou assim :

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
            If Not Page.IsPostBack Then
                strSQL = "SELECT Clientes.NomeDoCliente, Clientes.Endereço, Clientes.CodigoDoCliente, Pedido.Pedido, Pedido.VlOriginal   FROM (Clientes  INNER JOIN Pedido ON Clientes.CodigoDoCliente = Pedido.CodigoDoCliente)"
                da = New OleDbDataAdapter(strSQL, sqlconexao)
                da.Fill(ds, "Clientes")
                dt = ds.Tables("Clientes")

                Dim strNome As String = ReportViewer1.LocalReport.DataSources(0).Name 'Obtém o nome do dataset
                Me.ReportViewer1.LocalReport.DataSources(0) = New ReportDataSource(strNome, dt) 'Carrega o dataset 

            End If
    End Sub

    Funcionou perfeitamente, eu até fiz um JOIN no SQL para pegar dados de duas tabelas.....

    Fica aqui a dica para quem tiver dificuldade com esse tipo de situação.

    Abraços,

    Eduardo



    • Editado E.Gameiro quarta-feira, 14 de novembro de 2012 01:02
    • Marcado como Resposta E.Gameiro quarta-feira, 14 de novembro de 2012 01:03
    quarta-feira, 14 de novembro de 2012 01:01