原来的程序在32位系统上运行一切正常,为了提高性能把服务器升级到64位后出现了问题.
代码如下 红色部分为出错的地方.
/// <summary>
/// 将数据源绑定到CR
/// </summary>
/// <param name="dt"></param>
private void BindReport(CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1,string FilePath,DataTable dt)
//dt,DataTable dt_edu,DataTable dt_wrk,DataTable dt_fam
{
try
{
CrystalDecisions.CrystalReports.Engine.ReportDocument doc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

//判断报表文件是否存在
if (!File.Exists(FilePath))
{
throw new Exception("没有这个文件");
}
                                doc.Load(FilePath); //绑定数据
doc.SetDataSource(dt); CrystalReportViewer1.ReportSource = doc;
CrystalReportViewer1.DataBind(); CrystalReportViewer1.HasRefreshButton=false;
CrystalReportViewer1.DisplayGroupTree=false;
CrystalReportViewer1.HasToggleGroupTreeButton=false;
CrystalReportViewer1.HasSearchButton = false;
CrystalReportViewer1.HasDrillUpButton = false;
CrystalReportViewer1.HasToggleGroupTreeButton = false;
}
catch(Exception ee)
{
base.ShowAlert(ee.Message);
}
}

解决方案 »

  1.   

    doc.Load()64位读取方式出错了吧,
    查一下CrystalDecisions.CrystalReports.Engine.ReportDocument 应用环境要求,有没有新的方法读取。
      

  2.   

    同意楼上的建议。
    一直在找相关的资料都没找到。
    不知道楼上是否可以提供下。
    我的开发环境是 FrameWork 1.14
    Crystal 10.
    我想是否是要打什么官方的补丁才对吧。
    谢谢。
      

  3.   

    虽然没实际遇到这种情况,但是BOE/CR到目前为止还不支持64位系统,官方对这方面尚没有补丁