Pregunta

Parece que debería ser simple, pero todavía no puedo encontrar nada. En Reporting Services tengo una tabla con hasta 6 filas que tienen valores calculados y visibilidad dinámica. Me gustaría sumar estas filas. Básicamente tengo varios artículos de factura y quiero hacer un total. No puedo cambiar nada en el lado de la base de datos ya que mis procedimientos almacenados se usan en otras partes del sistema. Cada fila también extrae datos de un conjunto de datos diferente, por lo que no puedo hacer una suma del conjunto de datos. ¿Puedo sumar todas las filas con un pie de página? ¿De manera similar a sumar un número de filas en Excel? Parece muy redundante poner mi expresión de visibilidad de cada fila en mi fila de pie de página para calcular la suma.

¿Fue útil?

Solución

Algunas maneras de lograr esto:

1. Haga el cálculo en el SQL y sume ese campo, así:

SELECT Quantity, Amount, Quantity * Amount As TotalAmount FROM MyTable

Luego, simplemente use el campo TotalAmount en su fila Detalle y suméelo en el pie de página.

2. Cree un segundo conjunto de datos que calcule el total para usted y úselo en su pie de página en lugar de una suma:

=Sum(Fields!TotalAmount.Value, "MyTotalingDataset")

3. Hágalo usando un código personalizado. Haga clic con el botón derecho en el espacio Diseño, elija Propiedades y haga clic en la pestaña Código. Ponga el siguiente código:

Public Dim TotalAmount As Double = 0

Public Function CalculateRowTotal(ThisValue As Double, ThatValue As Double) As Double
    TotalAmount = TotalAmount + (ThisValue * ThatValue)
    Return ThisValue * ThatValue
End Function

En la banda Detalle, haga que la columna donde suma el campo tenga esta expresión:

=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value)

Esto ejecutará el código anterior y hará su cálculo más el cálculo de la suma total en el proceso.

La banda de pie de página muestra la suma total para que la columna tenga la expresión:

=Code.TotalAmount

Y ya terminaste. Solo tenga cuidado porque no tiene garantizado el orden en que se ejecutará su código y, para algunos informes, ejecutará primero el pie de página (por ejemplo, si usa la Suma de las filas en la banda Detalle), lo que haría que el total sea cero ya que los cálculos de la banda de Detalle aún no han sucedido, pero para el caso general esto debería funcionar.

Otros consejos

Puede cambiar la base de datos de la siguiente manera.

¿Sabía que puede obtener resultados agregados en SQL sin agregar los datos?

Simplemente agregue una columna adicional al conjunto de datos de la siguiente manera:  , SUM (OrderQty) OVER (PARTICIÓN POR SalesOrderID) COMO 'Total'

En la muestra anterior: OrderQty es el valor que desea sumar SalerOrderID es el equivalente de 'GROUP BY'

Puede usar la misma técnica con COUNT, AVG, etc.

Más información aquí http://msdn.microsoft.com/en-us /library/ms189461(SQL.90).aspx

En caso de que tenga un problema con el orden de ejecución, agregue un cuadro de texto debajo de la tabla y muestre TotalAmount en este cuadro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top