Получение "одного или нескольких параметров, необходимых для запуска отчета, не указано"
Я создаю отчет, который хотел бы принять два значения от пользователя, передать их в запрос и найти данные, связанные с этими записями.
Например, если у вас есть список сотрудников, показатели производительности и значения, связанные с ними; тогда пользователь будет выбирать показатель имени сотрудника/производительности, и они получат информацию о подсчете этого сотрудника для этой меры.
У меня есть два параметра, каждый из которых заполняется SQL-запросами, получая список имен и показателей сотрудников, и таблицу ниже, которая просто извлекает информацию на основе "WHERE name = @Name AND measure = @Measure", но когда Я нажимаю "Предварительный просмотр" для локального запуска отчета. Я получаю сообщение об ошибке: "один или несколько параметров, необходимых для запуска отчета, не были указаны"
Я знаю, что параметры работают должным образом, потому что я могу кормить их значения непосредственно в текстовое поле, и значения заполняются правильно. Кроме того, если я изменяю запрос, чтобы просто принять один параметр (т.е. WHERE measure = @Measure), запрос работает.
Я смущен, почему эта ошибка возникает, поскольку я знаю, что мои параметры функционируют и правильно заполняются.
Ответы
Ответ 1
Я испытал это поведение в .NET 4.0 с помощью локальных отчетов (в файлах .rdlc), когда одно из значений параметров содержало строку emtpy. Хотя установка параметра была правильной:
report.SetParameters(
new List<ReportParameter> {
new ReportParameter("Title", Messages.Title),
new ReportParameter("SubTitle", Messages.Subtitle))
}
);
Он работал только до тех пор, пока оба параметра фактически содержали некоторые символы, иначе указанное исключение было брошено.
Ответ 2
Это вызвало у меня много часов боли. Оказывается, что это связано с использованием общего набора данных.
Внесите набор данных в свой отчет, и он отлично работает.
Ответ 3
Эта ошибка возникает, когда вы либо
A) параметр написан неправильно в фактическом отчете. Это означает, что запрос ожидает @Name, но в отчете передается @Names (или другое правописание).
или же
Б) Возможно ли, что вы пытаетесь запустить отчет со значением по умолчанию для параметра NULL для @Name, но хранимая процедура требует фактического значения?
Это может произойти, если вы создаете отчет в Visual Studio и для параметра @Name задано значение по умолчанию (null).
Попробуйте удалить значение по умолчанию или убедитесь, что у параметра @Name есть фактическое значение, даже если оно просто ''.
Ответ 4
У меня была аналогичная проблема. Проблема возникла при использовании SharedDataSource с параметрами, которые должны иметь нулевое значение. Если вы используете тот же запрос во встроенном источнике данных, проблем нет.
В отличие от внедренного источника данных, вам нужно определить, разрешено ли параметрам, используемым в запросе общих источников данных, иметь нулевое значение, как показано на снимке экрана. В моем случае в запросе общего источника данных есть два параметра, которые могут иметь нулевое значение.
![Установить Разрешить для параметра SharedDataSource]()
Итак, после того, как они разрешили null, проблема исправлена!
Ответ 5
У меня была та же проблема, теперь она отсортирована на сервере sql server 2008 r2.
Я знаю, что это старый вопрос,
но только для того, чтобы помогать другим:
Это было очень просто, просто удостоверившись, что орфография, включая случай, одинакова и использование @.
У меня есть общий набор данных, называемый currentSpaceByDrive, со следующим кодом:
SELECT
[DRIVE]
,[Volume_Size_GB]
,[VolumeSpaceAvailable_GB]
,[VolumePercentAvailable]
FROM monitoring.dbo.currentSpaceByDrive(@ServerID)
Я добавляю общий набор данных currentSpaceByDrive в свой отчет, и я даю ему то же имя.
когда я нажимаю правой кнопкой мыши на нем, тот, который находится в моем отчете, свойства набора данных, является @ServerID.
Значение @ServerID поступает из другого набора данных, называемого the_servers (где пользователь выбирает идентификатор сервера)
У меня есть параметр отчета, также называемый @ServerID, который получает его значение от_сервера и используется для подачи параметра @ServerID в currentSpaceByDrive.
Слишком много @ServerID, я понимаю, но если вы сделаете свой собственный тест на основе этого, вы сделаете это.
См. Прикрепленное изображение.
надеюсь, что это поможет
Марсело
![enter image description here]()
Ответ 6
проверить DataSet в сервере отчетов, у меня была аналогичная проблема, я редактировал общий набор данных в Visual Studio, но это не сработало, после часа разочарования я проверил набор данных на сервере отчетов, и я узнал, что он не обновляется с помощью изменения, которые я сделал в визуальной студии, я удаляю его и снова переопределяю Dataset из visual studio. он работает.
Ответ 7
На самом деле мне пришлось:
- Удалить объект SubReport из отчета.
- Перетащите новый объект из панели инструментов
- Настройте имя субрепортажа и отчет
- В Paramateres "Добавить" и выберите каждый параметр и соответствующее значение.
Тогда работает для меня.
Ответ 8
Для меня установка значения параметра создает проблемы. Я не знаю почему, но значение параметра не смогло принять строку. Пустой или нулевой. Так что я просто дал "", поскольку значение решает ошибку.
Образец
ReportParameter[] parameters = new ReportParameter[4];
parameters[0] = new ReportParameter("Name", EName);
parameters[1] = new ReportParameter("ShiftName", CurrentShift);
parameters[2] = new ReportParameter("Date", LoginDate);
if(ValidateReportData())//some condition
{
parameters[3] = new ReportParameter("Date1", LoginDate);
}
else
{
//parameters[3] = new ReportParameter("Date1", string.Empty);//this makes exception while calling Render function.
parameters[3] = new ReportParameter("Date1", " ");//Solves the issue.
}