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

錯誤類型未定義