IF !empty(this.controlsource) WITH this IF .Value<>EVAL(.controlsource) lIsField=.F. nDots=OCCURS(".",.controlsource) DO CASE CASE nDots > 1 && object property lIsField=.F. CASE nDots = 1 && property or field uObjTest=SUBSTR(.controlsource,1,AT(".",.controlsource)-1) uPropTest=ALLTRIM(SUBSTR(.controlsource,AT(".",.controlsource)+1)) IF TYPE(uObjTest)="O" IF PEMSTATUS(EVAL(uObjTest),uProptest,5) && property exist lIsField=.F. ELSE && assume controlsource is a field lIsField=.T. ENDIF ELSE && assume controlsource is a field lIsField=.T. ENDIF OTHERWISE && nDots=0 * simple test, if fsize=0 it's not a field IF FSIZE(.controlsource) = 0 lIsField=.F. ELSE lIsField=.T. ENDIF ENDCASE IF lIsField && field cReplace="REPLACE "+.controlsource+" WITH "+; IIF(TYPE(".value")="N",ALLTRIM(STR(.value)),; IIF(.value=.t.,".T.",".F.")) &cReplace ELSE &&property or variable cReplace=.controlsource+" = "+; IIF(TYPE(".value")="N",ALLTRIM(STR(.value)),; IIF(.value=.t.,".T.",".F.")) &cReplace ENDIF ENDIF ENDWITH ENDIF