Crystal Reports和强类型数据集会生成空报表

时间:2011-06-30 23:55:14

标签: asp.net crystal-reports strongly-typed-dataset

我正在将VS.Net应用程序从VS 2003转换为VS 2005作为起点。该应用程序使用Crystal Reports并使用ADO.Net绑定到强类型数据集(XSD)。我不得不改变一些Crystal Code来使用更新版本的Crystal。现在,当我运行页面时,报告生成,但没有任何字段填写。我看到很多人遇到同样的问题,没有真正的解决方案。我决定创建一个新项目来完成同样的事情,从VS 2003到2005年删除会话,这可能是导致问题的原因。所以我的示例程序有一个运行查询的按钮,填充数据集并将其分配给报表。报告仅显示标题。代码如下。我不知道下一步该尝试什么。

    DataSet1 ds = new DataSet1();

    SqlConnection conn = 
       new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

    SqlDataAdapter da = new SqlDataAdapter("select * from mytable", conn);
    da.Fill(ds);

    ReportDocument rep = new ReportDocument();
    rep.Load(Server.MapPath("crystalreport.rpt"));
    rep.SetDataSource(ds);

    CrystalReportViewer1.ReportSource = rep;
    CrystalReportViewer1.RefreshReport();

我还基于相同的MYTABLE表创建了DataSet1.XSD。除非报告中的字段没有填充,否则我没有任何错误或任何错误迹象。

1 个答案:

答案 0 :(得分:1)

需要一些调试才能确定为什么它不适合你。您是否在调试会话中查看了结果数据集,并查看它是否填充正确?

这是一个很好的工作方法示例。

SqlConnection cnn;
string connectionString = null;
string sql = null;

connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user id=USERNAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select * from mytable";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "mytable");
cnn.Close();

CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();