我已安装了所有这些帖子中链接的CR_for_VS_13_0_4.exe程序,但我不知道用什么代码来实际启动“.rpt”文件。我正在使用:
process.start("myfile.rpt")
但它会启动报表设计器,而不是查看器。如何确保在运行我的应用程序的客户端上启动查看器?
感谢。
答案 0 :(得分:0)
通过使用myfile.rpt
启动进程,您告诉Windows使用与.rpt
文件关联的程序打开文件:在您的计算机上,这可能是CR设计人员;在用户的计算机上,可能没有与.rpt
文件关联的程序。
而不是“启动”myfile.rpt
,我认为您需要做的事情(尽管我已经使用CR与.NET一段时间)是实例化一个CR查看器对象,它应该显示报告设为myfile.rpt
。
在VS 2010中使用CR查看器时考虑related SO post。
<强>更新强>
关于你为所有内容编写代码而不是使用VS工具箱的评论,我使用CR for VS 2010下载并修改了一下,以便为您成功完成PoC:
using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// the CR viewer
private CrystalDecisions.Windows.Forms.CrystalReportViewer crystalReportViewer1;
public Form1()
{
InitializeComponent();
//
// crystalReportViewer1
//
this.crystalReportViewer1 = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
// FORNOW: just some "who cares" setup assignments for PoC - to be adjusted of course
this.crystalReportViewer1.ActiveViewIndex = -1;
this.crystalReportViewer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.crystalReportViewer1.Cursor = System.Windows.Forms.Cursors.Default;
this.crystalReportViewer1.Location = new System.Drawing.Point(0, 0);
this.crystalReportViewer1.Name = "crystalReportViewer1";
this.crystalReportViewer1.Size = new System.Drawing.Size(150, 150);
this.crystalReportViewer1.TabIndex = 3;
// FORNOW: a DataSet1 as a dummy data source for PoC - really to be loaded with meaningful data of course
DataSet1 ds1 = new DataSet1();
ds1.Tables["DataTable1"].Rows.Add(new object[] { 25 }); // whatever - just some data for PoC
// the CR document - myfile.rpt
ReportDocument reportDocument1 = new ReportDocument();
reportDocument1.Load("myfile.rpt");
// See the note regarding the next statement that follows the code.
reportDocument1.SetDataSource(ds1); // set to use our dummy data source for PoC
// the CR viewer set to use the CR document
this.crystalReportViewer1.ReportSource = reportDocument1;
// the CR viewer added to the form's controls
this.Controls.Add(this.crystalReportViewer1);
// etcetera
}
// etcetera
}
}
如果您的目标是.NET 4.0,除非您将以下内容添加到FileNotFoundException
,否则crdb_adoplus.dll
会遇到关于reportDocument1.SetDataSource(ds1);
的{{1}}:
app.config
最后一点,尽管可以在没有VS工具箱的情况下完成,但我强烈建议您使用它为表单的{{1}中的CR查看器添加大量的设计时代码文件并将表单的<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
文件集中在需要编写的更有意义的代码上以呈现报告。但是,TIMTOWDI。
快乐的报道!