日期:2014-05-20  浏览次数:20664 次

水晶报表动态更换数据源的问题
我们的项目是水晶报表
  以前的数据库是ACCESS 现在的是SQL SERVER 
 我们是用VISUAL STUDIO 2008 开发 ,以前的报表是10.5,帐票没有修改能直接使用 
  代码调用大概如下:
  public bool LoadReportWithoutParameter(string strPath, DataTable dtReport)
  {
  try
  {
  ReportDocument rd = new ReportDocument();
  rd.Load(strPath);
  rd.Database.Tables[0].SetDataSource(dtReport);
  crRptViewer.ReportSource = rd;  
  crRptViewer.Zoom(GloblMem.gPrvSize);
  return true;
  }
  catch (Exception)
  {
  return false;
  }
  } 
 程序一切正常,但是今天根据客户的需求更换了Windows 7 64 位版本,就出现了crdb_dao.dll 加载错误的问题,GOOGLE 一下是JET 4.0 没有64的版本,该怎么解决?
  就是在程序用代码动态切换数据库连接,好像它的连接信息在RPT文件里
  怎么用代码修改?

------解决方案--------------------
这个跟数据源没直接关系,而是你的水晶报表部署包不支持64位系统导致的。
好在VS2005/VS2008内嵌的水晶报表是支持64位系统的

建议你安装一个64位的部署包看看(先卸载掉现在的项目),
官方下载地址
下这个
CR 10.5 (VS .NET 2008) 10.5.3700.0 CRRedist2008_x64.msi (64 bit Intel)
------解决方案--------------------
探讨
解决方案:
可能RPT文件里面包含连接信息,只要把报表的数据源改成在64位下能用的就行了!如SQL SERVER