Usuário com melhor resposta
Problemas com Crystal Report - Dúvida de Iniciante

Pergunta
-
Bom dia, estou desenvolvendo meu primeiro relatório com crystal report. Quando vou gerar o relatório me retorna a seguinte menssagem, pedindo senha de acesso ao banco:
The report you requested requires further information.
DataSet1 Server name: Database name: User name: Password: Use Integrated Security
Estou usando um dataset tipado para construir o modelo do relatorio, e na minha página aspx estou usando o seguindo código:
public partial class CristalReport : System.Web.UI.Page
{
CamadaLogicaNegocios bll = new CamadaLogicaNegocios();
private void setDBLOGONforREPORT(ConnectionInfo myconnectioninfo)
{
TableLogOnInfos mytableloginfos = new TableLogOnInfos();
mytableloginfos = CrystalReportViewer1.LogOnInfo;
foreach (TableLogOnInfo myTableLogOnInfo in mytableloginfos)
{
myTableLogOnInfo.ConnectionInfo = myconnectioninfo;
}
}
protected void Page_Load(object sender, EventArgs e)
{
ConnectionInfo myConnectionInfo = new ConnectionInfo();
myConnectionInfo.ServerName = "servidor";
myConnectionInfo.DatabaseName = "meu_banco";
myConnectionInfo.UserID = "usuario";
myConnectionInfo.Password = "senha";
setDBLOGONforREPORT(myConnectionInfo);
DataSet ds = bll.ListaFuncionarios();
CrystalReport1 rp = new CrystalReport1();
rp.SetDataSource(ds);
CrystalReportViewer1.ReportSource = rp;
}
Qualquer ajuda é bem vinda, obrigado!
Respostas
-
Olá Tebaldi,
Veio ao lugar certo!
Criei um tópico fixo no fórum MSDN com algumas dicas sobre a construção de relatórios com Crystal Reports e ReportView (incluindo 2 vídeos com vários exemplos de como construir relatórios com os componentes, licença, distribuição, service packs, etc.):
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3761576&SiteID=21
[ ] 's
Laércio.
Todas as Respostas
-
Olá Tebaldi,
Veio ao lugar certo!
Criei um tópico fixo no fórum MSDN com algumas dicas sobre a construção de relatórios com Crystal Reports e ReportView (incluindo 2 vídeos com vários exemplos de como construir relatórios com os componentes, licença, distribuição, service packs, etc.):
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3761576&SiteID=21
[ ] 's
Laércio.
-
Laercio,
Parabêns pelos webcasts, vi o primeiro, gerei o relatório e estou com o mesmo problema do camarada acima, está aparecendo o pedido de usuário e senha, quando clico em imprimir.
Tem como me informar o que devo fazer, para corrigir esse problema?
Segue parte do código adaptado para montar o relatório.
{
ReportDocument report = new ReportDocument(); string strConexao = Dados.StringDeConexao; SqlConnection oConn = new SqlConnection(); StringBuilder strSQL = new StringBuilder(); DataSet oDataset = new DataSet(); try{
//2 passo: passar os dados para o relatório (datatable) //abrindo conexão com o banco de dadosoConn.ConnectionString = strConexao;
oConn.Open();
//Carregando o relatório string strPathreport = Server.MapPath("~\\rptDespesas.rpt");report.Load(strPathreport);
report.SetDataSource(grvDespesas.DataSource);
////carregando os dados //strSQL.Append(" SELECT "); //strSQL.Append(" Production.Product.ProductID, "); //strSQL.Append(" Production.Product.Name, "); //strSQL.Append(" Production.Product.Color, "); //strSQL.Append(" Production.Product.ListPrice, "); //strSQL.Append(" Production.ProductSubcategory.Name AS NameSubcategory "); //strSQL.Append(" FROM "); //strSQL.Append(" Production.Product INNER JOIN Production.ProductSubcategory "); //strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID; "); //strSQL.Append(" SELECT "); //strSQL.Append(" ProductID, "); //strSQL.Append(" StartDate, "); //strSQL.Append(" EndDate, "); //strSQL.Append(" ListPrice"); //strSQL.Append(" FROM Production.ProductListPriceHistory"); //SqlDataAdapter oDA = new SqlDataAdapter(strSQL.ToString, oConn); //oDA.Fill(oDataset); //definindo o DataSource do relatório //crReportSubDocument = crReportDocument.OpenSubreport("rptPrecoProdutoHistorico.rpt"); //crReportDocument.Database.Tables(0).SetDataSource(grv); ////dados do sub-relatório //crReportSubDocument.Database.Tables(0).SetDataSource(oDataset.Tables(1)); //visualizando o relatórioCrystalReportViewer1.DisplayGroupTree =
false;CrystalReportViewer1.HasCrystalLogo =
false;CrystalReportViewer1.ReportSource = report;
CrystalReportViewer1.DataBind();
}
catch (Exception ex){
System.Diagnostics.
Debug.WriteLine(ex.Message);}
finally{
//fechando a conexão com o banco de dadosoConn.Close();
//liberando os objetosoConn.Dispose();
oDataset.Dispose();
oConn =
null;oDataset =
null;}
}
Agradeço desde já o apoio.
-
Pessoal,
Segue a solução do problema, pode ser útil para alguém no futuro.
No meu caso, estáva sendo enviado duas tabelas para o relatório, e quando isso acontecia, o sistema pedia usuário e senha, porque ele na realidade não tinha todas as informações corretas.
Resolvi o problema, informando qual tabela deveria ir para o relatório.
report.SetDataSource(oDataset.Tables[0]);
No exemplo acima, de acordo com o video do Laercio, deveria escrever somente (oDataset), só que no meu exemplo, existiam duas tabelas no meu dataset.
Nesse caso, basta informar a tabela como foi feito no final.
Funcionou redondo.