XSL - sumar celdas

 
Vista:

sumar celdas

Publicado por leandro (1 intervención) el 27/07/2005 18:32:54
esto me cuenta cuantos registros hay en la tabla que le paso al xsl para que tranformde desde aspx.net
<xsl:variable name="cant" select="-(count(//Table))" />

antes la tabla tenia 3 registros entonces la suma de los totales lo hacia asi poniendo esta linea al finalizar el for each que guardaba los registros de la tabla

<Cell ss:StyleID="s47" ss:Formula="=SUM(R[-3]C11:R[-1]C)"><Data ss:Type="Number" /> </Cell>

como ahora la tabla es dinamica osea no es fija de 3 registros para la suma necesito saber cuantos registros para atras de donde esta el total tengo que sumar, entonces pongo esto pero esto no anda osea no interpreta el $cant, pero la variable se llena bien ya que la prove agregando el valor de la variable en una celda y eso anda.
<Cell ss:StyleID="s47" ss:Formula="=SUM(R[$cant]C11:R[-1]C)"><Data ss:Type="Number" /> </Cell>

espero que me entiendan y me puedan ayura, cualquier cosa no duden en preguntar que veo de que forma aclarar un poco mas.

gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Realizar suma dinámica de registros en una tabla en XML

Publicado por Alejandro (227 intervenciones) el 05/07/2023 00:54:32
Para lograr una suma dinámica de registros en una tabla en XML utilizando XSL, puedes seguir los siguientes pasos:

1. Primero, asegúrate de tener la variable `$cant` correctamente definida y con el valor deseado de la cantidad de registros.

2. Luego, utiliza la función `sum()` de XSL para realizar la suma. Puedes aplicarla directamente en el atributo `ss:Formula` de la celda de total.

Ejemplo:
1
2
3
<Cell ss:StyleID="s47" ss:Formula="=SUM(R[position() &gt;= count(//Table) - $cant + 1]C11:R[-1]C)">
  <Data ss:Type="Number" />
</Cell>

En este ejemplo, utilizamos la función `position()` para obtener la posición actual del elemento `Table`. Luego, comparamos si la posición es mayor o igual a `count(//Table) - $cant + 1`, lo que nos permite sumar solo los registros deseados desde `$cant` posiciones antes del último registro.

Asegúrate de ajustar correctamente la expresión `R[position() >= count(//Table) - $cant + 1]C11` para que seleccione el rango de celdas que deseas sumar.

Con esta solución, la suma se adaptará dinámicamente a la cantidad de registros en la tabla, permitiéndote obtener el resultado deseado. Recuerda ajustar las expresiones y los atributos según la estructura de tu archivo XML y las necesidades específicas de tu caso.

¡Buena suerte con tu proyecto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar