In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Error en DataField, Metodo HasChanged utilizando AddCalcField

Foro público de Xailer en español
Responder
TSALES
Mensajes: 15
Registrado: Lun Ago 09, 2010 10:40 am

Error en DataField, Metodo HasChanged utilizando AddCalcField

Mensaje 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
Adjuntos
Pruebas.zip
(3.13 KiB) Descargado 8 veces
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Error en DataField, Metodo HasChanged utilizando AddCalcField

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder