none
Erro ao Gerar Relatório com Report Viewer RRS feed

  • Pergunta

  • Bom dia

    Seguindo o tutorial do Rafael neste link de como gerar relatório em MVC com Report Viewer.

    http://rafaelzaccanini.net/2011/04/05/criando-relatorios-report-viewer-em-aplicacoes-asp-net-mvc-parte-1-renderizacao-pelo-controller/

    Quando vou renderizar o relatório ele trás o seguinte erro

    The report definition is not valid.  Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded.

    Eu não faço a mínima idéia do que pode estar acontecendo.

    A única diferença entre o exemplo e meu projeto é que estou escrevendo em MVC3, Code First e com VS 2010. Outro porém que talvez possa estar gerando o erro é que tive que traduzir o código em VB.NET.

    Desde ja agradeço


    Paulo Marcelo Dalbosco

    terça-feira, 9 de abril de 2013 14:44

Respostas

  • tu esta conseguindo abrir normalmente o Relatório no editor do report viewer?

    experimenta atualizar o ReportViewer para versões mais recente.

    já tive alguns problemas com diferentes versões no web.config, da uma conferida la como estão suas configurações.

    terça-feira, 9 de abril de 2013 17:00

Todas as Respostas

  • Paulo,

    estou usando a seguinte rotina para gerar os relatórios em PDF com o MVC e ReportViewer é bastante parecida com a do exemplo e não estou tendo erros

    public ActionResult Comprovante2(int id)
            {
                LocalReport relatorio = new LocalReport();
    
                relatorio.ReportPath = Server.MapPath("~/Relatorios/ProntoAtendimento/ProntoAtendimentoComprovanteReport.rdlc");
    
                var parceiro = (Session["ParceiroAutenticado"] as Syns.DataBase.Entities.ProntoAtendimentos.ProntoAtendimentoParceiro);
                int parceiroId = parceiro.ProntoAtendimentoParceiroId;
    
                ProntoAtendimentoQuerys pa = new ProntoAtendimentoQuerys();
                var comprovante = pa.ProntoAtendimentoComprovanteReport(id, parceiroId);
                var procedimentos = pa.ProntoAtendimentoComprovanteProcedimentos();
    
                relatorio.DataSources.Add(new ReportDataSource("ProntoAtendimentoComprovanteDataSet", comprovante));
                relatorio.DataSources.Add(new ReportDataSource("ProntoAtendimentoComprovanteProcedimentosDataSet", procedimentos));
    
                string reportType = "PDF";
                string mimeType;
                string encoding;
                string fileNameExtension;
    
                Warning[] warnings;
                string[] streams;
                byte[] bytes;
    
                //Renderiza o relatório em bytes
                bytes = relatorio.Render(
                    reportType,
                    null,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings);
    
                string header = String.Format("attachment; filename=COMPROVANTE.{0}.{1}.{2}", ProntoAtendimentoSolicitacao.ChaveComprovante, id, fileNameExtension);
    
                Response.AddHeader("content-disposition", header);
    
                return File(bytes, mimeType);
            }

    tens como disponibilizar trechos de seu código?

    terça-feira, 9 de abril de 2013 14:51
  • Obrigado pela atenção Pablo, utilizando o seu método, ocorreu o mesmo erro, neste momento:

    Repositório

    Namespace Model
        Partial Public Class RepositorioCliente
    
            Public Shared Function SelecionaCliente(IDCliente As Integer) As List(Of ClienteRel)
                Dim db As Contexto = New Contexto
    
                Return (From p In db.Clientes Where p.IDCliente = IDCliente
                    Select New ClienteRel With {
                .NomeFantasia = p.NomeFantasia
                         }).ToList
                
            End Function

    Função no controller

    Public Function RenderizaRelatorio(id As Integer) As ActionResult
                Dim relatorio As New LocalReport()
    
                'Caminho onde o arquivo do Report Viewer está localizado
                relatorio.ReportPath = Server.MapPath("~/Relatorio/Report1.rdlc")
    
                'Define o nome do nosso DataSource e qual rotina irá preenche-lo, no caso, nosso método criado anteriormente
                relatorio.DataSources.Add(New ReportDataSource("ClienteRel", RepositorioCliente.SelecionaCliente(id)))
    
                Dim reportType As String = "PDF"
                Dim mimeType As String
                Dim encoding As String
                Dim fileNameExtension As String
    
                Dim deviceInfo As String = "<DeviceInfo>" & " <OutputFormat>PDF</OutputFormat>" & " <PageWidth>9in</PageWidth>" & " <PageHeight>11in</PageHeight>" & " <MarginTop>0.7in</MarginTop>" & " <MarginLeft>2in</MarginLeft>" & " <MarginRight>2in</MarginRight>" & " <MarginBottom>0.7in</MarginBottom>" & "</DeviceInfo>"
    
                Dim warnings As Warning()
                Dim streams As String()
                Dim bytes As Byte()
    
                'Renderiza o relatório em bytes
                bytes = relatorio.Render(reportType, deviceInfo, mimeType, encoding, fileNameExtension, streams, warnings)
              
                Return File(bytes, mimeType)
            End Function

    Obrigado


    Paulo Marcelo Dalbosco

    terça-feira, 9 de abril de 2013 16:48
  • tu esta conseguindo abrir normalmente o Relatório no editor do report viewer?

    experimenta atualizar o ReportViewer para versões mais recente.

    já tive alguns problemas com diferentes versões no web.config, da uma conferida la como estão suas configurações.

    terça-feira, 9 de abril de 2013 17:00
  • Muito obrigado Pablo, era a refeerncia do Assembly que estava com 9.0, o certo era 10.0

    Obrigado pela ajuda!


    Paulo Marcelo Dalbosco

    terça-feira, 9 de abril de 2013 17:53
  • ja tinha passado por isso.
    terça-feira, 9 de abril de 2013 18:10
  • ja tinha passado por isso.

    Bom dia Pablo tudo na paz?!

           Desculpe o incomodo, mas preciso de ajuda para desenvolver dois relatórios simples ao meu  ver.  Já vi alguns exemplos mas não estou obtendo êxito, acredito que por ser iniciante nesta ferramenta.

           Hoje trabalho com Visual Studio 2012 + asp.net mvc 4 + razor + sql server.

           a) Preciso criar um relatório que me liste, por exemplo, os dados pessoais de uma pessoa passando como parâmetro em uma tela

               onde o usuário deverá informar o  cpf da pessoa a ser pesquisada.

           b) O segundo relatório seria um recibo, que constará o valor por extenso e um parágrafo com dizeres com alinhamento justificado.

          Se o colega Paulo M Dalbosco quiser me ajudar ou outro colega qualquer, fico muito agradecido.

    Abraços

       

          

     

      

        

    quinta-feira, 11 de abril de 2013 11:02
  • Bom Dia Profissional MVC

    Cara, vc quer um relatório simples, use Rotativa. É muito mais simples que o Report Viewer e gera relatórios a pártir de HTML + CSS

    http://cleytonferrari.com/gerando-relatorios-em-pdf-com-rotativa-w7/

    Eu acabei desenvolvendo meus relatórios em Report Viewer porque aqui na empresa ja é usada esta ferramenta em Desktop, e o Analista queria usar ela tb na Web, mas eu particularmente gosto mais do HTML com CSS.

    Vc ja tentou implementar algo?
    Eu consegui utilizando estes exemplos

    Criando Relatórios Report Viewer em Aplicações ASP.NET MVC – Parte 1 (Renderização pelo Controller)
    http://rafaelzaccanini.net/2011/04/05/criando-relatorios-report-viewer-em-aplicacoes-asp-net-mvc-parte-1-renderizacao-pelo-controller/

    Criando Relatórios Report Viewer em Aplicações ASP.NET MVC – Parte 2 (Criando um Sub-Relatório)
    http://rafaelzaccanini.net/2011/05/19/criando-relatorios-report-viewer-em-aplicacoes-asp-net-mvc-parte-2-criando-um-sub-relatorio/

    Tive algumas dificuldades por causa do VS 2010, mas consegui resolver. Tenta implementar e traga a nós suas dificuldades, mas abra tópicos novos, senão o pessoal não entra para olhar!


    Paulo Marcelo Dalbosco

    • Sugerido como Resposta Professional MVC quinta-feira, 11 de abril de 2013 18:34
    quinta-feira, 11 de abril de 2013 11:22
  • Olá Paulo,

         Mais uma vez obrigado por responder a minha questão.

         Eu queria começar com relatórios simples, mas com certeza terei relatórios complexos pela frente, tipo: quebra por grupos, montagem de contratos que deverão serem atualizados automaticamente, coisa do genêro.

        Vou dar uma estudada nessa ferramenta que você citou.  Eu até tentei ver o trial de um tal de Telerik, este caíria bem pra mim, o problema é que é muitooooo caro rrsrsrs.

        Quanto aos links do rafael não deram certo os exemplos no VS 2012, mas vou tentar novamente e seguir sua sugestão de colocar um novo tópico ok?

    Fique na paz!

    Forte abraço

       

       

    quinta-feira, 11 de abril de 2013 18:34