Array
(
)

Como configurar logon e utilizar o Crystal Reports com ASP.net e C# (Visual Studio 2010)

Faustino Júnior
   - 29 mar 2012

Como configurar logon e utilizar o Crystal Reports com ASP.net e C#
Geralmente os desenvolvedores fazem os relatórios direcionados para um banco de dados, mas ao publicar no servidor ou quando o IP do servidor é modificado percebe-se que o relatório necessita de logon para poder ser aberto, o que é bastante desagradável para o usuário, criando uma vulnerabilidade para a aplicação. Para resolver este problema podemos configurar o relatório e a conexão em tempo de execução, para isto basta utilizar os métodos de configuração do crystal reports.
Ao me deparar com estes problemas relacionados e realizar consultas na web e no msdn, utilizei o código abaixo faz a conexão de logon do relatório.
Obs.: O relatório pode ser desenvolvido apontado para qualquer servidor, mas na hora de execução as configurações serão feitas antes da abertura do mesmo.
Como utilizar :
1)
Crie um relatório no crystal reports (Add - New Item - Crystal report).
Informe o nome que no exemplo é relatorio.rpt e salve.
Configure os campos que serão exibidos no relatório e salve.
2)
Crie uma página aspx (Add - New Item - web form).
Informe o nome que no exemplo é RelRelatorio.aspx e salve.
Insira o componente CrystalReportViewer no design da página.
informe a propriedade ID, que no exemplo é csRelatorio.
-- código do reportviewer com a exibição de conexão falsa.
Obs.: não esqueça de por no início < e no final o >
#Código

CR:CrystalReportViewer ID=csRelatorio runat=server AutoDataBind=true EnableDatabaseLogonPrompt=False EnableParameterPrompt=False

3)
No código fonte C# da página RelRelatorio.aspx utilize os dois métodos informados no exemplo abaixo(ConfiguraCrystalReports e SetDBLogonForReport), depois no método page load chame o método ConfiguraCrystalReports.
Pronto o relatório já esta configurado.
#Código
//  ====  Codigo fonte da pagina Aspx que chama o relatorio RPT  ====
// configuração do Crystal reports 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;



namespace AplicativoWeb.Relatorios
{
public partial class RelRelatorio : System.Web.UI.Page
{
// Load da pagina 
protected void Page_Load(object sender, EventArgs e)
{
   ConfiguraCrystalReports();
}
// configuração do Crystal reports 
private void ConfiguraCrystalReports()
{
 ReportDocument rpt = new ReportDocument();
 string reportPath = Server.MapPath(relatorio.rpt);
 rpt.Load(reportPath);
 ConnectionInfo myConnectionInfo = new ConnectionInfo(); 
 myConnectionInfo.ServerName = servidor; // Utilize o nome do servidor ou IP
 myConnectionInfo.DatabaseName = Nome_Banco_de_Dados;
 myConnectionInfo.UserID = usuario;
 myConnectionInfo.Password = senha;
 SetDBLogonForReport(myConnectionInfo, rpt);
 csRelatorio.ReportSource = rpt;
}
// Conexao de logon do relatorio 
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument ArquivoReport)
{
Tables tables = ArquivoReport.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
  TableLogOnInfo tableLogonInfo = table.LogOnInfo;
  tableLogonInfo.ConnectionInfo = connectionInfo;
  table.ApplyLogOnInfo(tableLogonInfo);
}
}
}
}

Espero ter auxiliado aos demais usuários Asp.NET e C# na utilização de relatórios com o Crystal Reports.

Citação:
Para mais detalhes visite : http://faustino-jr.blogspot.com.br/2012/03/como-configurar-logon-e-utilizar-o.html

Mazuquieli Veras
   - 28 ago 2012

Boa tarde. Fiz uma aplicação web usando do crystal para os relatórios, consegui configurar o logon e tudo mais, mas quando chamo o relatório apresenta essa mensagem. Gostaria de saber se vc ja viu esse erro abaixo e qual a forma e resolve-lo. Já estou quase desistindo de usar o crystal para relatorios. Obrigado.

An error has occurred while attempting to load the Crystal Reports runtime. Either the Crystal Reports registry key permissions are insufficient, or the Crystal Reports runtime is not installed correctly. Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) containing the correct version of the Crystal Reports runtime (x86, x64, or Itanium) required. Please go to http://www.businessobjects.com/support for more information.

