begin transaction Replace table2.value with table2.value+numAmount if !tableupdate(.T.,.F.) && assure we have all values in fields that are latest for i=1 to fcount() if !type(field(i))=='G' && general type fields are not comparable if !(OldVal(field(i))==CurVal(field(i))) or IsNull(OldVal(field(i)) and !IsNull(CurVal(field(i)) or !IsNull(OldVal(field(i)) and IsNull(CurVal(field(i)) if getfldstate(field(i)) > 1 && field is changed && here we see this field is changed on server and we're trying to write it over && here you can improve to do not overwrite latest changes or overwrite them && or just show message box to user about change && in case to leave value from another user on the server: replace (field(i)) with CurVal(field(i)) && in case to overwrite value by you - do nothing. endif endif endif endfor && again, do updating of the Value field by using as latest amount as possible Replace table2.value with CurVal(table2.value)+numAmount = tableupdate(.T.,.T.) endif end transactionHTH.