0

我已经尝试几乎所有我可以。我用c#在ASP.net中创建了一个Web应用程序。我从数据库表中提取数据并将其添加到数据集中。然后我将此数据集设置为报告的来源。我的代码如下。水晶报告给数据库登录失败或要求凭据

con.ConnectionString = ConfigurationManager.ConnectionStrings["familyConnectionString"].ConnectionString; 

      SqlDataAdapter sda = new SqlDataAdapter("select uid, member_name, gender, dob from family where uid='"+uid+"'", con); 
      DataSet1 myds = new DataSet1(); 
      sda.Fill(myds, "family"); 


      SqlDataAdapter sda1 = new SqlDataAdapter("select id from birth_certificates where p_id='"+uid+"'", con); 
      sda1.Fill(myds, "birth_certificates"); 

      ReportDocument rpt = new ReportDocument(); 
      rpt.Load(Server.MapPath("birth_certi_report.rpt")); 
      rpt.Refresh(); 
      rpt.SetDataSource(myds); 
      rpt.SetDatabaseLogon("","",@".\sqlexpress","project2"); 
      CrystalReportViewer1.ReportSource = rpt; 
      CrystalReportViewer1.DataBind(); 
      CrystalReportViewer1.Visible = true; 
      CrystalReportViewer1.RefreshReport(); 

我正在使用集成安全性,所以我将用户名和密码留空。请帮忙。

Asking for Credentials

请注意,上面的代码是一个DropDown_selectedIndexChanged()事件中编写。我试图将其添加到page_load,但它不起作用。

回答

1

如果你不担心验证,那么就这样做。创建一个你的水晶报表的实例并设置它的数据源。这就是你需要做的和它的工作原理。 *确保水晶报告在您的解决方案中。

 con.ConnectionString = ConfigurationManager.ConnectionStrings["familyConnectionString"].ConnectionString; 
     // the magic 
     birth_certi_report myreport = new birth_certi_report(); 
     DataSet1 myds = new DataSet1(); 
     SqlDataAdapter sda1 = new SqlDataAdapter("select id from birth_certificates where p_id='"+uid+"'", con); 
     sda1.Fill(myds, "birth_certificates"); 
     myreport.SetDataSource(myds); 
     crystalReportViewer1.ReportSource = myreport; 
+0

谢谢你,我花了一整天它,你帮了我。 –

+0

您能否友好地解释为什么它不适用于ReportDocument? –

+0

使用报告文档时,您必须在页面加载中执行一些额外的步骤以禁止登录信息。请看这里的优秀帖子http://blackmarketserver.com/blog/2010/07/19/suppress-login-提示晶体的报告和-ASP-净 –

0

birth_certi_report myreport = new birth_certi_report();

在这一行中你已经提到birth_certi_report是水晶报表。我的水晶报告名称是applicationreport,但显示错误。

昏暗myreport作为新appilcationreport

错误类型未定义