带命令的Crystal Report

时间:2011-02-25 00:03:32

标签: .net database crystal-reports runtime

Crystal报表(.rpt)文件可以通过标准报表创建向导创建,此时用户有两个选项。可以从数据库添加命令或选择表。 您还可以从visual studio 2010创建水晶报告文件(.rpt) - >添加新的itme - >水晶报告。 现在我正在更改运行时rpt文件的数据库名称

CrystalReportViewer crystalreportviewer = new CrystalReportViewer(); 
ReportDocument rd = new ReportDocument();
rd.Load(filepath);//filepath for rpt file c://command.rpt 
crystalreportviewer.ReportSource = rd; // set the source as reportdocument

 foreach (CrystalDecisions.CrystalReports.Engine.Table tb in rd.Database.Tables)
        {
            TableLogOnInfo tbloginfo = new TableLogOnInfo();
            CrystalDecisions.Shared.ConnectionInfo ci = new ConnectionInfo();
            ci.DatabaseName = databasename; ***// Changing at run time.*** User can change databasename
            ci.ServerName = "Myservername";

            ci.UserID = "userid";
            ci.Password = "userpassword";
            tbloginfo.ConnectionInfo = ci;
            tb.ApplyLogOnInfo(tbloginfo);
            try
            {

                tb.Location = ci.DatabaseName + ".dbo." + tb.Location.Substring(tb.Location.LastIndexOf(".") + 1);
            }
            catch
            {

            }
        }

使用rpt文件命令时代码不起作用。在调试时,rd(reportdocument).DataBase.Tables [0] .Name =“Command” 如果rpt文件有手动选择的表 rd(reportdocument).DataBase.Tables [0] .Name =“EmployeeTable”(表名)

代码在找到命令时不会更改表的connectionInfo。

请问我是否清楚自己。

谢谢, N头像

1 个答案:

答案 0 :(得分:0)

一些错误。 我正在使用CrystalDecisions.Windows.Forms.CrystalReportViewer,现在我正在使用SAPBusinessObjects.WPF.Viewer.CrystalReportsViewer。

然后我添加了

crystalreportviewer.ViewerCore.RefreshReport();

问题解决了。 谢谢, Ñ