>>> lcFieldState = SUBSTR(GETFLDSTATE(-1),2) && The first character returns deletion status >>> lnOccurance = 1 >>> >>> lnPos = AT('2', m.lcFieldState, m.lnOccurance) >>> >>> DO WHILE m.lnPos > 0 >>> DO CASE >>> CASE !FieldChanged(FIELD(m.lnPos)) >>> >>>&& not changed >>> CASE INLIST(UPPER(FIELD(m.lnPos)), UPPER("cLast_Updated_User"), ; >>> UPPER("tLast_Updated_Date")) >>> >>>&& ignore >>> OTHERWISE >>> REPLACE cLast_Updated_User WITH ; >>> IIF(VARTYPE(m.gcUserID) == "C", m.gcUseriID, getuserid()), ; >>> tLast_Updated_Date WITH DATETIME() >>> lnPos = 0 >>> ENDCASE >>> IF m.lnPos > 0 >>> lnOccurance = m.lnOccurance + 1 >>> lnPos = AT('2', m.lcFieldState, m.lnOccurance) >>> ENDIF >>> ENDDO >>>>>
>>REPLACE cLast_Updated_User WITH ; >> IIF(VARTYPE(m.gcUserID) == "C", m.gcUseriID, getuserid()), ; >> tLast_Updated_Date WITH DATETIME() >>>
STORE GETFLDSTATE(-1) TO row_State FOR iField=RAT('2',m.row_State)-1 TO 1 STEP -1 IF FieldChanged(FIELD(m.lnPos)) ; AND !INLIST(UPPER(FIELD(m.lnPos)), UPPER("cLast_Updated_User"), ; && remove upper, VFP is not C ! UPPER("tLast_Updated_Date")) REPLACE cLast_Updated_User WITH ; IIF(VARTYPE(m.gcUserID) == "C", m.gcUseriID, getuserid()), ; tLast_Updated_Date WITH DATETIME() EXIT ENDIF STORE RAT('2',LEFT(m.row_State,m.iField)) TO iField NEXT