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.SSRS 2008: mensaje de error que dice que mi parámetro no existe, pero claramente?
Vamos a simplificar todo y pretender que estos son los nombres relevantes de todo y que el informe obtiene la información del empleado básica:
- Parámetros
- FacilityID: texto en el formato de un GUID o uniqueidentifier, este está oculto y pasado para que el usuario final del informe solo pueda ver información para sus propias instalaciones; Parámetro de valor único, no en blanco no nulo, oculto, texto
- fecha de inicio: el intervalo de fechas de inicio, digamos 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, datetime
- 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 movieron las instalaciones ", 3); Parámetro multivaluado (así que seleccione todo es una opción), no en blanco, nulo, visible, texto
- ID de persona: 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) ; Conjuntos de selección única, no es nulo, no está en blanco, texto y visible
- Mis datos
- getListOfNames: esto se pone una lista de personas que se encontraban en la empresa en el intervalo de fechas proporcionado en la instalación y en donde dada su estado de empleado se encuentra 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 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 durante el procesamiento del 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 corrigió 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>
Ésta es la forma en que está configurado y getListOfNames es por eso que el error es un tiro, 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 el valor puede ser solo 1 o 1 ~ 2 ~ 3
Sin embargo ... cuando intento y pongo join (¡Parámetros! viewOption.value, "~") como el valor de anothe El parámetro de consulta del conjunto de datos r 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 he dicho esto, pero el proc/conjunto de datos almacenado que lanza el error utiliza un parámetro con el mismo conjunto en unos 5 otros informes (He tratado de copiar y pegar las secciones de código correspondientes de los informes de trabajo pero sigo teniendo el error). Entonces, ¿qué pasa con este?
Sé que dijo que ha intentado esto antes, pero he tenido problemas parecidos en servicios de la información. Tuve que intentarlo desde cero y pareció funcionar, a veces parece tener errores. También ejecute siempre su sproc desde SQL Server para ver si funcionan antes de llevarlo a RS. Finalmente, cuando agrega parámetros adicionales en una fecha posterior, por algún motivo, el código subyacente del informe no se actualiza y debe ingresar manualmente el código ... muy defectuoso. +1 aunque para detalles en profundidad. – JonH
Acabo de publicar algo como una "respuesta" a esto ... El informe era demasiado detallado y complejo como para comenzar de nuevo, así que simplemente copié el código y pareció funcionar. Sin embargo, me gustaría saber por qué sucedió esto. Siempre me aseguro de que el trabajo del proc almacenado y reutilice algunos de ellos ... También aprendí a verificar siempre el código detrás de SSRS. –