Это работало правильно в Visual Studio 2008, но, поскольку я переключился на Visual Studio 2010 и Crystal Reports для 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();
}
Когда я запускаю отчет от дизайнера, он работает просто отлично. Вы можете видеть, как передаются параметры, поскольку я отображаю их в своем отчете.
![alt text](https://i.stack.imgur.com/yoOHn.png)
Для моих отчетов, которые запускаются из хранимых процедур, параметры, кажется, проходят просто отлично, это только те, которые составлены из всех таблиц.
Для чего это стоит, вот моя формула выбора:
{employee.HireDate} >= {?StartDate} And {employee.HireDate} <= {?EndDate}