передающие параметры в кристаллическом отчете

Я только что нашел, как.

Я удаляю первое вхождение lombok @Slf4j или log, где компилятор жалуется, и жду предупреждения (красный пузырь) IDEA, предлагая «добавить lombok.extern.Slf4j.jar в classpath». С тех пор все идет хорошо. Кажется, IDEA любит жаловаться на ломбок.

6
задан Dyrandz Famador 15 December 2015 в 05:24
поделиться

4 ответа

Вам необходимо создать новое поле параметра и значение для обоих параметров. Ваш текущий код добавляет параметр, изменяет его (изменяет имя и значение) и снова добавляет тот же объект. Это должно быть правильно:

 {
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 # вы не можете определять переменную с одним и тем же именем более одного раза. Попробуйте использовать приведенный выше код в том виде, в каком он написан, и если ошибка компилятора все еще возникает, вставьте сюда полный текст ошибки.

8
ответ дан 8 December 2019 в 13:48
поделиться

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.

2
ответ дан 8 December 2019 в 13:48
поделиться

Попробуйте создать ParameterField перед каждым параметром, который вы добавляете в отчет:

paramField = new ParameterField();
paramDiscreteValue.Value = ...
...
2
ответ дан 8 December 2019 в 13:48
поделиться

Попробуйте это немного более кратко

{    
  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");
}
5
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: