2010-01-21 35 views
0

我被要求转换包含从VB6独立于.NET基于C#的Web应用程序的一些水晶报表的遗留应用程序问题从VB6独立的应用程序转换水晶报表的.NET Web应用程序

这是我的第一个.NET C#网络应用程序,所以我正在学习,因为我走

我试图得到水晶报告.net(包括版本没有授权)失败。

我惊喜地发现,我可以简单地将.RPT文件复制到Visual Studio 2008和他们的工作......好吧,几乎

打开.rpt文件工作在IDE很好,我可以查看报告和其正确填充

另一方面,如果我尝试从crystalreportsource(aspx页面)中的智能标记编辑报告失败,并显示“报告源未配置”,即使它是。

在运行时出现错误“报告未能加载”

我还需要连接到使用在web.config中所提供的连接字符串连接字符串可以在运行时改变的一个SQL数据库(以一个训练分贝)

我搜索并找到了几种技术来更改连接字符串,但任何尝试在运行时更改连接属性失败。

所以我想知道是否有任何我需要知道的疑难杂症?

我注定要失败吗?

如果需要,是否有一种简单的方法可以转换为Microsofts reportviewer?

DC(又名茫然和困惑)

解决:失败,“未配置报告源”

的问题看来,参考没有装载或放入不正确我重新添加的晶体报告一旦重新启动,立即崩溃VS2008的参考我再次加载他们,错误消失。

DC

回答

0

好的问题解决了。不理想但以任何方式解决。

我已经把这个放在这里,以便其他人可以从我的挣扎中学习。

Crystal报告(vs2008附带的v9)不会使用SQL(或任何其他连接),它必须使用数据集或ODBC连接。由于我对数据集了解不多,所以我没有采取这种方式。

Crystal报表似乎被设计为使用设计器,您不能动态创建它。这反映在改变连接的难度上。一切都失败了,直到我发现这个How do I change a Crystal Report's ODBC database connection at runtime?帕特姆的解决方案是提供线索的那个。

这是在Page_Load方法

 SqlConnectionStringBuilder SConn = new SqlConnectionStringBuilder(_connectionString); 

     ReportDocument cryRpt = new ReportDocument(); 
     TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
     TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
     ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     crConnectionInfo.ServerName = dsn;// SConn.DataSource; 
     crConnectionInfo.DatabaseName = SConn.InitialCatalog; 
     crConnectionInfo.UserID = SConn.UserID; 
     crConnectionInfo.Password = SConn.Password; 

     String rpt = Server.MapPath(@"~/reports2/Report1.rpt"); 
     cryRpt.Load(rpt); 
     foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in cryRpt.Database.Tables) 
     { 
      crtableLogoninfo = CrTable.LogOnInfo; 
      crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
      CrTable.ApplyLogOnInfo(crtableLogoninfo); 
     } 

     CrystalReportViewer1.ReportSource = cryRpt; 
     CrystalReportViewer1.RefreshReport(); 

dsn实现我的解决方案C#是ODBC连接不是你想连接到例如服务器的名称。 NOT“localhost/sqlexpress”

我尝试了许多不同的方式来动态设置与数据库的连接,只有上面的工作。我的猜测是其他人需要一个完全许可的Crystal Reports版本,尽管没有一个说明。

DC