ssrs services parametros funciones expresiones reporting-services ssrs-2008 concatenation aggregate ssrs-expression

reporting-services - funciones - parametros reporting services



Expresión de SSRS: la expresión de valor para el cuadro de texto tiene un parámetro de ámbito que no es válido para el agregado (5)

estoy recibiendo el siguiente error:

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.

La expresión detrás de mi Textbox2 (he agregado algunos espacios para la legibilidad):

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") + ")")

Los campos:

ReportParameterPersoneelsNr = Reportparameter of type Text firmanaam.Value = VARCHAR indienstfirmanr.Value = Long naam.Value = VARCHAR voornaam.Value = VARCHAR personeelsnr.Value = Long

Las búsquedas en Stackoverflow me dieron los siguientes resultados. Pero hasta ahora no me han ayudado a resolver mi problema

Publicación 1: what-does-scope-parameter-that-is-not-valid-for-an-aggregate-function-mean

Post 2: SqlTeam

¿Podría alguien señalar lo que estoy haciendo mal?

Nota : Agregar tostring () en todas partes no ayudó

Nota 2 : Reemplazar el ''+'' con ''&'' no resolvió el problema tampoco

Nota 3 : El nombre del conjunto de datos es correcto y el conjunto de datos es el único presente en este informe de SSRS:

Actualización: los datos contenidos por el conjunto de datos son válidos y la lectura del conjunto de datos no funcionó (se intentó con y sin alias)


La referencia de su alcance no es adecuada ("DataSetHrm"). Como el mensaje de error indica desde un cuadro de texto, solo se puede referenciar un ámbito que puede ser un grupo en una tabla (nombre de ámbito = nombre de grupo), la tabla misma (región de datos -> nombre de ámbito = nombre de región de datos) o el conjunto de datos que pertenece a una región de datos (nombre del alcance = nombre del conjunto de datos).

Cuando estas regiones mencionadas anteriormente están integradas con el conjunto de datos (conjunto de datos -> región de datos -> grupo de datos), se puede hacer referencia a ellas desde un cuadro de texto. En tu ejemplo, este no es el caso.

Si desea utilizar otro conjunto de datos en su cuadro de texto que difiera de su conjunto de datos real (que es el conjunto de datos de su tabla), debe usar la función de búsqueda ().


No sé lo que está mal, pero he creado un informe similar que funciona. Cree un nuevo informe en blanco y luego cree un conjunto de datos (desde SQL Server) con la siguiente consulta:

SELECCIONE ''ACME'' COMO firmanaam, 10000 AS indienstfirmanr, ''Doe'' AS naam, ''Jon'' AS voornaam, 987654 AS personeelsnr

Luego agrega tu parámetro

Agregue un cuadro de texto al informe, con el código:

= 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") & ")")

A continuación, ejecute el informe con o sin un valor para el parámetro:


A veces, este error se produce cuando utilizamos diferentes DatasetName en Experssion .

Como en mi caso, he resuelto este error haciendo lo siguiente,

Antes era como abajo,

="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"),"")

Después de haberlo cambiado a continuación, está funcionando bien ahora,

="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"),"")

Nota: Aquí el error fue que cambié el nombre del conjunto de datos de DataSet1 a LastChangedDataSetName y me quedé para cambiar ese nombre en la última Expression que ya he escrito antes de cambiar el nombre del conjunto de datos .


Me enfrenté a un problema similar recientemente en uno de mis informes. La razón por la que tengo este error es que el nombre del conjunto de datos y la expresión en el informe no coinciden.

Tengo un campo de fecha que se llena con las preferencias del usuario y la expresión es First(Fields!column.Value, "datasetname") . El nombre del conjunto de datos y el nombre del conjunto de datos especificado en los datos de los informes deben coincidir.


El error que tuve en mi informe fue muy similar:

Error 1 [rsInvalidAggregateScope] La expresión oculta para tablix ''table1'' tiene un parámetro de ámbito que no es válido para una función de agregado. El parámetro de ámbito debe establecerse en una constante de cadena que sea igual al nombre de un grupo que lo contiene, el nombre de una región de datos que lo contiene o el nombre de un conjunto de datos.

Lo resolví haciendo clic derecho en el archivo de informe en el Explorador de soluciones + Código de vista (abre el editor XML), buscando el nombre del conjunto de datos principal del informe y cambiando la línea que causó el problema:

<TablixMember> <Visibility> <Hidden>=iIF(CountRows("MYDATASETNAME") = 0, false, true)</Hidden> </Visibility> <KeepTogether>true</KeepTogether> </TablixMember>

En este caso, solo necesitaba modificar la expresión dentro de la etiqueta <Hidden> que tenía el nombre de un DataSet no existente (debido a la copia de otro informe). Más tarde, fue más fácil ubicar la fila en la interfaz que causó el error.

Por lo tanto, si el error se refiere a Value lugar, busque las apariciones del nombre del conjunto de datos del informe en el código XML y compruebe dos veces las etiquetas <Value> para los nombres que no existen en el informe actual.