C# 在C中向crystal报表传递参数的步骤#

C# 在C中向crystal报表传递参数的步骤#,c#,visual-studio-2010,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); Da

你能告诉我以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;
获取和设置数据集部分正在工作
但是传递参数部分不起作用了

为什么不这样尝试并保存一些代码呢

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

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

几个星期以来,我都很头疼。。。我必须在Crystal Reports Designer中设置sql查询。因此,我没有像你那样使用DATABLE,所以你必须考虑这个问题。 好吧,@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 Designer中创建了字符串类型的
MyParameter1
MyParameter2
MyParameter3

  • 必须指出的是,在使用
    SetParameterValue
    设置参数之前,必须加载报告

  • 如果您的参数名为
    MyParameter1
    ,则不要像这样在前面添加
    @

    myDataReport.SetParameterValue(“@MyParameter1”,“Hello1”);//你的程序将崩溃

  • 如果得到的
    参数不正确
    ,则应确保给出的参数值类型与参数类型完全相同。例如,如果您有一个参数
    StartDate
    作为日期类型,那么请确保您将给出的值是日期类型,并且具有正确的日期格式

  • 另外,你们还谈到了动态场或静态场。在您的情况下,我认为您需要手动输入值,然后这是静态字段


    希望这对您有所帮助。

    您现在可能已经找到了解决方案。但这可能会有所帮助。您可以输入作为参数传递的值


    什么东西不管用?gleng:工作的意思是,我在crystal报表中添加了我的数据集表列,它在加载时会显示出来。但是在我尝试传递该参数之后,出现了一个错误“参数不正确”。报表对象上不是有一个“SetParameterValue”方法吗?你是说这个吗?myDataReport.SetParameterValue(“@Total”,120000);myDataReport.SetParameterValue(“@name”,“Nipun”);我也试过了,但是有相同的错误调用“参数不正确”我需要在CrystalReport1.rpt文件中做任何更改吗?不。。它要求在我运行程序后为参数输入值。。我是否需要在CrystalReport1.rpt文件中进行任何更改?您必须确保参数名称的拼写与报告中的拼写完全相同。是的,相同。我是否需要将该值类型更改为静态或动态?我需要更改任何公式字段吗?谢谢你3年后,我在谷歌上搜索了SetParameterValue崩溃,发现你不应该把@放在参数前面(第2点)。谢谢