使用C#问题的Crystal Report和存储过程

时间:2010-07-31 13:32:13

标签: c# stored-procedures crystal-reports

我有一个需要生成报告的应用程序。但是,我不知道如何使用基于查询的CrystalReport生成报表。假设我只需要从我的数据库生成报告,该报告显示我的选择查询返回的值。我之前从未使用过Crystal Reports,所以我是新手。

谢谢大家:)

编辑:

到目前为止,这就是我所拥有的:

ConnectionString myConnString = new ConnectionString();
string connString = myConnString.getConnectionString();
SqlConnection connSearch = new SqlConnection(connString);
connSearch.Open();

SqlCommand cmdLoad = new SqlCommand("Search", connSearch);
cmdLoad.CommandType = CommandType.StoredProcedure;

cmdLoad.Parameters.Add(new SqlParameter("@AccountID", currentUser));
cmdLoad.Parameters.Add(new SqlParameter("@PeriodID", " "));
cmdLoad.Parameters.Add(new SqlParameter("@PriceID", " "));
cmdLoad.Parameters.Add(new SqlParameter("@ExpenseID", " "));
cmdLoad.Parameters.Add(new SqlParameter("@InventoryID", " "));
cmdLoad.Parameters.Add(new SqlParameter("@ProductInID", " "));
cmdLoad.Parameters.Add(new SqlParameter("@ProductOutID", " "));
cmdLoad.Parameters.Add(new SqlParameter("@PeriodMonth", periodMonth.Trim().ToUpper()));
cmdLoad.Parameters.Add(new SqlParameter("@PeriodYear", periodYear));

SqlDataReader read = cmdLoad.ExecuteReader();

DataSet ds = new DataSet();
DataTable dt = new DataTable("Results");
ds.Tables.Add(dt);
ds.Load(read, LoadOption.PreserveChanges, ds.Tables[0]);


CrystalReport1 crystal = new CrystalReport1();
crystal.SetDataSource(ds);
crystalReportViewer1.ReportSource = crystal;

connSearch.Close();
connSearch.Dispose();

但是,这里似乎有问题,因为它总是产生一个异常,说报告没有指向crystal.SetDataSource(ds);行的表。

有人帮帮我吗? :)

2 个答案:

答案 0 :(得分:1)

Crystal Reports是一款功能强大的工具,广泛应用于世界各地的办事处。 你肯定是在帮忙熟悉它...当你这样的时候,它实际上很容易使用。 :)

CrystalReportViewer将生成一个用户友好的界面,并使您能够将报告导出为所有常用格式。

回答你的问题:

.Net只允许您像在Crystal Report Client中一样构建和查看报表,除非您可以通过代码隐藏来完成。

如果我是你,我会仔细阅读white papers并熟悉报告的第一点。

我认为在您的情况下,错误可能是指错误,尽管您已将数据集指定为报表的数据源,但数据集中可能没有表,或者您没有选择要在报表中显示的任何字段。

尝试在将数据集绑定到报表之前调试数据集,并检查表是否存在。

答案 1 :(得分:0)

好吧,这不是一个真正的答案,但我的建议是在你进入任何更深层之前转储Crystal Reports ......这只是一个痛苦的世界。

以HTML格式创建自己的报告,导出到excel是微不足道的,如果需要,可以使用免费工具导出为PDF,甚至可以使用.Net图表。

.Net为您提供了生成报告所需的所有工具,学习曲线可能不会太大,您最终得到的控制也会大大增加。