我先在水晶报表工具中把报表画好后,在.aspx的.cs文件中动态加载数据集时就报“加载数据库信息失败。详细资料: 无法加载数据库 DLL'crdb_oracle.dll' 。文件 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\SuBao3_Report {F9035CD6-B2B2-4FC5-8321-FF4FF5ADF047}.rpt 内出错:未能加载数据库信息。”。 
但你直接把CrystalReportViewer的报表源设置成之前画好的报表,就一点问题都没有可以显示。但数据好像不是动态加载的。那位高手帮帮忙撒。急急急急急急。在线等。

解决方案 »

  1.   

    用.NET对象做为水晶报表的数据源public class Cum
    {
        public Cum()
        {        
        }
        private string _CustomerID;    public string CustomerID
        {
            get { return _CustomerID; }
            set { _CustomerID = value; }
        }
        private string _CompanyName;
        public string CompanyName
        {
            get { return _CompanyName; }
            set { _CompanyName = value; }
        }
        private string _Address;
        public string Address
        {
            get { return _Address; }
            set { _Address = value; }
        }
        public static DataSet GetData()
        {
            SqlConnection conn = new SqlConnection("server=.;database=northwind;uid=sa;pwd=;");
            SqlDataAdapter sda = new SqlDataAdapter("select CustomerID,CompanyName,Address from Customers",conn);
            DataSet ds = new DataSet();
            sda.Fill(ds,"cum");
            return ds;
        }}
    //这个方法写在page_Load前面 并且方法名不要改变
    protected void page_Init(object sender, EventArgs e)
        {
            DataSet ds = Cum.GetData();//这里我是获取的一个DataSet对象        ArrayList al = new ArrayList();
            for (int i = 0; i < ds.Tables["cum"].Rows.Count; i++)
            {
                Cum cum = new Cum();//Cum是一个类,我在里面定义了属性,因为我在选择数据专家的时候选择的是.NET对象
                cum.CustomerID = ds.Tables["cum"].Rows["CustomerID"].ToString();
                cum.CompanyName = ds.Tables["cum"].Rows["CompanyName"].ToString();
                cum.Address = ds.Tables["cum"].Rows["Address"].ToString();
                al.Add(cum);
            }
            string path = Server.MapPath("CrystalReport.rpt");
            ReportDocument rd = new ReportDocument();
            rd.Load(path);
            rd.SetDataSource(al);
                    this.CrystalReportViewer1.ReportSource = rd;
        } 
      

  2.   

    你模板是怎么制作的?直接连的数据库?还是用了dataset?
      

  3.   

    无法加载数据库 DLL'crdb_oracle.dll' 你应该是直连了oracle,贴你的代码出来看看。另外一个pull模式的参考代码情参考
    http://www.cnblogs.com/babyt/archive/2008/10/09/1307346.html
      

  4.   

    我的代码是这样的?
    ReportDocument repDoc = new ReportDocument();
                    repDoc.Load(Server.MapPath("/Reports/SuBao3_Report.rpt"));
                    DataSet ds = ReportsDataProvider.Instance.getSuBao_3();
                    repDoc.SetDataSource(ds.Tables[0]);
                    repDoc.SetDatabaseLogon("admin", "admin", "192.168.1.138", "orcl");
      

  5.   

    给它绑定DataTable, 然后Datatable是从库里查出