0

下午好开发人员,这是我生成水晶报表的函数,这将报表名称和报表查询作为输入参数,并将生成一个数据集,有了这个数据集我如何设计我的报表?因为这是在运行时生成的, 我怎样才能访问它来生成我的 ReportDesign?

public void fnLoadDataToReport(string rptName, string rptQuery)
{
    try
    {
        DataSet myDS=new DataSet();
//      crReportDocument.Load(Server.MapPath("Reports\" & RptName), OpenReportMethod.OpenReportByTempCopy);
        crReportDocument.Load(Server.MapPath("Reports\\" + rptName ));
        SqlConnection myConnection=new SqlConnection(ConfigurationManager.ConnectionStrings["mycon"].ConnectionString);
        SqlCommand myCommand=new SqlCommand(rptQuery,myConnection);
        SqlDataAdapter MyDA=new SqlDataAdapter(myCommand);
        MyDA.Fill(myDS,"ReportTable");
        crReportDocument.SetDataSource(myDS);
        crvReportGeneration.ReportSource=crReportDocument;
        crvReportGeneration.ShowFirstPage();
    }
    catch(Exception ex)
    {
        Response.Write(ex.Message);
    }
}

任何帮助都是可观的......!

4

2 回答 2

1

您所需要的只是数据集的XML 模式定义,以便能够设计报告。这可以通过以下代码来实现。

private void WriteSchemaToFile(DataSet thisDataSet){
   // Set the file path and name. Modify this for your purposes.
   string filename="mySchema.xml";
   // Write the schema to the file.
   thisDataSet.WriteXmlSchema(filename);
}

现在将上面创建的文件添加到您的项目中。

现在在设计报告时选择Database Expert并选择Project下的 xml 文件。并添加它(就像添加表或视图一样)。

现在你可以走了。其余步骤相同。

只需确保 XSD 架构的名称和数据集中的表名称完全匹配即可。

于 2012-04-18T20:49:55.853 回答
0

为什么使用 DataSet 作为报告的来源。相反,如果您使用存储过程作为源,它将解决您的问题并且维护也将更加容易

于 2012-04-18T18:08:48.923 回答