Usuário com melhor resposta
problema serio crystal reports...

Pergunta
-
olá, fiz meus relatorios td beleza no VS05 C# COM ASP.NET.
porem ao rodar no servidor o seguinte erro aparece:
Logon failed. Details: 08004:unavailable database Error in File C:\WINDOWS\TEMP\Relatorio {7F2219EA-841C-4BF7-AED7-CA2D3F60A40F}.rpt: Unable to connect: incorrect log on parameters.
eu setei a propriedade ENabledatabaselogonPrompt do crystalreportviewer para False, para aquela tela de login não aparecesse mais...
eu já fiz um instalador que gera os Merge Modules, mas mesmo asim o erro é o mesmo
eu já setei o Logon e o caminho:
CrystalReportViewer2.ReportSource = "C:\\Relatorio.rpt";
CrystalReportViewer2.LogOnInfo[0].ConnectionInfo.UserID = "SYSDBA";
CrystalReportViewer2.LogOnInfo[0].ConnectionInfo.Password = "masterkey";
CrystalReportViewer2.LogOnInfo[0].ConnectionInfo.ServerName = "192.168.0.103";
CrystalReportViewer2.LogOnInfo[0].ConnectionInfo.DatabaseName = "BASE";
CrystalReportViewer2.DataBind();
mas sem sucesso.
não sei mais o que fazer... se alguem já passou por isso por favor de uma ajuda
Respostas
-
Dataset1 é um dataset tipado que está dentro da sua pasta App_Code, certo?
Se sim, então está correto, está errado apenas a chamada, veja:
O seu Dataset1 que está dentro do App_Code, é como se fosse uma classe do seu projeto, e vc nao pode referenciar ele diretamente assim Classe.metodo, vc precisa criar uma instancia, e isso ocorre tb para o dataset tipado. Voce está passando ele direto, é preciso criar uma instancia dele e usar a instancia, assim: Dataset1 ds = new Dataset1(); aí o seu dataset tipado vai ser o objeto ds.
Aí, nessa linha:
rpt.SetDataSource("/App_Code/DataSet1"); //<<<<<<<<<<<<<<<<
ficaria assim:
rpt.SetDataSource(ds); //<<<<<<<<<<<<<<<<
Não esquece de popular o seu ds com os dados que vc deseja exibir no relatório, pois quando vc cria a instancia, o objeto ainda estará vazio.
Obs: na pré visualização do relatório nao vai aparecer os dados do banco mesmo nao, pois o report nao está linkado no banco, e sim no dataset, como no momento da pre visualização o dataset está vazio, entao ele mostra uns dados imaginários só pra poder ter uma base.
Todas as Respostas
-
Olá Giovanni!
Tente usar datasets tipados em seus relatórios, assim vc não terá esses problemas.
Com datasets tipados, vc define um dataset em design-time, e seta esse dataset como fonte de dados do seu relatório no Crystal, e monta a estrutura do seu report com base nesse dataset, assim como desejar. Depois, em run-time vc popula esse dataset com dados, e simplesmente chama o report para exibir as informações.
Eis aqui alguns exemplos: http://weblogs.pontonetpt.com/danielbraga/category/1331.aspx
-
-
cara to fazendo meu site em c#
e estou vendo esse artigo porem ta em vb.
e tem u codigo que aqui nao da pra fazer
em vb é esse:
Dim rptPc As New rptProdutosCategorias
rptProdutosCategorias é o arquivo .rpt adicionado ao projeto.
mas em c# o codebehind nao reconhece este arquivo, apenas reconhece o .xsd
alguma ideia?
vlw -
-
Tente referenciar informando o namespace, por exemplo:
No meu projeto de interface (UI) eu coloquei os relatórios todos dentro de uma pasta (Reports), então na hora de referenciar, eu faço assim:
UI.Reports.
rptInventoryStatus rpt = new UI.Reports.rptInventoryStatus();Veja se funciona.
-
-
UI(UserInterface) é simplesmente o nome do Projeto no caso, e Reports é o nome de uma pasta dentro do projeto, simplesmente para organizar todos os relatorios dentro dela.
Por exemplo... se o nome do seu projeto for Project1 entao tente referenciar assim:
Project1.
nomeDoSeuReport rpt = new Project1.nomeDoSeuReport();Não sei se me fiz entender...
-
-
Desculpa Giovanni, mancada minha cara... agora entendi seu problema.
Depois de ter populado o dataset com os dados que vc deseja exibir no relatório, exiba-o assim:
// Cria um objeto ReportDocument
ReportDocument rpt = new ReportDocument();// Mapeia o caminho do arquivo.rpt no Server
String reportPath = Server.MapPath("SeuRelatorio.rpt");// Vincula o arquivo.rpt ao objeto ReportDocument
rpt.Load(reportPath);
rpt.SetDataSource(dsSeuDatasetTipado);
// Exibe o relatório
CRViewer.ReportSource = rpt;
-
-
Voce deve informar um dataset tipado criado atravez do Add >> New Item, pq se vc criar via código (dim ds as new dataset) ele não será Tipado, e vc nao vai conseguir adicionar ele como fonte de dados no Crystal para poder criar seu relatório.
Quando vc vai criar um relatório no Crysta vc precisa informar qual será a fonte de dados, que pode ser SQL Server, Access, Oracle, XML, Excel, Arquivos textos, e OS DATASETS TIPADOS DA SUA APLICAÇÃO. Nesse momento ele abre uma lista com todos os seus datasets (tipados) para vc escolher qual deles (ou quais deles) será a fonte de dados do relatório.
Tá ficando claro?
-
ta ficando claro sim
antes na criação do rpt não apareciam meus datasets. agora aparecem.
porem na pré visualização do relatorio não aparecem os dados exatos do banco.
aparecem dias da semana, ou nomes de flores em ingles, e na hora de rodar o site nao aparece nada no relatorio
meu codigo é este:
Code Blockprotected void Page_Load(object sender, EventArgs e)
{
// Cria um objeto ReportDocument
ReportDocument rpt = new ReportDocument();
// Mapeia o caminho do arquivo.rpt no Server
String reportPath = Server.MapPath("Relat.rpt");
// Vincula o arquivo.rpt ao objeto ReportDocument
rpt.Load(reportPath);
rpt.SetDataSource("DataSet1");
// Exibe o relatório
CrystalReportViewer1.ReportSource = rpt;
}
meu relatorio com o Dataset é p Relat.rpt.
e o dataset tipado é o DataSet1. será que estou informando alguma coisa de forma incorreta?
valeu! -
agora mudei o caminho parece q isto estava errado e ta dando esse erro:
The report you requested requires further information.
protected void Page_Load(object sender, EventArgs e)
{
// Cria um objeto ReportDocument
ReportDocument rpt = new ReportDocument();
// Mapeia o caminho do arquivo.rpt no Server
String reportPath = Server.MapPath("Relat.rpt");
// Vincula o arquivo.rpt ao objeto ReportDocument
rpt.Load(reportPath);
rpt.SetDataSource("/App_Code/DataSet1"); //<<<<<<<<<<<<<<<<
// Exibe o relatório
CrystalReportViewer1.ReportSource = rpt;
} -
Dataset1 é um dataset tipado que está dentro da sua pasta App_Code, certo?
Se sim, então está correto, está errado apenas a chamada, veja:
O seu Dataset1 que está dentro do App_Code, é como se fosse uma classe do seu projeto, e vc nao pode referenciar ele diretamente assim Classe.metodo, vc precisa criar uma instancia, e isso ocorre tb para o dataset tipado. Voce está passando ele direto, é preciso criar uma instancia dele e usar a instancia, assim: Dataset1 ds = new Dataset1(); aí o seu dataset tipado vai ser o objeto ds.
Aí, nessa linha:
rpt.SetDataSource("/App_Code/DataSet1"); //<<<<<<<<<<<<<<<<
ficaria assim:
rpt.SetDataSource(ds); //<<<<<<<<<<<<<<<<
Não esquece de popular o seu ds com os dados que vc deseja exibir no relatório, pois quando vc cria a instancia, o objeto ainda estará vazio.
Obs: na pré visualização do relatório nao vai aparecer os dados do banco mesmo nao, pois o report nao está linkado no banco, e sim no dataset, como no momento da pre visualização o dataset está vazio, entao ele mostra uns dados imaginários só pra poder ter uma base.
-
bah caara deu certissimo olhe ai:
FbConnection conn = new FbConnection(@"Server=192.168.0.1;User=SYSDBA;Password=masterkey;Database=C:\\BASE.GDB");
protected void Page_Load(object sender, EventArgs e)
{
// Cria um objeto ReportDocument
DataSet1 ds = new DataSet1();
FbDataAdapter da = new FbDataAdapter("SELECT * FROM CIDADE", conn);
da.Fill(ds, "CIDADE");
ReportDocument rpt = new ReportDocument();
// Mapeia o caminho do arquivo.rpt no Server
String reportPath = Server.MapPath("CrystalReport.rpt");
// Vincula o arquivo.rpt ao objeto ReportDocument
rpt.Load(reportPath);
rpt.SetDataSource(ds);
// Exibe o relatório
CrystalReportViewer1.ReportSource = rpt;
}
estou pegando os dados da tabela Cidade, mas caso eu tenha que pegar de mais de uma tabela. ali o da.Fill(ds, "CIDADE"), vai mudar no que????
outra coisa. no servidor os icones da barra de ferramentas do relatorio nao aparecem, o que posso fazer?
Muito Obrigado até aqui por essa AULA de crystal reports e dataset Daniel -
Bom, para o primeiro caso, se tiver mais uma tabela, crie mais um datatable dentro do seu dataset, e faça esse processo novamente:
FbDataAdapter da = new FbDataAdapter("SELECT * FROM NOVA_TABELA_NO_BANCO", conn);
da.Fill(ds, "NOVO_DATATABLE");Em relação as imagens, elas ficam na pasta CrystalReportWebFormViewer no seu IIS, verifique se ele possui a pasta.
-
-
Não tenho certeza, mas acho que a esturtura de pastas deve ser essa:
C:\Inetpub\wwwroot\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer\images\toolbar
e
C:\Inetpub\wwwroot\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer\images\tree
-
-
Quando abrir o relatório, e as imágens estiverem quebradas, clique com o botão direiro em cima do icone de uma delas e clique em Propriedades, vai aparecer algumas informações, aí vc poderá ver na opção "Endereço" de onde ele está tentando abrir essa imagem.
-
sim já achei o diretório certo
olha era pra dar certo ;/, mas sem sucesso.
talvez pq na maquina servidor a pasta windows, arquivos de programas, wwwroot, etc estejam instalados no D: ao inves
de estar no c: .
vou ver o que faço
mas deve ser isso
obrigadao pela ajuda Daniel
vc me ajudou de mais
abração e sucesso!! -
-
-
-
Daniel boa tarde,
Estou com um probleminha serio com CrystalReports, estou desenvolvendo um sistema em c# onde criei alguns relatórios no crystal XI. Estanciei um carinha que é de uma procedure que chama @codExame e atraves de um textbox passou o parametro mas não consigo fazer com que ao digitar esse parametro o sistema faça uma consulta no banco e me retorne o Certificado referente ao parametro.
vou postar o seguinte codigo que estou usando, mas esta dando um erro. Gostaria de saber se é possivel me ajudar nesse caso, e se você conhece uma forma mais facil ou até mesmo que funcione para solucionar esse problema.
Fico no aguardo de um contato seu.
segue codigo:
CrystalDecisions
.CrystalReports.Engine.ReportDocument report = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); report.Load(@"C:\Documents and Settings\william\Desktop\Relatorios Crystal\certif_Portugues.rpt"); //aqui é o caminho onde está o meu relatório já criado CrystalDecisions.Shared.ParameterField param; //crio variavel parametro param = report.ParameterFields["@codExame"]; // aqui no caso é o mesmo nome do parametro que vc criou no wisard do crystal param.CurrentValues.AddValue(textBox1.Text);//passando valor do text box para variavel param crystalReportViewer1.ReportSource = report; //indicando que o reportdocument criado e parametrizado é o meu sourceatenciosamente,
William