将参数传递给VS 2008中的Crystal Reports时出现上述错误
我就是这样做的:
reportPath = GetReportPath(ReportType);
CRReport.Load(reportPath);
CrystalReportViewer1.ReportSource = CRReport;
AddParameterToReport("DocumentID", DocumentID);
ConnectionInfo connectionInfo = ConnInfo();
SetDBLogonForReport(connectionInfo, CRReport);
SetDataSetForMultipleSubReport(connectionInfo, CRReport);
AddParameter()
:
ParameterFields parameterFields = CrystalReportViewer1.ParameterFieldInfo;
ParameterValues currentParameterValues = new ParameterValues();
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
parameterDiscreteValue.Value = CRParamValue;
currentParameterValues.Add(parameterDiscreteValue);
ParameterField parameterField = parameterFields[CRParamName];
parameterField.CurrentValues = currentParameterValues;
ApplyingCurrentValues()
:
ParameterFields crParameterFields = CRReport.ParameterFields;
ParameterField crParameterField = new ParameterField();
try
{
// loop through all the sections to find all the report objects
foreach (ParameterField crParameterField1 in crParameterFields)
{
for (int i = 0; i < CRReport.ParameterFields.Count; i++)
{
ParameterValues CrParaVals = new ParameterValues();
DataDefinition CrDataDef = CRReport.DataDefinition;
ParameterFieldDefinitions PFDefs = CrDataDef.ParameterFields;
crParameterFields = CrystalReportViewer1.ParameterFieldInfo;
crParameterField = crParameterFields[i];
CrParaVals = crParameterField.CurrentValues;
CRReport.DataDefinition.ParameterFields[i].ApplyCurrentValues(CrParaVals);
}
}
}
catch (Exception ex)
{
ex = null;
}
在突出显示的行中获得上述错误。
有谁可以帮我解决这个问题?
我的Crystal Report中只有参数字段,如下所示。
答案 0 :(得分:2)
我们将Crystal Reports用于所有报告,我们绝不会像您尝试的那样向报告发送参数。我们只需设置参数值,您似乎是在添加参数而不是引用现有参数。
CRReport.SetParameterValue("DocumentID", DocumentID);
答案 1 :(得分:2)
上述错误是由于水晶报告中的值类型错误匹配而发生的,一旦我改变,它就完美地工作了。
我做的是 例如: 在水晶报告中,我已经将值类型作为数字。但是在传递i时,传递了文本框值,这是字符串类型。所以我在Crystal报告中将值类型更改为字符串,并将字符串作为参数发送,从而产生预期的解决方案。
答案 2 :(得分:-1)
检查您的参数输入报告.. 并与您通过的表格相匹配。 我遇到了同样的问题。并通过比较两端来解决这个问题。