你能告诉我在C#win形式中将参数传递给 Crystal 报表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 设计器中创建了字符串类型的
MyParameter1
、 MyParameter2
和 MyParameter3
。SetParameterValue
设置参数之前加载报告。 MyParameter1
,则不要像这样在前面添加 @
:myDataReport.SetParameterValue("@MyParameter1", "Hello1");//你的程序会崩溃。
The parameter is incorrect
那么你应该确保你给出的参数值的类型与参数类型完全相同。例如,如果您有一个参数 StartDate
作为 Date 类型,那么请确保您提供的值是 Date 类型并且具有正确的日期格式。 此外,您已经谈到了动态或静态字段。在您的情况下,我认为您手动输入值,那么这是静态字段。
希望这对你有帮助。
关于c# - 在 C# 中将参数传递给 Crystal 报表的步骤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19930121/