[VS] Atualização, Problemas e Uso do Report Viewer (.rdlc) no Visual Studio 2010 – A SAGA Parte 2..

Publicado: 03/09/2013 em ASP.NET, C#, Cotidiano, Erros, IIS, Internet, Programação, Softwares, Truques & Dicas, Tutoriais / Info, Visual Studio
Tags:

erro_vs2010

E a continuação do SÉRIO problema descrito por aqui… se desenrola abaixo…

Após “ACREDITAR”que estava com os problemas resolvidos, vieram as novidades…

O projeto compilava sem erros, mas ao executar….

Começou com o erro:

Erro do Analisador
Descrição: Erro ao analisar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro de análise e modifique o arquivo de origem apropriadamente.

reportviewer_erro08

No entanto esse ai foi simples, uma vez que foi somente corrigir alguns outros erros que apareciam na compilação ( sima gora apareciam) ….

Mas a continuação foi o erro abaixo ( DE NOVO):

Error: 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.

reportviewer_erro09

E você resolve como???

Depois de quase uma semana ( sim UMA SEMANA) , apanhando com o problema, encontrei uma sugestão do sseral, usuário e colaborador do blog do MSDN e do SQL , onde segundo ele o procedimento abaixo ajudaria:

Depois de ter criado os meus relatórios RDLC usando o Visual Studio 2008, eu encontrei o mesmo problema quando mudei-me para o Visual Studio 2010. A solução é muito simples.

1. Comente a seguinte parte no arquivo web.config, se você tiver.

<!–<buildProviders>

<add extension=”.rdlc” type=”Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”/>

</buildProviders>–>

2. Abra a página vinculada a ler ( carregar) o reportviewer RDLC (xxxx.aspx) e remova o seguinte:

OBS 1 : Não comente a linha anterior – REMOVA.

<!–<% @ Register Assembly=”Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” Namespace=”Microsoft.Reporting.WebForms” TagPrefix=”rsweb” %> –>

No lugar adicione a seguinte linha :

<!–<% @ Register Assembly=”Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” Namespace=”Microsoft.Reporting.WebForms” TagPrefix=”rsweb” %>–>

3. Não se esqueça de adicionar o objeto ScriptManager após a tag form e antes de fechar esse arquivo. ou seja:

<body>
<form id=”form1″ runat=”server”>
<asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
</asp:ScriptManager>

4. Agora, se você abrir o arquivo .RDLC no Visual Studio 2010, você será perguntado se deseja converter esse arquivo. Escolha a opção “sim”.

OBS 2 : Lembrando que no início de TODA essa bagunça, isso foi uma das coisas que já forma feitas, mas não custa rever.

Está feito.

OBS 3 : Você tem que fazer as mesmas coisas para cada um de seus reportviewers . RDLC .

Bem, como toda ídeia a essa altura era bem vnda, fiz o que foi sugerido e nesse meio tempo também inclui as seguintes linhas no meu .CS da página que executa o reportviewer:

OBS: Antes da chamada de renderização do relatório

ReportViewer1.ProcessingMode = ProcessingMode.Local;

ReportViewer1.LocalReport.Refresh();

var exportBytes = ReportViewer1.LocalReport.Render(“PDF”, null, out mimeType, out encoding, out fileNameExtension, out streamids, out warnings);

**********************************************************************************************************************************************

Mas ainda assim….

Descrição: Erro ao analisar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro de análise e modifique o arquivo de origem apropriadamente.

Mensagem de Erro do Analisador: A classe base inclui o campo ‘ReportViewer1’, mas seu tipo (Microsoft.Reporting.WebForms.ReportViewer) não é compatível com o tipo de controle (Microsoft.Reporting.WebForms.ReportViewer).

.

reportviewer_erro10

E então,fazer mais o que? ..afinal o Visual Studio iria atualizar tudo né….

bem voltamos a página .aspx que executa o reportviewer e DELETE o atual reportviewer da tela e no modo designer inclua um novo:

reportviewer_erro11

e resolvido….?  Não…..

Note que quando isso é feito , provavelmente será informado que o web.config está sendo alterado devido a VERSÃO da dll do ReportViewer ( Microsoft.ReportViewer.WebForms)

reportviewer_erro12

( após aceitar) Você pode notar na .Aspx que a versão é outra e então DEVE_SE REPETIR o procter edimento já citado e alterar para:

<!–<% @ Register Assembly=”Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” Namespace=”Microsoft.Reporting.WebForms” TagPrefix=”rsweb” %>–>

E então no web.config também atualizar…

<!–<buildProviders>
<add extension=”.rdlc” type=”Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” />
</buildProviders>–>

Mas ainda assim o erro persistia…

reportviewer_erro10

Ai você verifica TUDO de novo e percebe que a versão que está  referenciada no sue projeto é a ANTIGA…

reportviewer_erro13

Perde parte do “SACO”, e então REMOVE e ATUALIZA para a nova versão,…

reportviewer_erro14

E com fé, achando que vai…Pois mero engano…..e então ganha o novo erro:

Assembly ‘Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ uses ‘Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ which has a higher version than referenced assembly ‘Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ c:\Program Files (x86)\Microsoft Visual Studio 10.0\ReportViewer\Microsoft.ReportViewer.WebForms.dll

reportviewer_erro15

Duplo clique no erro, e o Visual Studio NÃO lhe aponta a linha de erro. (DE NOVO ..Putzz… né..)

Então, fiz uma pesquisa de TODAS as ocorrências da Version=9.0.0.0, e encontrei no web.config a informação:

reportviewer_erro16

Dai as coisas já ficarma mais simples, bastou REMOVER a referencia do Microsoft.ReportViewer.Common, Version=9.0.0.0 do web.config, e também a referencia do projeto e ADICIONAR a nova referência para  versão Microsoft.ReportViewer.Common, Version=10.0.0.0

E na continuação, executa-se tudo e …..NOVO ERRO….

Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

Detalhes da Exceção: Microsoft.Reporting.WebForms.ReportSecurityException: Report ‘AnexoII_GEDOC’ contains external images. The EnableExternalImages property has not been set for this report.

reportviewer_erro17

Pensei, isso tudo ta cada vez MELHOR….ohhhh vida….Mas…. vamos que vamos…

Bem, o blog do MSDN fala um monte de coisa:

http://bit.ly/1dMgCnj

http://bit.ly/1dMgDHK

http://bit.ly/17d6oHB

Mas a SOLUÇÃO foi a inclusão da linha abaixo no .cs, logo no INICIO do método:

reportviewer1.LocalReport.EnableExternalImages = true;

e FINALMENTE…. a tela que eu esperava ver, ( download , devido a ser gerado um PDF)

reportviewer_erro18

Logo…. então o fim.. tão esperado, meu ReportViewer gerado em PDF…

reportviewer_erro19

Depois de TUDO isso…

Advinha …NO MAIS ERROS…..

Pelo menos até Eu e o Cliente vermos que o BARCODE do reportviewer não estava correto.. ….

E isso deu motivo para muito mais..

Continua…..( resumindo , não acabou…estou escrevendo o FIM disso..)

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s