c# - 在 C# 中将参数传递给 Crystal Reports 的步骤

标签 c# visual-studio-2010 crystal-reports

你能告诉我在 C# win 窗体中将参数传递给 Crystal Reports 13 的步骤是什么吗..

我的代码:

        //getting and set dataset to report   
        string sql = "select * from dbo.Trading_Order";
        DataRetriever dr = new DataRetriever();
        dr.getValueFromCustomer(sql);
        DataTable dtSum = dr.getDataTable();
        dsMyReprt k = new dsMyReprt();
        k.Tables.Remove("dtMyTable");
        dtSum.TableName = "dtMyTable";
        k.Tables.Add(dtSum);
        CrystalReport1 myDataReport = new CrystalReport1();

        //pass parameter

        ParameterFields paramFields = new ParameterFields();
        // ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

        ParameterField paramField = new ParameterField();
        ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
        paramField.Name = "@DTotal";
        paramDiscreteValue.Value = tot;
        paramField.CurrentValues.Add(paramDiscreteValue);
        paramFields.Add(paramField);

        paramField = new ParameterField(); 
        paramDiscreteValue = new ParameterDiscreteValue(); 
        paramField.Name = "@name";
        paramDiscreteValue.Value = name;
        paramField.CurrentValues.Add(paramDiscreteValue);
        paramFields.Add(paramField);

        crystalReportViewer1.ParameterFieldInfo = paramFields;

        myDataReport.SetDataSource(k);
        crystalReportViewer1.ReportSource = myDataReport;

获取和设置数据集部分正在运行 但是传递参数部分不起作用

最佳答案

几周以来,我一直为此头疼不已……我必须准确地说,我在 Crystal Reports Designer 中设置了一个 sql 查询。因此,我没有像您那样使用 dataTable,因此您必须考虑这一点。

好吧,@campagnolo_1 建议你:

ReportDocument myDataReport = new ReportDocument();
myDataReport.Load(@"C:\Reports\Report.rpt");

myDataReport.SetParameterValue("MyParameter1", "Hello1");
myDataReport.SetParameterValue("MyParameter2", "Hello2");
myDataReport.SetParameterValue("MyParameter3", "Hello3");

这是一个简短而有趣的解决方案。但是,在此之后,您必须确保在 Crystal Reports 设计器中创建了字符串类型的 MyParameter1MyParameter2MyParameter3

  1. 值得一提的是,在使用 SetParameterValue 设置参数之前,您必须加载报告。

  2. 如果您的参数名称是MyParameter1,那么不要像这样在前面添加@:

    myDataReport.SetParameterValue("@MyParameter1", "Hello1");//你的程序会崩溃。

  3. 如果你得到The parameter is incorrect 那么你应该确保你给的参数值的类型与参数类型完全相同。例如,如果您有一个参数 StartDate 作为 Date 类型,那么请确保您提供的值是 Date 类型并且具有正确的日期格式。

此外,您还谈到了动态或静态字段。在你的情况下,我认为你手动输入值,那么这是静态字段。

希望对你有帮助。

关于c# - 在 C# 中将参数传递给 Crystal Reports 的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19930121/

相关文章:

c# - 使用简单 = 的引用问题不同

c# - 在 MVC 中使用 HttpPost ‘找不到资源’

visual-studio-2010 - C# 编译器允许接口(interface)代替通用派生版本?

visual-studio - 阻止 Visual Studio 在文件中混合行结尾

visual-studio-2010 - 使用哪一个,Visual Studio 安装程序或 Inno 安装程序?

java - 如何以多线程方式从 rpt 生成 PDF 文档?

java - 2020 年后 Crystal Reports Viewer Flash 支持

c# - 如何将此 C# 返回值序列化为 JSON 对象?

c# - 长期失算

sql - 如何从 Crystal Reports 调用存储过程?