这在 Visual Studio 2008 中工作正常,但由于我已切换到 Visual Studio 2010 和 Crystal Reports for Visual Studio 2010,我传递的参数将被忽略。
它们显示在报告中,只是在选择公式时被忽略!这是我创建报告和传递参数的代码。
private void Prepare()
{
var reportDocument = new ReportDocument();
string reportPath = string.Format(
"{0}\\{1}",
Globals.FormPath,
this.FormTemplate.Filename);
reportDocument.Load(reportPath);
ParameterDiscreteValue parameter;
foreach (var control in this.FormTemplateFieldControls)
{
switch (control.FormTemplateField.DataType)
{
case FormFieldDataType.Date:
this.AddParameterForDateTime(
reportDocument,
control.FormTemplateField.Name,
(DateTime)control.EditValue);
break;
case FormFieldDataType.DateTime:
this.AddParameterForDateTime(
reportDocument,
control.FormTemplateField.Name,
(DateTime)control.EditValue);
break;
case FormFieldDataType.Time:
this.AddParameterForDateTime(
reportDocument,
control.FormTemplateField.Name,
(DateTime)control.EditValue);
break;
case FormFieldDataType.Guid:
this.AddParameterForGuid(
reportDocument,
control.FormTemplateField.Name,
(Guid)control.EditValue);
break;
default:
this.AddParameterForString(
reportDocument,
control.FormTemplateField.Name,
control.EditValue.ToString());
break;
}
}
this.SetConnectionInfo(reportDocument);
var frm = new FormViewer();
frm.Report = reportDocument;
frm.ShowDialog();
frm.Dispose();
this.Close();
}
当我从设计器运行报告时,它工作得很好。当我在报告中显示参数时,您可以看到正在传递参数。
对于我从存储过程运行的报告,参数似乎传递得很好,它只是由所有表组成的参数。
对于它的值(value),这是我的选择公式:
{employee.HireDate} >= {?StartDate} And {employee.HireDate} <= {?EndDate}
最佳答案
最新版本的 Crystal Reports for Visual Studio 2010 已解决此问题。
关于c# - 如何将参数传递给 Visual Studio 2010 的 Crystal Report?看起来他们被忽略了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4205541/