我有一个表单,我从文本框中获取一些数据到硬类型DataSet myDataSet。我创建了一个类型化的Crystal Report myReport。当我单击按钮时,我想打开新表单并将报表加载到Crystal Report Viewer myViewer中。我有一个问题。我不知道如何将数据导入myViewer。
以下是我的尝试:
myDataSet ds = new myDataSet();
getData(out ds);
myReportForm viewForm = new myReportForm();
viewForm.Owner = this;
myReport report = new myReport();
report.SetDataSource(ds);
//How do I get this report into new form which has Report Viewer??
//I thought it would be something like (doesnt work):
//
//viewForm.myViewer.ReportSource = ds;
viewForm.ShowDialog(this);
答案 0 :(得分:0)
假设myReport
类型为CrystalDecisions.CrystalReports.Engine.ReportDocuemnt
,您需要将ReportSource
设置为报告。
viewForm.myViewer.ReportSource = myReport;
根据您的示例,您需要确保表单上的CrystalReportViewer
为public
,否则您无法从课堂外访问该属性。
另外需要注意的是,您应遵循类名的.Net命名约定
myReportForm
应为MyReportForm
等......
答案 1 :(得分:0)
我这样做是为了使用Crystal Report查看器以新的形式显示报表,使用表单变量来设置报表变量:
ReportDocument myReport = new ReportDocument();
string reportPath = Path.Combine(REPORT_PATH, "myReport.rpt");
myReport.Load(reportPath);
DataTable dt = myTableAdapter.GetDataByID(txtID.Text);
myReport.SetDataSource(dt.DefaultView);
myReport.SetParameterValue("ID", txtID.Text);
frmReportViewer frm = new frmReportViewer(myReport);
frm.Show();
GetDataByID是使用设计器添加的自定义查询。传递给frmReportViewer的报告将传递给CrystalReport查看器的ReportSource。
答案 2 :(得分:0)
执行以下步骤
1。创建一个名称为Form
的新myReportForm
,并在工具箱中添加crystalReportViewer
2。打开Debug文件夹并添加一个名为Reports的新文件夹,将报告复制到该文件夹中
3。确保添加using CrystalDecisions.CrystalReports.Engine;
try
{
Cursor = Cursors.WaitCursor;
ReportDocument myReport = new ReportDocument();
string reportPath = (Application.StartupPath + @"ReportPath");
var ds = new DataSet();
String SqlQuery = "Query";
var adapter = new SqlDataAdapter(SqlQuery, connectionString);
adapter.Fill(ds, "Table or View Name");
myReport.Load(reportPath);
myReport.SetDataSource(ds);
var frm = new myReportForm();
frm.crystalReportViewer1.ReportSource = myReport;
frm.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Cursor = Cursors.Default;