【问题标题】:Parameter values not showing up when pushing data to a Crystal report?将数据推送到 Crystal 报表时未显示参数值?
【发布时间】:2010-05-21 08:08:50
【问题描述】:

我有一个基于参数化存储过程的 Crystal 报表。该报告显示每个参数的值以及数据。在正常使用中,一切正常。

我现在需要向我的报告应用程序添加一些额外的功能,以便对从存储过程返回的数据进行一些额外的处理。为此,我想从我的 C# 代码中调用该过程,并将数据连同参数值一起推送到报表中。

作为概念验证,我正在使用虚拟数据构建数据表并将其推送到报告中。参数值不会出现在报告中,但会出现虚拟数据。我做错了什么?

我使用 Crystal Reports 11.5 构建报表,并使用 Visual Studio 2010 构建应用程序。我使用的代码是:

using System;
using System.Data;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace ReportTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var fakeTable = new DataTable("report_for_date;1");
            fakeTable.Columns.Add("Name", typeof(string));
            fakeTable.Columns.Add("Amount", typeof(decimal));

            var row = fakeTable.NewRow();
            row["Name"] = "TEST";
            row["Amount"] = 1000;

            fakeTable.Rows.Add(row);

            var rep = new ReportDocument();

            rep.Load("reportfordate.rpt", OpenReportMethod.OpenReportByDefault);

            rep.SetDataSource(fakeTable);

            rep.SetParameterValue("@date", new DateTime(2010, 05, 21) );
            rep.SetParameterValue("@threshold",5);

            // This code prints out the expected values (set above)
            foreach (ParameterField p in rep.ParameterFields)
                foreach(ParameterDiscreteValue v in p.CurrentValues)
                    Console.WriteLine("{0}={1}", p.Name, v.Value);   

            // The report PDF is generated but does not display the parameter values
            rep.ExportToDisk(ExportFormatType.PortableDocFormat,"c:/temp/hack.pdf");
        }
    }
}

【问题讨论】:

    标签: .net crystal-reports


    【解决方案1】:

    您的概念应该有效。您应该能够在 C# 中收集数据,然后将其推送到 Crystal Report。

    我已经尝试了您的代码,它似乎对我有用。唯一不同的是,我通常不使用 SetParameterValue,而是单独构建 ParameterField 对象,然后将它们添加到 ParameterFields 对象,然后将该对象传递给报表。那更乏味,可能没有比这种方式更好的了。

    回到您的问题,我将建议您确保参数名称拼写正确(带有“@”符号),但如果是这种情况,它应该会给您一个错误。

    唯一的另一件事是确保报告中包含参数字段,并且它们没有附加任何抑制逻辑,但这有点愚蠢,我怀疑情况是否如此.

    总而言之,您似乎做得对,您的参数字段应该会显示出来。作为另一项测试,您始终可以尝试使用水晶查看器创建一个简单的表单应用程序,以查看它的外观。这将排除出口部分,因为有时在出口过程中似乎会发生奇怪的事情。

    我知道这可能没什么帮助,但我希望你能从中找到有用的东西。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多