>lcOnError=ON("ERROR") ON ERROR llError=.T. IF PCOUNT()=4 AND TYPE('tcTableName')="C" AND TYPE('tcField1')="C" ; AND TYPE('tcFieldSearch')="C" IF USED("&tcTableName") IF TYPE('tcField2')="C" IF !EMPTY(&tcTableName..&tcField2) lcNameSearch=LOWER(&tcTableName..&tcField2) ELSE lcNameSearch=LOWER(&tcTableName..&tcField1) ENDIF ELSE lcNameSearch=LOWER(&tcTableName..&tcField1) ENDIF IF &tcTableName..&tcFieldSearchlcNameSearch IF RLOCK("&tcTableName") REPLACE &tcTableName..&tcFieldSearch WITH lcNameSearch IN &tcTableName UNLOCK IN &tcTableName llOk=not llError ENDIF ENDIF ENDIF ENDIF ON ERROR &lcOnError RETURN llOk
LPARAMETERS tcTableName, tcField1, tcField2, tcFieldSearch LOCAL lcNameSearch, llOk, lcOnError, llError, lcField1Val, lcField2Val lcOnError=ON("ERROR") *-- initialize llOk to .T. llOk = .T. ON ERROR llError=.T. IF PCOUNT()=4 AND TYPE('tcTableName')="C" AND TYPE('tcField1')="C" AND TYPE('tcFieldSearch')="C" IF USED(tcTableName) IF TYPE('tcField2')="C" *-- store these to vars instead of evaluating them each time * also, use Eval() instead of macro expansion * ForceExt() is part of VFP6, prior to that it's in FoxTools.fll lcField1Val = Eval(ForceExt(tcTableName,tcField1)) lcField2Val = Eval(ForceExt(tcTableName,tcField2)) IF !EMPTY(lcField2Val) lcNameSearch=LOWER(lcField2Val) ELSE lcNameSearch=LOWER(lcField1Val) ENDIF ELSE lcNameSearch=LOWER(lcField1Val) ENDIF *-- again, use Eval() instead of macro expansion IF Eval(ForceExt(tcTableName,tcFieldSearch))<>lcNameSearch *-- the record is already locked **IF RLOCK(tcTableName) REPLACE (tcFieldSearch) WITH lcNameSearch IN (tcTableName) **UNLOCK IN (tcTableName) llOk=not llError **ENDIF ENDIF ENDIF ENDIF ON ERROR &lcOnError RETURN llOk**************