2011-03-09 16 views
25

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?

+1

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

+0

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. –

Respuesta

18

Encontré en mi situación que en realidad el nombre de los parámetros de la carcasa había cambiado ligeramente y estaba arrojando el mismo error.

Tuve que cambiar el nombre a la carcasa correcta, y luego buscar en el código de atrás a cualquier cosa que haga referencia a ese parámetro y corregir su carcasa. Desplegado bien después de eso.

+3

esta es una vieja pregunta y ya no trabajo con esto ... pero gracias por la respuesta. SSRS es algo divertido; no estoy seguro de si fue mejor. finalmente, entré en la base de datos del servidor sql real detrás de todos los informes y busqué alguna solución. Sin embargo, definitivamente tienes razón, tiene algo que ver con algo que distinga entre mayúsculas y minúsculas. Me mostraría, el usuario, completamente igual, pero en algún lugar en el DB era diferente. Le daré la respuesta a esta pregunta b/c es mejor tarde que nunca. ¡Gracias! –

+3

Punto de aclaración aquí - es un código que solo es visible en el xml que tiene el problema de la carcasa. Para solucionarlo, tiene Código de vista y luego lo encuentra y lo repara. Muy desagradable –

+0

¡Eso es SSRS para ti! Un alto directivo me explicó por qué. Si tiene que tener una situación que ejecute un trabajo automatizado, ¡todo tiene que ser exacto! Cualquier cambio menor y fallará. – logixologist

1

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 muy gracioso, aunque ni siquiera sé lo que realmente estaba causando el problema ahora ...

¿Alguna idea sobre eso?

(reinicié SSRS varias veces, reinicié mi computadora varias veces, eliminé los archivos .data, borré la copia del servidor aunque esto estaba sucediendo en mi computadora solo para estar seguro ... durante todos esto, por cierto)

+0

JonH en realidad tenía la respuesta a esto, pero puso su sugerencia como un comentario, no como una respuesta real ... Cuando SSRS tiene problemas como este, me vuelve loco porque en realidad no hay nada malo que sea visible; el software real está teniendo problemas. –

28

Intente cambiar el orden de los parámetros usando las flechas arriba/abajo.

Deben aparecer en el orden de dependencia.

+0

Esto me solucionó el problema. Gracias. – Robbert

+0

Esto resolvió un problema que estaba teniendo también. Si dos conjuntos de datos necesitan el mismo parámetro, y uno de ellos depende de la salida del otro, el parámetro común debe aparecer en la parte superior de la lista. –

1

El problema también ocurre si hace referencia a un parámetro "demasiado pronto", p. desde dentro de OnInit superpuesto. En ese caso, ya no es posible utilizar 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.

+0

+1 por responder a una vieja pregunta ... gracias. Todavía me inclino por la respuesta de @logixologist porque mis problemas se resolvieron borrando las referencias al informe en todos los lugares posibles y luego volviendo a subir. Sin embargo, busqué su respuesta justo ahora y no tenía idea de nada de eso cuando estaba trabajando con SSRS. Creo que su respuesta habría resuelto muchos otros problemas que tenía en el momento en que escribí esta pregunta si lo hubiera sabido. –

10

Reordenar los parámetros del informe según 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/recreando el parámetro del informe, asegúrese de que el orden sea correcto.

+0

Esto resolvió mi problema, ¡gracias! ¡¡Pero por qué!! Ahora puedo ver que en el panel Datos de informe, si selecciona un parámetro, se activan dos flechas pequeñas en la barra de herramientas superior del panel. Aquí puede mover los parámetros hacia arriba y hacia abajo para ordenarlos. –

0

Tuve 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.

5

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 todavía tenía deletreo en mayúsculas en lugar de minúsculas

+0

esto funcionó para mí + 1 – Pramesh

0

También tuve este problema, siguiendo todas las respuestas anteriores que me ayudaron.

Lo complicado con el mío es que el conjunto de datos era un conjunto de datos SSAS por lo que 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'.

4

Esto podría deberse principalmente a que el nombre del parámetro no se actualiza en el conjunto de datos.

Este article helped me resolve it

When editing Parameters (names or case) for a Dataset within SSRS you may encouter the previous error message when you preview the report. While on the surface it may appear that the parameter has the same case in the Parameter settings and the Dataset query – there is another place where a change is required.

  1. Open the Dataset properties for the Dataset (s) that use the Parameter in the error message.
  2. Select the Parameters property in the left list pane.
  3. Click the Expression Editor button for the specified Parameter.

enter image description here

  1. Here you will notice that the Expression is underlined in red. This is where you will need to correct the case of the Parameter name.

    enter image description here

Cuestiones relacionadas