Disculpa que no había venido a revisar, no me llegó el correo avisándome de tu nueva respuesta :(
Si no es mucho molestarte, podrías hacerme un breve ejemplo de como usar el RLOCK() si estoy utilizando clausulas SQL para actualizar las tablas?
Te dejo un pedacito de mi código en donde se presenta el problema...
SELECT psh_inventario
LOCATE FOR ALLTRIM(inv_codigo) == ALLTRIM(.text7.VALUE)
IF FOUND()
UPDATE psh_inventario SET inv_descripc = descr, inv_distribuid = prov, ;
inv_precbsf = ultprec, inv_adquisic = ultcomp, ;
inv_cantidad = cant, inv_observac = observac, ;
inv_pminbsf = pmin, inv_pmaxbsf = pmax, inv_stockmin = stockmin, ;
inv_stockmax = stockmax, inv_medmat = medmat, inv_iva = apiva, ;
inv_pganancia = gcia, inv_prango = rgo, inv_fechav = fechav ;
WHERE ALLTRIM(inv_codigo) == ALLTRIM(cod) ;
ELSE
INSERT INTO psh_inventario (inv_tipo, inv_codigo, inv_descripc, inv_distribuid, inv_precbsf, ;
inv_adquisic, inv_cantidad, inv_observac, inv_pminbsf, inv_pmaxbsf, ;
inv_stockmin, inv_stockmax, inv_medmat, inv_iva, inv_pganancia, inv_prango, inv_fechav) ;
VALUES ('MM', cod, descr, prov, ultprec, ultcomp, cant, observac, pmin, pmax, stockmin, stockmax, medmat, apiva, gcia, rgo, fechav)
ENDIF
IF pModif = 1
SELECT psh_tratamient
REPLACE trat_itempbsf WITH pmax, trat_ittotbsf WITH pmax * trat_itemcant ALL FOR ALLTRIM(SUBSTR(trat_itemdesc,1,30)) == ALLTRIM(SUBSTR(descr,1,30))
ENDIF