2012-10-25 36 views
0

我使用C#.NET(Web應用程序)VS 2008 SP1C#水晶報表警告您請求的報告需要進一步的信息

我想從水晶報表v.10.5.3700(框架3.5)點擊下頁,但它顯示輸入數據下一頁

您請求的報告需要進一步的信息 服務器名稱:
數據庫名稱:
用戶名:
密碼:

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.OleDb; 
using System.Diagnostics; 
using System.Data.SqlClient; 
using System.Web.Configuration; 
using System.Transactions; 
using System.Drawing; 
using System.Globalization; 
using System.Text; 
using System.Text.RegularExpressions; 
using System.IO; 
using CrystalDecisions.Web; 
using CrystalDecisions.CrystalReports; 
using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 
using CrystalDecisions.ReportSource; 

namespace testReport 
{ 
    public partial class _cldClass : System.Web.UI.Page 
    { 
     SqlConnection objConn = new SqlConnection(); 
     SqlCommand objCmd = new SqlCommand(); 
     SqlDataAdapter dtAdapter = new SqlDataAdapter(); 
     SqlConnection Conn; 

     DataSet ds = new DataSet(); 
     DataTable dt = null; 
     string strConnString = WebConfigurationManager.ConnectionStrings["connDB"].ConnectionString; 
     string strSQL = null; 


     public string userDB 
     { 
      get { return WebConfigurationManager.AppSettings["userDB"]; } 
     } 
     public string pwdDB 
     { 
      get { return WebConfigurationManager.AppSettings["pwdDB"]; } 
     } 
     public string srvDB 
     { 
      get { return WebConfigurationManager.AppSettings["srvDB"]; } 
     } 
     public string dbName 
     { 
      get { return WebConfigurationManager.AppSettings["dbName"]; } 
     } 

     //protected void Page_Load(object sender, EventArgs e) 
     //{ 
     //} 

     protected void Page_Init(object sender, EventArgs e) 
     { 
      TextBox2.Text = DateTime.Now.ToString("yyyy-MM-dd", new CultureInfo("en-US")); 
      Conn = new SqlConnection(strConnString); 
      Conn.Open(); 

      if (Conn.State == ConnectionState.Open) 
      { 
       this.Label1.Text = "Connected"; 
      } 
      else 
      { 
       this.Label1.Text = "Connect Failed"; 
      } 
     } 

     protected void Button2_Click(object sender, EventArgs e) 
     { 
      strSQL = "SELECT * FROM fTime WHERE fDate='" + TextBox2.Text + "'"; 

      objConn.ConnectionString = strConnString; 
      var _with1 = objCmd; 
      _with1.Connection = objConn; 
      _with1.CommandText = strSQL; 
      _with1.CommandType = CommandType.Text; 
      dtAdapter.SelectCommand = objCmd; 

      dtAdapter.Fill(ds, "cReport"); 
      dt = ds.Tables[0]; 

      dtAdapter = null; 
      objConn.Close(); 
      objConn = null; 

      ReportDocument rpt = new ReportDocument(); 
      rpt.Load(Server.MapPath("Report\\CrystalReport.rpt")); 
      rpt.SetDataSource(dt); 
      rpt.SetDatabaseLogon(userDB, pwdDB, srvDB, dbName); 
      CrystalReportViewer1.ReportSource = rpt; 
      CrystalReportViewer1.RefreshReport();  
     } 
    } 
} 

感謝您的時間:)

回答

0

通常你需要輸入這些信息,當你從一個數據庫,當您使用報表嚮導,並從數據庫中選擇一個表,這意味着創建的報告文檔直接。報告文檔本身包含該數據源的連接信息,但不保存登錄信息。

爲了克服這個問題,您可以首先從您喜歡在報告中使用的數據庫表創建一個類型化數據集。然後創建一個報告文檔並使用該向導將數據集(不是數據庫表直接)設置爲報告的數據源。在您的代碼中,您可以填充數據集並將其傳遞給報告。

0

我今天遇到了這個,我得到錯誤的原因是因爲我的服務器上沒有安裝正確的提供程序。

我所做的是這樣的:

CrystalReportViewer1.EnableDatabaseLogonPrompt = false; 

這給了我一個新的錯誤:登錄失敗。詳細信息:ADO錯誤代碼:0x源:ADODB.Connection說明:無法找到提供程序。它可能沒有正確安裝

之後,我檢查了報告中的OLE DB提供程序。安裝SQL Native Client工具解決了這個問題。

+0

這是什麼意思?怎麼樣? – Andrew