>>lnNext = GetNextModified(0) >>do while m.lnNext # 0 >> go m.lnNext >> if m.lnNext < 0 && new record >>*... >> else && update >>*... >> endif >> lnNext = GetNextModified(m.lnNext) >>enddo >>Cetin
> >CASE Not lInDBC AND (ATC("2", GetFldState(-1)) <> 0 OR ATC("3", GetFldState(-1)) <> 0) > * Field was edited - in Free Table > * Since free tables are not supported by transactions, > * we must process record by record > lnModRecord = GetNextMod(0) > DO WHILE lnModRecord <> 0 && loop locks all records > GO lnModRecord > llSuccess = RLOCK() && Try to lock record > IF Not llSuccess && Failed to lock record > lcErrorMessage = "Record in use by another user" > UNLOCK ALL > EXIT > EndIf > IF Not llHadMessage && so we don't repeat alert > * See if record(s) modified by another user > FOR lnFldCnt = 1 TO FCOUNT() > IF TYPE(FIELD(lnFldCnt)) = "G" && Skip for General fields > LOOP > ENDIF > IF OLDVAL(FIELD(lnFldCnt)) <> CURVAL(FIELD(lnFldCnt)) > llHadMessage = .T. > IF sysConfirm("The record has been changed by another user while you've been editing it. " + ; > "Do you want to overwrite the other user's changes with your own?") > llOverwrite = .T. > ELSE > llSuccess = .F. > UNLOCK ALL > EXIT > ENDIF > ENDIF OLDVAL() > ENDFOR > ENDIF Not llHadMessage > lnModRecord = GetNextMod(lnModRecord) > ENDDO >>