如何使用动态数据设计Crystal报表

时间:2012-04-10 07:34:47

标签: asp.net crystal-reports-2008

下午好开发者, 这是我生成水晶报告的功能,这将把Report Name和ReportQuery作为输入参数并生成一个数据集,有了这个数据集我怎样才能设计我的报告?因为这是在运行时生成的,我怎么能访问它以生成我的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);
    }
}

任何帮助都是值得的......!

2 个答案:

答案 0 :(得分: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);
}

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

现在,在设计报告时,选择数据库专家,然后在项目下选择xml文件。并添加它(就像你添加表或视图一样)。

现在你很高兴。其余步骤是相同的​​。

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

答案 1 :(得分:0)

为什么使用DataSet作为报告的来源。而不是如果你使用存储过程作为源,它将解决你的问题,并且维护将更容易