Bonjour tout le monde.
Je suis nouveau parmi vous.
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
à chaque clonage d'une colonne, vous rajoutez le total automatique avec ceci :
[windev]ExécuteFAA(MaTableMaColonne,faaColonneAjouteTotal).[/windev]
Bien entendu le nom de la colonne doit être saisi par indirection
Remarque : "faaColonneAjouteTotal", appliqué sur une colonne, si colonne n'a pas de total automatique, elle le rajoute et vice versa
si on l'applique une 2ème fois, elle le supprime.
-
Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !Rejeter la notice
WD Table avec colonne : Calcul du total par programmation
Discussion dans 'Windev' créé par LAPIPE2018, Sept 23, 2019.
Un ejemplo para que lo adaptes y desde luego, que se mejore: Sólo crea una tabla y un botón donde va el siguiente código:
[windev][windev]
// Declaración de Variables
nLigne is int
UneColonne is Control
nColumnas is int = TableCount(TABLE_cTable, toColumn)
nCompteur, nSResul are int = 0
// Vaciar la tabla
TableDeleteAll(TABLE_cTable)
// Eliminar las fórmulas
TableFormulaDeleteAll(TABLE_cTable)
// Llenar la tabla de valores para el ejemplo
FOR x = 1 _A_ 100
TableAddLine(TABLE_cTable,Random(-100,100),Random(-100,100),Random(-100,100),Random(-100,100),Random(-100,100),Random(-100,100))
END
// Recorrer la tabla por columna
FOR nColonne = 1 _TO_ nColumnas
UneColonne <- TableEnumColumn(TABLE_cTable, nColonne)
nLigne = TableFormulaAdd(UneColonne, "Suma", ProcInit, ProcAjout, ProcFin)
// Calcular para colorear la celda
IF nColonne > 1 THEN
UneColonne <- TableEnumColumn(TABLE_cTable, nColonne-1)
ELSE
UneColonne <- TableEnumColumn(TABLE_cTable, nColonne)
END
IF nSResul < 0 THEN
UneColonne[nLigne]..BrushColor = DarkRed
ELSE
UneColonne[nLigne]..BrushColor = iDarkGreen
END
END
// Colorear la última columna
UneColonne <- TableEnumColumn(TABLE_cTable, nColumnas)
IF nSResul < 0 THEN
UneColonne[nLigne]..BrushColor = DarkRed
ELSE
UneColonne[nLigne]..BrushColor = iDarkGreen
END
// Procedimientos para el cálculo
INTERNAL PROCEDURE ProcInit()
nCompteur = 0
nSResul = 0
RESULT 0
END
INTERNAL PROCEDURE ProcAjout(Accumulateur, ValeurCol)
// if val(ValeurCol) < 0 then result Accumulateur // No toma en cuenta los negativos en la suma
nSResul=nSResul+Val(UneColonne..Value)
RESULT Accumulateur + ValeurCol
END
INTERNAL PROCEDURE ProcFin(Accumulateur)
IF nSResul = 0 THEN RESULT 0
nSResul = Val(Accumulateur)
RESULT Val(Accumulateur)
END
[/windev][/windev]
LAPIPE2018 apprécie ceci.