SYS_ROWVER basically does what Emmitt suggested with triggers but all the heavy lifting is done by R:Base: it adds the SYS_ROWVER column, sets it to 1 for all rows, creates the trigger and increments SYS_ROWVER each time a col in a row is changed. So any changed row will have a SYS_ROWVER value > 1, I don't even need to compare it to the original table. woohoo!
SET AUTOROWVER ON
SET ERROR MESSAGE 2038 OFF
DROP TABLE RcvRecrd
SET ERROR MESSAGE 2038 ON
CREATE TEMP TABLE `RcvRecrd` +
( column defs )
SET AUTOROWVER OFF
This could be fun:
IF SYS_ROWVER > 4 THEN
SET VAR vMsg = ('Make up your mind, woodja?')
ENDI
But I found that I need a PROPERTY TABLE RcvRecrd 'POST' in my Exit button EEP in case they change a DBEdit and click the Exit button without first clicking another object (and therefore changing focus).
Having the POST in the Exit button EEP precludes having to put a POST command in every DBEdit OnExit EEP.
Interestingly, the PROPERTY TABLE RcvRecrd 'POST'in an OnRowExit table EEP _doesn't_ post the changed data or update SYS_ROWVER as I found with this code at the beginning of my OnExit EEP:
SET TRACE ON
PROPERTY TABLE RcvRecrd 'POST' --SYS_ROWVER updates as soon as this line executes
BROWSE sys_rowver,TxnHistSeqNbr,LineNbr,BatesNbr,RcvdQty,PackNbr FROM RcvRecrd
Thanks Karen & Emmitt
Doug
[email protected] wrote:
Doug: In addition to what Emmitt says, remember the good old sys_rowver column? If you enable that, then you could copy the original sys_rowver value into a non-computed column in your temp table along with the regular dynamic sys_rowver column. Then after exiting the row see if the new sys_rowver version is newer than the old saved value. I've never tried it, but I kinda like this idea. I could probably use this somewhere.
Karen

