Página 1 de 1
Error en DataField, Metodo HasChanged utilizando AddCalcField
Publicado: Mié Abr 17, 2024 6:28 pm
por TSALES
Hola team,
Al utilizar un campo calculado y realizar un update, lanza un error de diferencia de tipos de datos.
El problema creo que está en el metodo InitValue.
Os adjunto un ejemplo donde se puede reproducir.
Saludos
Toni Sales
Re: Error en DataField, Metodo HasChanged utilizando AddCalcField
Publicado: Jue Abr 18, 2024 9:23 am
por ignacio
Buenos días
Código: Seleccionar todo
WITH OBJECT ::oSQLQuery1:AddCalcField( "NotaActiva", {|| ::oSQLQuery1:Campo2 == 0 } )//, {|oField| ( ::oSQLQuery1:Campo2 == 0 ) } )
:cType := "L"
:Value := ( ::oSQLQuery1:Campo2 == 0 )
:OnGetValue := {|oField, Value| ( ::oSQLQuery1:Campo2 == 0 ) }
:OnSetValue := {|oField, Value| ::oSQLQuery1:Campo2 := IF( Value, 0, 4 ) }
END
OnGetValue retorna un valor lógico, mientras que OnSetValue generá un valor numérico. Esto no es posible. Los tipos han de coincidir. Intente que coincidan. Por ejemplo:
Código: Seleccionar todo
:OnSetValue := {|oField, Value| ::oSQLQuery1:Campo2 := IF( Value, 0, 4 ), Value }
No obstante, le echaré un vistazo para evitar que se realice la comprobación de si es necesario un Update() en campos calculados.
Un saludo