Выражение SSRS: выражение значения для textbox имеет параметр scope, недопустимый для aggregate
Я получаю следующую ошибку:
Error 1 [rsInvalidAggregateScope] The Value expression for the text box
‘Textbox2’ has a scope parameter that is not valid for an aggregate function.
The scope parameter must be set to a string constant that is equal to either
the name of a containing group, the name of a containing data region, or
the name of a dataset.
выражение позади моего Textbox2 (я добавил несколько пробелов для удобства чтения):
Iif(Parameters!ReportParameterPersoneelsNr.Value.Equals(String.Empty),
"Prestaties " + First(Fields!firmanaam.Value, "DataSetHrm") +
"(" + First(Fields!indienstfirmanr.Value, "DataSetHrm") + ")",
"Prestaties " + First(Fields!naam.Value, "DataSetHrm") + " " +
First(Fields!voornaam.Value, "DataSetHrm") +
"(" + First(Fields!personeelsnr.Value, "DataSetHrm") + ")")
поля:
ReportParameterPersoneelsNr = Reportparameter of type Text
firmanaam.Value = VARCHAR
indienstfirmanr.Value = Long
naam.Value = VARCHAR
voornaam.Value = VARCHAR
personeelsnr.Value = Long
поиск по Stackoverflow принес мне следующие результаты. Но до сих пор они не помогли мне решить мою проблему
сообщение 1: что-делает-scope-parameter-that-is-not-valid-for-an-aggregate-function-mean
может кто-нибудь указать, что я делаю неправильно?
Примечание: добавление tostring () везде не помогло
примечание 2.: замена " + " на " & " Также не решила проблему
Примечание 3: имя datasetname является правильным, и набор данных является единственным, присутствующим в этом отчете SSRS:
обновление: данные, содержащиеся в наборе данных допустимо и считывание набора данных не работало (пробовал С и без псевдонимов)
5 ответов
Я не знаю, что не так, но создали аналогичный отчет, который работает. Создайте новый пустой отчет, затем создайте набор данных (из SQL Server) со следующим запросом:
выберите "ACME" в качестве firmanaam, 10000 AS indienstfirmanr, 'Doe' AS naam, 'Джон' как voornaam, 987654 как personeelsnr
добавьте параметр
добавить текстовое поле в отчет, код:
= Iif(Parameters!ReportParameterPersoneelsNr.Value.Equals(String.Empty), "Prestaties " & First(Fields!firmanaam.Value, "DataSetHrm") & "(" & First(Fields!indienstfirmanr.Value, "DataSetHrm") & ")", "Prestaties " & First(Fields!naam.Value, "DataSetHrm") & " " & First(Fields!voornaam.Value, "DataSetHrm") & "(" & First(Fields!personeelsnr.Value, "DataSetHrm") & ")")
затем запустите отчет со значением параметра или без него:
иногда эта ошибка возникает, когда мы используем разные DatasetName
на Experssion
.
как и в моем случае, я решил эту ошибку, сделав ниже вещь,
прежде чем это было, как ниже,
="For Man " +
IIF(Len(First(Fields!Lname.Value, "DataSet1")) > 0,
First(Fields!Lname.Value, "DataSet1"),"") & IIF(Len(First(Fields!Fname.Value, "DataSet1")) > 0,
", " + First(Fields!Fname.Value, "DataSet1"),"")
после изменения его на ниже он работает нормально,
="For Man " +
IIF(Len(First(Fields!Lname.Value, "LastChangedDataSetName")) > 0,
First(Fields!Lname.Value, "LastChangedDataSetName"),"") & IIF(Len(First(Fields!Fname.Value, "LastChangedDataSetName")) > 0,
", " + First(Fields!Fname.Value, "LastChangedDataSetName"),"")
Примечание: так вот ошибка была в том, что я изменил Имя Набора Данных С DataSet1
до LastChangedDataSetName
и осталось изменить это имя в последнем Expression
что я уже написал до изменения Имя Набора Данных.
ошибка, которую я имел в своем отчете, была очень похожа:
Ошибка 1 [rsInvalidAggregateScope]скрытый выражение для табликса "table1" имеет параметр scope, который недопустим для агрегатной функции. Параметр scope должен быть установлен в строковую константу, равную имени содержащей группы, имени содержащей области данных или имени набора данных.
Я решил, щелкнув правой кнопкой мыши файл отчета в Обозреватель + Посмотреть Код (открывает редактор XML), поиск имени основного набора данных отчета и изменение строки, вызвавшей проблему:
<TablixMember>
<Visibility>
<Hidden>=iIF(CountRows("MYDATASETNAME") = 0, false, true)</Hidden>
</Visibility>
<KeepTogether>true</KeepTogether>
</TablixMember>
в этом случае мне просто нужно было изменить выражение внутри <Hidden>
тег, который имел имя несуществующего набора данных (из-за копирования из другого отчета). Позже было проще найти строку в интерфейсе, которая вызвала ошибку.
поэтому если ошибка относится к поиск вхождения имени набора данных отчета в XML-код и дважды проверьте <Value>
теги для имен, которые не существуют в текущем отчете.
ваша ссылка на область не является правильной ("DataSetHrm"). Как сообщение об ошибке с TextBox только появляется объем, которые может быть группа в таблице (объем имя = имя группы), таблица (данные регион -> область имя = данные название региона) или набор данных, который принадлежит к области данных (область имя = имя набора данных).
когда эти области, упомянутые выше, встроены в dataset (dataset - > Data region - > data group), на них можно ссылаться из текстовый. В вашем примере это не так.
Если вы хотите использовать другой набор данных в текстовом поле, который отличается от вашего фактического набора данных (который является набором данных вашей таблицы), вы должны использовать функцию lookup ().
недавно я столкнулся с подобной проблемой в одном из моих отчетов. Причина этой ошибки заключается в том, что имя набора данных и выражение в отчете не совпадают.
У меня есть поле даты, которое заполнено пользовательскими настройками, и выражение First(Fields!column.Value, "datasetname")
. Имя набора данных и имя набора данных, указанное в данных отчетов, должны совпадать.