sql-server - ssrs - send parameters in url reporting services
SSRS 2008: mensaje de error que dice que mi parĂ¡metro no existe, pero claramente? (10)
Tengo un informe que tiene aproximadamente 10 parámetros y aproximadamente 10 conjuntos de datos y un origen de datos. Escribí mucho, pero realmente necesito ayuda, así que pensé en intentar proporcionar la mayor cantidad de información posible sobre el problema desde el principio.
Simplifiquemos todo y pretendamos que estos son los nombres relevantes de todo y que el informe obtenga información básica de los empleados:
- Parámetros
- facilityID: texto en formato guid o uniqueidentifier, está oculto y pasado para que el usuario final del informe solo pueda ver información para su propia instalación; Parámetro de valor único, no en blanco no nulo, oculto, texto
- startDate: rango de fechas de inicio; supongamos que quiero que mi informe incluya datos a partir del 1 de enero de este año; Parámetro de valor único, no en blanco no nulo, visible, fecha y hora
- endDate: fin del rango de fechas, digamos que es hoy / ahora; Parámetro de valor único, no en blanco no nulo, visible, fecha y hora
- viewOption : tres valores codificados (etiqueta, valor) ("Empleados actuales", 1) y ("Empleados anteriores", 2) y ("Empleados que trasladaron instalaciones", 3); Parámetro multivaluado (así que seleccione todo es una opción), no en blanco, no nulo, visible, texto
- personID: basado en el conjunto de datos getListOfNames donde la etiqueta es el nombre del empleado y el valor es su ID de persona (guid / uniqueidentifier); Texto de selección única, no nulo, no en blanco, y visible
- Mis conjuntos de datos
- getListOfNames: obtiene una lista de las personas que se encontraban en la compañía en el rango de fechas proporcionado en la instalación dada y donde su estado de empleado está en el valor del parámetro viewOption (por lo que puede ser solo un número o hasta tres). Este es un procedimiento almacenado, pero lo configuré para manejar el parámetro multivaluado al pasarle join (parámetro, "~") y luego separarlo en el proceso almacenado. Esto funciona en otros 5 informes.
- getReportInfoOnSelectedPerson: consulta de cuerpo principal; después de que el usuario selecciona el empleado en el que desea datos, esto toma esa ID de persona y el rango de fechas y llena la tabla principal.
El problema:
SSRS dice que viewOption no existe. Pero lo veo, allí mismo, en la carpeta de parámetros en el lado izquierdo. Lo veo cuando voy a ingresar una expresión en Parámetros. ¡No hay líneas rojas onduladas en Parámetros! ViewOption.value. Pero cuando intento ponerlo como un valor para un parámetro utilizado por el conjunto de datos getListOfNames, se produce un error. Si lo pongo en el conjunto de datos getReportInfoOnSelectedPerson y lo uso de la misma manera, SSRS está de acuerdo con eso. Wtf? Entonces ... he comprobado el rdl y todo está bien (donde se declara el parámetro real, donde se usa en la referencia del conjunto de datos, todo). Es solo este conjunto de datos. Y tengo un informe similar que usa el mismo conjunto de datos, los mismos parámetros básicos y ese informe está bien. Intento establecer el valor del parámetro del conjunto de datos en 1 o algo así y eso está bien, pero cuando intento configurarlo en Parameter! ViewOption.value, se produce un error ..... Ahora, más arriba dije que normalmente paso el proceso almacenado. en el parámetro con una tilde ~ pero intento mantenerlo simple y hacer que funcione solo en general (ya sea pasando el primer valor del parámetro multivalue viewOption o convirtiendo ese parámetro en una sola selección y simplemente pasando el. valor) pero la unión tampoco funciona. Todas estas cosas funcionan para el otro conjunto de datos, que también es un proceso almacenado.
Este es mi error:
Se ha producido un error al procesar el informe! (rsProcessingAborted) La expresión de valor para el parámetro de consulta ''@viewOption'' contiene un error: la expresión hace referencia a un parámetro no existente en la colección de parámetros del informe. (rsRuntimeErrorInExpression)
Lo que está diciendo claramente que mi parámetro no existe, pero puedo VERlo ... en todas partes. Y si asigno uno de los valores de los parámetros de los otros conjuntos de datos al parámetro viewOption, funciona sin ningún error. Revisé el rdl.
He tenido este problema antes y se solucionó eliminando tanto el parámetro como el conjunto de datos y volviéndolos a crear (por seguridad, cambié el nombre de ambos). Eso no funcionó esta vez.
Estoy tan frustrado. Por favor ayuda....
¿Código?
<DataSet Name="getListOfNames">
<Fields>
<Field Name="personID">
<DataField>PersonId</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="name">
<DataField>name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>myDataSource</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>getListOfNames</CommandText>
<QueryParameters>
<QueryParameter Name="@fac">
<Value>=join(Parameters!fac.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@bldg">
<Value>=join(Parameters!bldg.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@unit">
<Value>=join(Parameters!unit.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@station">
<Value>=join(Parameters!station.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@startDate">
<Value>=Parameters!startDate.Value</Value>
</QueryParameter>
<QueryParameter Name="@endDate">
<Value>=Parameters!endDate.Value</Value>
</QueryParameter>
<QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<ReportParameter Name="viewOption">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>1</Value>
</Values>
</DefaultValue>
<Prompt>View</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>viewOptionQuery</DataSetName>
<ValueField>value</ValueField>
<LabelField>label</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<DataSet Name="viewOptionQuery">
<Fields>
<Field Name="label">
<DataField>label</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="value">
<DataField>value</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>flamingo</DataSourceName>
<CommandText>select ''Other Facility'' as label, 3 as value union select ''Past'' as label, 2 as value union select ''Current'' as label, 1 as value order by value</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
Así es como se configura y getListOfNames es el motivo por el cual el error es throw, si cambio
<QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>
a
<QueryParameter Name="@viewOption">
<Value>="1~2"</Value>
</QueryParameter>
entonces funciona ... o el valor puede ser solo 1 o 1 ~ 2 ~ 3
Sin embargo ... cuando intento juntar (Parámetros! ViewOption.value, "~") como el valor para el parámetro de consulta de otro dataset, funciona y no hay ningún error.
<DataSet Name="getReportInfoOnSelectedPerson">
<Fields>
<Field Name="name">
<DataField>name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Building">
<DataField>Building</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Unit">
<DataField>Unit</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="desc">
<DataField>desc</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>myDataSource</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>Reports_BasicInfo</CommandText>
<QueryParameters>
<QueryParameter Name="@personID">
<Value>=Parameters!personID.Value</Value>
</QueryParameter>
<QueryParameter Name="@numberINeedToAggregateData">
<Value>=Join(Parameters!viewOption.Value,"~")</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
Y ya lo dije, pero el proc / conjunto de datos almacenado que arroja el error usa un parámetro con la misma configuración en aproximadamente 5 otros informes (he intentado copiar y pegar las secciones de código relevantes de los informes de trabajo, pero sigo recibiendo el error) . Entonces, ¿qué pasa con este?
El problema también ocurre si hace referencia a un parámetro "demasiado pronto", por ejemplo desde dentro de un OnInit modificado. En ese caso, ya no es posible usar un conjunto de datos para los valores disponibles ni para los valores predeterminados de ningún parámetro, incluso si el conjunto de datos en sí no está relacionado con el parámetro en cuestión.
Encontré en mi situación que en realidad los parámetros de la carcasa del nombre habían cambiado ligeramente y estaba arrojando el mismo error.
Tuve que cambiar el nombre a la carcasa correcta, y luego buscar en el código detrás de todo lo que se refiere a ese parámetro y corregir su carcasa. Desplegado bien después de eso.
Esto podría deberse principalmente a que el nombre del parámetro no se actualiza en el conjunto de datos.
Este artículo me ayudó a resolverlo
Al editar los parámetros (nombres o casos) para un conjunto de datos dentro de SSRS, puede encontrar el mensaje de error anterior cuando obtiene una vista previa del informe. Mientras que en la superficie puede parecer que el parámetro tiene el mismo caso en la configuración de parámetros y la consulta del conjunto de datos, hay otro lugar donde se requiere un cambio.
- Abra las propiedades del conjunto de datos para el (los) conjunto (s) de datos que usan el parámetro en el mensaje de error.
- Seleccione la propiedad Parámetros en el panel de la lista de la izquierda.
- Haga clic en el botón Editor de expresiones para el parámetro especificado.
Experimenté problemas similares con SSRS. El código era correcto, los parámetros de SQL eran correctos pero el informe arrojaba errores de parámetros. Estaba usando un Dataset Compartido. Copié el mismo SQL a un conjunto de datos incrustado y el informe funcionó perfectamente. Entonces, estoy de acuerdo en que el software SSRS tiene errores que causan un comportamiento extraño.
Hice un nuevo informe y copié el código en el nuevo informe y lo guardé. Funciona perfectamente ahora en ese nuevo informe ... Eliminé el anterior y renombré el nuevo, implementado en el servidor y todo está bien. Ojalá hubiera pensado en esto mucho antes. SSRS es tan divertido, que ni siquiera sé qué estaba causando el problema ahora, aunque ...
alguna idea sobre eso?
(Reinicié SSRS varias veces, reinicié mi computadora varias veces, borré los archivos .data, borré la copia del servidor a pesar de que esto estaba sucediendo en mi computadora solo para estar seguro ... durante todo esto, por cierto)
Intente cambiar el orden de los parámetros usando las flechas arriba / abajo.
Deben aparecer en el orden de dependencia.
Me pasó a mí también
Hubo un Parámetros dependiendo de otro
Pero el orden del dependiente estaba en la parte superior
Usó las flechas para mover el parámetro calculado al final de todos los parámetros.
Reordenar los parámetros del informe en función de su dependencia me solucionó el problema. Tenía el parámetro de informe en la parte inferior de la lista, pero el de arriba dependía de este de abajo. Por lo tanto, cuando está creando o volviendo a crear el parámetro de informe, asegúrese de que el orden sea correcto.
También tuve este problema, siguiendo todas las respuestas anteriores que deinely ayudaron.
El truco con el mío es que el conjunto de datos era un conjunto de datos SSAS, por lo tanto, estaba oculto. Tuve que buscar el código para el parámetro para ver dónde se usaba y ahí es donde lo encontré.
Para ver los conjuntos de datos ocultos, haga clic derecho en la carpeta Conjuntos de datos en la pestaña Datos de informe y marque la casilla ''Mostrar conjuntos de datos ocultos''.
Tenía el mismo problema. Compruebe la pestaña Parámetros de las Propiedades del conjunto de datos y haga clic en el botón de expresión (fx). Los parámetros no parecen actualizarse automáticamente aquí, uno de mis parámetros aún tenía mayúsculas en lugar de minúsculas