E
ezequielmontoya
Guest
Thank you, Tom. I rewrote part of the code approximately like yours. This is now the RETURN trigger: DO: IF VALID-EVENT(FOCUS, "VALUE-CHANGED") THEN DO: FIND InvTarjeta WHERE invtarjeta.periodo = giperiodo AND invtarjeta.perinv = giperinv AND InvTarjeta.NroTarj = Barra NO-LOCK NO-ERROR. IF AVAILABLE invtarjeta THEN DO: RUN _ActualizaPesos. /* More stuff */ END. ELSE DO: /* More other stuff */ END. END. Barra:SCREEN-VALUE = "". APPLY "ENTRY" TO Barra. RETURN NO-APPLY. END. And this is the procedure _ActualizaPesos: DO TRANSACTION: DEFINE BUFFER bInvTarjeta FOR invtarjeta. FIND binvTarjeta EXCLUSIVE-LOCK WHERE ROWID(binvTarjeta) = ROWID(invTarjeta) NO-WAIT NO-ERROR. IF NOT AVAILABLE binvTarjeta THEN DO: /* Some stuff */ MESSAGE invtarjeta.nrotarj "está bloqueada, por favor reintente el barrido." VIEW-AS ALERT-BOX WARNING. RETURN NO-APPLY. END. ASSIGN bInvTarjeta.FlgBarrido = YES bInvTarjeta.InvPeso = InvTarjeta.SdoNeto bInvTarjeta.InvNroMet = InvTarjeta.NroMet. FIND CURRENT binvtarjeta NO-LOCK NO-ERROR. END. END PROCEDURE. I putted the transaction part in a separated procedure, and into a redundant transaction. I guess this is also strongly scoped, am I right this time? Unfortunately I won't be able to try this until next year, I mean this tuesday. So thanks again and a really good 2018 for everybody!
Continue reading...
Continue reading...