Я только что нашел, как.
Я удаляю первое вхождение lombok @Slf4j
или log
, где компилятор жалуется, и жду предупреждения (красный пузырь) IDEA, предлагая «добавить lombok.extern.Slf4j.jar в classpath». С тех пор все идет хорошо. Кажется, IDEA любит жаловаться на ломбок.
Вам необходимо создать новое поле параметра и значение для обоих параметров. Ваш текущий код добавляет параметр, изменяет его (изменяет имя и значение) и снова добавляет тот же объект. Это должно быть правильно:
{
ReportDocument reportDocument = new ReportDocument();
ParameterFields paramFields = new ParameterFields();
// ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@Dept";
paramDiscreteValue.Value = TextBox1.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
paramField = new ParameterField(); // <-- This line is added
paramDiscreteValue = new ParameterDiscreteValue(); // <-- This line is added
paramField.Name = "@Name";
paramDiscreteValue.Value = TextBox2.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
}
РЕДАКТИРОВАТЬ: Ошибка, упомянутая в комментарии, вероятно, связана с тем, что в коде есть два определения переменной paramField или paramDiscreteValue. В одном методе C # вы не можете определять переменную с одним и тем же именем более одного раза. Попробуйте использовать приведенный выше код в том виде, в каком он написан, и если ошибка компилятора все еще возникает, вставьте сюда полный текст ошибки.
Make sure the actual data being passed in the parameters isn't being implicitly converted to the wrong data type. Like if you're passing a numeric ID for the @Dept parameter, make sure the data type of the input parameter that expects to receive the value is also a numeric type.
Попробуйте создать ParameterField перед каждым параметром, который вы добавляете в отчет:
paramField = new ParameterField();
paramDiscreteValue.Value = ...
...
Попробуйте это немного более кратко
{
ReportDocument reportDocument = new ReportDocument();
reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetParameterValue("@Dept", TextBox1.Text.ToString());
reportDocument.SetParameterValue("@Name", TextBox2.Text.ToString());
// CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
}