lcCod = [000007] && na primeira estação utilizamos o codigo 000001, para caracterizar produtos diferentes. SET MULTILOCKS ON SET REPROCESS TO 5 SECONDS && para aguardar até 5 segundos. lBuff = CURSORSETPROP("Buffering",2,[g2_estoq]) lBuff2 = CURSORSETPROP("Buffering",3,[g2_estmo]) lUp = .T. lUp2 = .T. BEGIN TRANSACTION m.lnSaldo = 0 UPDATE gereswin!g2_estoq SET qtd_est = AtualizaEstoque(qtd_est,m.lnValor,@m.lnSaldo) WHERE codigo=lcCod lUp = TABLEUPDATE(2,.t.,[g2_estoq],laErroEst) INSERT INTO g2_estmo (codigo,qtd_lanca,qtd_saldo,historico) VALUES(m.lcCod,m.lnVAlor,m.lnSaldo,[paulo cesar]) lUp2 = TABLEUPDATE(2,.t.,[g2_estmo],laErroMov) IF !lUp OR !lUp2 EXIT ENDIF wait window [Iniciar a segunda estação e Desligar a primeira estação...] IF llRollBack ROLLBACK = TABLEREVERT(.t.,[g2_estoq]) = TABLEREVERT(.t.,[g2_estmo]) ELSE IF lUp AND lUp2 END TRANSACTION ELSE = AERROR(laErro) = MESSAGEBOX([Alteração de dados não realizada ...],0+16,[Erro]) ROLLBACK = TABLEREVERT(.t.,[g2_estoq]) = TABLEREVERT(.t.,[g2_estmo]) ENDIF ENDIF FLUSH FUNCTION AtualizaEstoque LPARAMETERS lnQtd,lnLanca,lnSaldo m.lnSaldo = m.lnQtd + m.lnLanca RETURN m.lnSaldo RETURN