Olá!
Seu eu entendi bem, talvez essa maneira que tenho usado, seja útil para você.
Veja os exemplos.
FUNCTION Main()
LOCAL cSql := "", cSqlResult := ""
cSql := "UPDATE JPITEM SET"+;
" IEQTD#{ESNUMDEP} = IEQTD#{ESNUMDEP}" + ;
" #{cSinal} #{ESQTDE}" +;
" WHERE IDPRODUTO = #{ESPRODUTO}"
? "==== Exemplo 01"
cSqlResult := StrSwap2( cSql, {"ESNUMDEP" => LTrim(Str(1)), "cSinal" => "-", "ESQTDE" => LTrim(Str(210.40)), "ESPRODUTO" => LTrim(Str(123))} )
? cSqlResult
? ""
? "==== Exemplo 02"
cSqlResult := StrSwap2( cSql, {"ESNUMDEP" => LTrim(Str(2)), "cSinal" => "+", "ESQTDE" => LTrim(Str(45.90)), "ESPRODUTO" => LTrim(Str(345))} )
? cSqlResult
? ""
? "==== Exemplo 03"
cSqlResult := StrSwap2( cSql, {"ESNUMDEP" => LTrim(Str(9)), "cSinal" => "-", "ESQTDE" => LTrim(Str(440)), "ESPRODUTO" => LTrim(Str(145900))} )
? cSqlResult
? ""
RETURN NIL
O resultado deste teste é o seguinte:
==== Exemplo 01
UPDATE JPITEM SET IEQTD1 = IEQTD1 - 210.40 WHERE IDPRODUTO = 123
==== Exemplo 02
UPDATE JPITEM SET IEQTD2 = IEQTD2 + 45.90 WHERE IDPRODUTO = 345
==== Exemplo 03
UPDATE JPITEM SET IEQTD9 = IEQTD9 - 440 WHERE IDPRODUTO = 145900
Se resolve desta maneira, eu envio a function "StrSwap2", a qual estou desenvolvendo e testando.
Abraços