如何以PULL方式装载另一服务器上的水晶报表

问题描述:

近日涉及水晶报表开发,原系统已存在一些水晶报表,放置在Server A中,这些水晶报表要从Server B中提取数据,现新建一网站,位于服务器Server C上,需要把Server  A中的水晶报表在网站Web页面中装载显示出来。结构如图:

 

 

开发环境: VS2008, Crystal Report 2008, Windows2003 域环境

解决步骤:

1、 分析Server A中水晶报表数据提取需要的ODBC设置,因为Server A中的水晶报表是从Server B中提取数据,所以在Server A中需要建立ODBC数据源指向Server B中的数据库,此工作已由当初创建水晶报表时完成,此处 我们需要分析它的数据源,并做为我们在Server C中创建ODBC数据源时的参考(二者设置要求一致) 

      先在Server A 水晶报表中查看它所使用的数据源

            

再到Server A  ODBC设置中分析此数据源设置          

                   

2、 Server C上的网站IIS中建立虚拟目录,此目录直接 引用 Server A中水晶报表的文件夹位置。         

           

3、 设置Server CODBC数据源,此处的设置应与Server A中水晶报表所用到的ODBC对应设置一样。即指向Server C中的数据库数据源。

     

           

4、 ASP.NET代码中实现并发布、运行。代码如下:

 

 

 protected void btnSD1CTX_Click(object sender, EventArgs e)
        {
            
            
string repFilePathRemoteParamsCtx2 = System.Web.HttpContext.Current.Server.MapPath("../Crystal/水晶报表Test.rpt");
            DateTime dtime 
= new DateTime();//此处dtime是水晶报表Test所需要传入的参数
            try
            {
                dtime 
= Convert.ToDateTime(txtBxParam.Text.ToString().Trim());
            }
            
catch (Exception ex)
            {
                
string ke = ex.ToString();
            }

            
this.CrystalReportSource1.ReportDocument.Load(repFilePathRemoteParamsCtx2);
            
//注意:此处NexusSQL即为我们在上面的ODBC设置中设置的ODBC连接名,
            this.CrystalReportSource1.ReportDocument.SetDatabaseLogon("UserID""PassWord""NexusSQL""数据库名");
            
this.CrystalReportSource1.ReportDocument.SetParameterValue("DateRaised", dtime);  //传入参数

            
this.CrystalReportSource1.DataBind();
            
this.CrystalReportViewer1.ReportSource = this.CrystalReportSource1;

            CrystalReportViewer1.AutoDataBind 
= false;
            
this.CrystalReportViewer1.DataBind();
            CrystalReportViewer1.BestFitPage 
= true;
        }

 

 

 

 

 

posted @ 2010-05-28 11:38  wsdj  阅读(674)  评论(1编辑  收藏  举报