我有一个需要生成报告的应用程序。但是,我不知道如何使用基于查询的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);
行的表。
有人帮帮我吗? :)
答案 0 :(得分:1)
Crystal Reports是一款功能强大的工具,广泛应用于世界各地的办事处。 你肯定是在帮忙熟悉它...当你这样的时候,它实际上很容易使用。 :)
CrystalReportViewer将生成一个用户友好的界面,并使您能够将报告导出为所有常用格式。
回答你的问题:
.Net只允许您像在Crystal Report Client中一样构建和查看报表,除非您可以通过代码隐藏来完成。
如果我是你,我会仔细阅读white papers并熟悉报告的第一点。
我认为在您的情况下,错误可能是指错误,尽管您已将数据集指定为报表的数据源,但数据集中可能没有表,或者您没有选择要在报表中显示的任何字段。
尝试在将数据集绑定到报表之前调试数据集,并检查表是否存在。
答案 1 :(得分:0)
好吧,这不是一个真正的答案,但我的建议是在你进入任何更深层之前转储Crystal Reports ......这只是一个痛苦的世界。
以HTML格式创建自己的报告,导出到excel是微不足道的,如果需要,可以使用免费工具导出为PDF,甚至可以使用.Net图表。
.Net为您提供了生成报告所需的所有工具,学习曲线可能不会太大,您最终得到的控制也会大大增加。