我使用下面的代码设置水晶报告的报告来源&显示。我在项目中添加了一个DataSet&向该DataSet添加了一个DataTable。 DataTable名为“my_dt”& DataSet名为“MyDataSet”。 “my_dt”DataTable正好有3列与我的数据库中的“出勤”表相匹配。当我按“开始调试”时,我没有收到错误&它显示一个空白报告。当我按下“Start Without Debugging”时,我得到了这个错误。我不知道我做错了什么。请帮助我,非常感谢任何帮助。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
namespace CrystalReportWithAccess
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
my_rpt objRpt;
// Creating object of our report.
objRpt = new my_rpt();
String ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\CentreDB.mdb;Jet OLEDB:Database Password=pass";
OleDbConnection myConnection = new OleDbConnection(ConnStr);
String Query1 = "SELECT * FROM [Attendance]";
OleDbDataAdapter adapter = new OleDbDataAdapter(Query1, ConnStr);
DataSet Ds = new DataSet();
// here my_dt is the name of the DataTable which we
// created in the designer view.
adapter.Fill(Ds, "my_dt");
if (Ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("No data Found", "CrystalReportWithAccess");
return;
}
// Setting data source of our report object
objRpt.SetDataSource(Ds);
CrystalDecisions.CrystalReports.Engine.TextObject root;
root = (CrystalDecisions.CrystalReports.Engine.TextObject)
objRpt.ReportDefinition.ReportObjects["txt_header"];
root.Text = "Sample Report By Using Data Table!!";
// Binding the crystalReportViewer with our report object.
crystalReportViewer1.ReportSource = objRpt;
}
}
}
答案 0 :(得分:3)
您需要检查Ds.Tables
object
是否包含以下任何元素:
Ds.Tables.Count > 0
在你的例子中使用它:
if (Ds.Tables.Count > 0 && Ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("No data Found", "CrystalReportWithAccess");
return;
}
尝试检查ReportObjects
是否包含任何内容。
if(objRpt.ReportDefinition.ReportObjects.Count > 0){
}