我遇到使用水晶报告报告的问题
这是我的代码
protected void Page_Load(object sender, EventArgs e)
{
string Judul, Peminjam, Pinjam, Kembali;
DataTable dtReturn = new DataTable();
SqlConnection con = data.getKoneksi();
con.Open();
SqlCommand Perintah = new SqlCommand();
Perintah.Connection = con;
Perintah.CommandText = "SELECT DISTINCT Peminjaman.Katalog, Peminjaman.Pinjam, Peminjaman.Kembali, Pengguna.Nama, Buku.Judul, Buku.Jumlah, Temp.Kembali AS HrsKbl FROM Peminjaman INNER JOIN Buku INNER JOIN Temp ON Buku.ID = Temp.ID ON Peminjaman.Katalog = Buku.ID AND Peminjaman.Katalog = Temp.ID INNER JOIN Pengguna ON Peminjaman.Peminjam = Pengguna.NIS WHERE Peminjaman.Status = 'dipinjam' ORDER BY Kembali ASC";
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = Perintah;
Adapter.Fill(dtReturn);
LapBulanan.LaporanBulananDataTable dt = new LapBulanan.LaporanBulananDataTable();
foreach (DataRow dr in dtReturn.Rows)
{
Judul = dr["Judul"].ToString();
Peminjam = dr["Nama"].ToString();
Pinjam = dr["Pinjam"].ToString();
Kembali = dr["Kembali"].ToString();
}
DataTable dtTemp = dt;
ReportDocument rpt = new Laporan();
rpt.Load(Server.MapPath("~/Laporan.rpt"));
rpt.SetDataSource(dtTemp);
rpt.SetDataSource(dt.CopyToDataTable());
CrystalReportViewer1.ReportSource = rpt;
CrystalReportViewer1.DataBind();
rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, false, "Laporan");
con.Close();
}
我的数据集名称是LapBulanan.xsd,包含数据名称LaporanBulanan(Judul,Peminjam,Pinjam,Kembali)
当我调试这个程序时,我收到一条错误消息“源包含没有DataRows”,但当我检查此查询时,我得到了正确的记录
当我删除“rpt.SetDataSource(dt.CopyToDataTable());”这个水晶报告运行良好,但我的报告没有记录
谢谢你的善意答案 0 :(得分:0)
首先,永远不会使用具有SQL查询结果的dtReturn
数据表。相反,您使用的dtTemp
数据表不包含任何数据,因为您只是为其分配了dt
数据表的空实例。
foreach循环什么都不做,因为它只是为4个变量赋值,这些变量在每次迭代中都会发生变化,之后再也不会被使用。
您不需要两次设置报告的数据源。
所以我认为代码应该看起来像这样
protected void Page_Load(object sender, EventArgs e)
{
DataTable dtReturn = new DataTable();
SqlConnection con = data.getKoneksi();
con.Open();
SqlCommand Perintah = new SqlCommand();
Perintah.Connection = con;
Perintah.CommandText = "SELECT DISTINCT Peminjaman.Katalog, Peminjaman.Pinjam, Peminjaman.Kembali, Pengguna.Nama, Buku.Judul, Buku.Jumlah, Temp.Kembali AS HrsKbl FROM Peminjaman INNER JOIN Buku INNER JOIN Temp ON Buku.ID = Temp.ID ON Peminjaman.Katalog = Buku.ID AND Peminjaman.Katalog = Temp.ID INNER JOIN Pengguna ON Peminjaman.Peminjam = Pengguna.NIS WHERE Peminjaman.Status = 'dipinjam' ORDER BY Kembali ASC";
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = Perintah;
Adapter.Fill(dtReturn);
ReportDocument rpt = new Laporan();
rpt.Load(Server.MapPath("~/Laporan.rpt"));
rpt.SetDataSource(dtReturn);
CrystalReportViewer1.ReportSource = rpt;
CrystalReportViewer1.DataBind();
rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, false, "Laporan");
con.Close();
}