2009-12-01 39 views
8

estoy de vuelta con otra pregunta SSRS :-)SSRS Fila Grupo Grupo + Columna = RowNumber Edición

estoy tratando con datos de la encuesta. Tengo un procedimiento que devuelve los recuentos de respuesta de una organización por pregunta. Por lo tanto, mi informe se define como Group on Organization para row y Group on answer para columnas. Tanto el número de organizaciones como las respuestas son variables. Eso está funcionando como se esperaba. Intenté agregar un RowCount al lado de la organización para poder mostrar el rango, pero el hecho de que cada organización tenga una fila por pregunta significa que obtengo ocho filas por organización.

He aquí un ejemplo:
Chart

Aquí es mi definición de informe:
Chart
La expresión de RANK es actualmente: =RowNumber(Nothing)

Idealmente, el rango sería de 1, 2, 3, 4 , etc ... He intentado con el alcance del grupo de filas, el grupo de columnas y nada. No ayuda.

¡Cualquier ayuda sería muy apreciada!

Respuesta

1

Parece que he encontrado una solución, pero se siente como un truco ... Estoy dejando esto sin respuesta para ver si alguien más puede proporcionar una mejor solución (leer menos hackish).

Mi Expresión Rango es ahora:
=RowNumber(Nothing)/Count(Fields!AnswerText.Value)

Todo parece estar bien. Supongo que debería IIf (Count ... = 0, entonces RowNumber, de lo contrario lo que tengo ...

+0

Sin nada más que aparezca, este enfoque funciona aunque parezca un truco. Para mí, si muestra datos agregados, debería RowNumber en el agregado NO los datos brutos ... –

+0

Nota: Esta solución solo funciona cuando cada grupo contiene la misma cantidad de registros de detalles. – Dan

0

mejor que se puede hacer aquí, es hacer que la columna de rango igual a = RowCount()/8

Debido a que su seguro de cada fila visible contiene un total de 8 filas, esto debería funcionar bien.

+0

Jon, gracias por la respuesta. El problema es que olvidé mencionar que el número de respuestas es variable ... Olvidé mencionar que ... –

0

Agregue otra columna de rango al lado de la existente y coloque otra expresión en esa que tome el valor del rango (recuento de filas?) Y divídalo por 8. Luego haga que la columna de rango anterior sea invisible.

0

¿Estás absolutamente seguro de que el uso de RowNumber("NameOfOrganizationGroup") no funciona?

Haga clic en la matriz, haga clic en el cuadro de selección de la esquina superior izquierda para seleccionar todo, luego haga clic derecho en el borde de selección y obtenga propiedades. Cambie a la pestaña Grupos y mire los nombres de los grupos en la sección Filas. Eso es lo que entra el alcance de la función RowNumber()

Si usted ya sabe esto y lo probó, mis disculpas, no quise asumir que usted no lo sabía. No es 100% claro de su qu es que esta no es la solución.

2

Try usando:

runningvalue(Fields!AnswerText.Value,CountDistinct,"NameOfOrganizationGroup") 

Si es una matriz, cambie el nombre del ámbito del alcance fila para el alcance matriz.

24

Tenía el mismo problema frustrante; mucho tiempo perdido.Con el tiempo, esta solución también ayudó:

=RunningValue(CountDistinct("YourTableName"),Count,"YourTableName") 

truco aquí es no utilizar el nombre del grupo dentro de la tabla/matriz, pero el nombre de la tabla en sí. Y sí, uno pensaría que usar el nombre de la tabla para el alcance en la función RowNumber debería funcionar, pero no es así.

+0

Gracias, esto solucionó un problema que ha estado haciendo mi tuerca por días. –

+0

+1 por esto ... ¡esto ayudó a hacer maravillas! el nombre de la tabla para mí es el nombre de DataSet – Irfan

+0

. Creo que deberíamos ingresar DataSetName en lugar de '" YourTableName "', por lo que sería algo así como '= RunningValue (CountDistinct (" YourTableName "), Count," YourDataSetName ")' – pedram

2

Lo hago con código personalizado.

añadir esto a la sección de código en el informe de configuración:

Dim private count as integer = 0 
Dim private iniRow as integer = 0 
Public function nroFila(Byval rowNum as integer) as integer 
    if iniRow = 0 then 
     iniRow = rowNum 
    end if 

    if rowNum = iniRow then 
     count = 0 
    end if 

    count = count + 1 
    Return count 
End function 

A continuación, llamar a la función en una celda dentro del grupo:

=Code.nroFila(RowNumber(Nothing)) 
Cuestiones relacionadas