Faustino Júnior
   - 28 ago 2012

Onde esta o servidor de aplicação?
É na sua máquina ou o erro esta dando quando você publicou os arquivos.

Mazuquieli Veras
   - 28 ago 2012

O erro ocorre quando publiquei, no meu servidor funciona perfeitamente.

Faustino Júnior
   - 28 ago 2012

Um dos grande problemas de se utilizar o Crystal reports é na hora de publicar o arquivo.
O seu servidor deverá estar instalado com algumas atualizações.
Este aplicativo deverá ser instalado no servidor "ReportViewer.exe"
------
Procure no seu pc os arquivos c:\Windows\Assembly e veja as bibliotecas que começam com CrystalDecision.algumacoisa
Estas são as bibliotecas que vc precisa,
Entre no seu servidor e verifique quais estão instaladas no servidor
Faça a comparação e copie as dlls que faltam.
------
Depois coloque as dlls na pasta bin do seu projeto
Microsoft.ReportViewer.Common
Microsoft.ReportViewer.ProcessingObjectModel
Microsoft.ReportViewer.WebForms

Mazuquieli Veras
   - 28 ago 2012

Meu site em no provedor Hostdime, tenho que instalar o aplicativo "ReportViewer.exe" la?
--------------------------------
Olhei na minha pasta c:\Windows\Assembly vi que tem alguns arquivos q nao tem no meu bin no hostdime, tenho que localizar as dlls desses arquivos e colocar la?
--------------------------------
Ai tenho que colocar essas dells pasta bin do seu projeto do meu projeto na minha maquina ou na pasta bin no hostdime? E não localizei elas em minha maquina.
Microsoft.ReportViewer.Common
Microsoft.ReportViewer.ProcessingObjectModel
Microsoft.ReportViewer.WebForms


Minhas duvidas devem ser simples, mas como nunca usei o Crystal Report estou tendo essas dificuldades.

Hugo
|
MVP
    01 set 2012

Boa tarde colegas,

Sou desenvolvedor iniciante em .NET, e trabalho com as seguintes ferramentas:

Visual Studio 2010
Entity Framework 4.3.1
JQuery
SQL Server 2008
Razor
Asp.net
Linq
C#

Necessito aprender os seguintes itens:
criar relatórios em Crystal Reports e vincula-los na minha aplicação .NET
aprender a publicar minha aplicação em um host externo e também em uma intranet

Se algum colega tiver interesse, por favor, disponibilize um e-mail de contato para um possível orçamento.

Abraços


Faustino Júnior
   - 03 set 2012

Acredito que estas informações abaixo podem ajudá-lo, já que não utilizo a aplicação publicada em sites como locaweb.

1. É necessário que você adicione a referência das seguintes dlls no seu projeto antes de publicar:
Microsoft.ReportViewer.WebForms.dll e
Microsoft.ReportViewer.Common.dll

Estas dlls podem ser encontradas na pasta de istalação do VS.NET, exemplo: C:\Program Files\Microsoft Visual Studio 8\ReportViewer

2. Após ter realizado a adição das referências, publique seu site para a Locaweb.

3. Copie para a pasta BIN de seu site na Locaweb os seguintes arquivos da sua máquina:
Microsoft.ReportViewer.WebForms.dll ,
Microsoft.ReportViewer.Common.dll e
Microsoft.ReportViewer.ProcessingObjectModel.dll

OBS: a DLL Microsoft.ReportViewer.ProcessingObjectModel.dll somente será encrontrada na sua máquina pelo prompt (CMD), pois o Windows oculta armazena esse arquivo em um conceito diferente.

4. abra o cmd vá no diretório: C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel
dentro desse diretório existe um diretório chamando: 8.0.0.0__b03f5f7f11d50a3a , após o a seqência 8.0.0.0__ os caracteres dessa pasta podem ser diferentes do que digitei, pois depende da versão instalada em sua máquina, em fim, entre no diretório e finalmente encontrará a dll.

5. Copie a dll Microsoft.ReportViewer.ProcessingObjectModel.dll usando o comando copy para uma pasta qualquer, somente assim você verá a dll pelo Windows Explorer. Agora é só copiar a dll para o diretório BIN do seu site e rodar os relatórios.