Salut,
il te faudra passer par une exécution dynamique "ligne à ligne", cad :
1 - Récupération de la ligne que l'on veut traiter
2 - Extraction de la formule (format texte)
3 - Reconstruction de la requete UPDATE en insérant la formule comme si c'était des champs de la table
4 - Exécution de la requete "UPDATE"
5 - ligne suivante
Exemple avec SQL-Server (mais tu peux faire çà dans n'importe quel language !)
/* table TEMPORAIRE de test */
CREATE TABLE #LA_TABLE
(
_ID int identity(1,1), /*Simule une PK*/
R varchar(35), A varchar(35), CA float, CH float, TX float, TX_1 float,
FORMULA varchar(500),
RESULTAT float
);
/* Les données de test */
INSERT INTO #LA_TABLE VALUES('R1', 'A1', 100.0, 20.0, 0.8, 0.0, '-(CA+CH)*TX', null);
INSERT INTO #LA_TABLE VALUES('R2', 'A1', 200.0, 10.0, 0.0, 0.5, '-(CA+CH)*TX_1', null);
/* Boucle sur chaque ligne (SELON _ID) */
DECLARE
@sql varchar(500),
@tmpFormule varchar(500),
@cpt int
SET @cpt = 1
WHILE @cpt <= (SELECT max(_ID) FROM #LA_TABLE)
BEGIN
/* Récupère la formule */
SELECT @tmpFormule FORMULA FROM #LA_TABLE WHERE _ID @cpt
/* Exécute l'UPDATE de la ligne selon la formule */
SET @sql 'UPDATE #LA_TABLE SET RESULTAT '+@tmpFormule+' WHERE _ID = '+cast(@cpt as varchar)
EXECUTE( @sql );
/* Ligne suivante */
SET @cpt = @cpt + 1
END
/* Vérif RESULTAT */
SELECT * FROM #LA_TABLE /*ici résultat contient les bonnes valeurs -96 et -105*/
DROP TABLE #LA_TABLE;
Bye...