SCAN Replace MyPK with NewID() EndSCANHTH
FUNCTION NewID( tnStartID, tcAlias ) *Set PATH to FULLPATH('DATA') LOCAL lcAlias, lcOldReprocess, lnOldArea, lnCounter, lnStartID lnOldArea = SELECT() && Save current work area IF PARAMETERS() < 1 && Did we get an alias passed? lcAlias = LOWER( ALIAS()) && If not, take the current one lnStartID = 1 ELSE && At least 1 param passed lnStartID = tnStartID If PARAMETERS() = 2 && Alias passed? lcAlias = LOWER( tcAlias) Else lcAlias = LOWER( ALIAS()) Endif ENDIF lcOldReprocess = SET('REPROCESS') SET REPROCESS TO AUTOMATIC && Lock until user presses Esc IF NOT USED( "COUNTER") USE COUNTER IN 0 EXCLUSIVE ENDIF SELECT COUNTER IF not SEEK( lcAlias, "COUNTER", "TableName") INSERT into COUNTER (TableName, Value) values ( lcAlias, lnStartID) ELSE IF RLOCK() REPLACE COUNTER->value WITH COUNTER->value + 1 UNLOCK ENDIF ENDIF lnCounter = COUNTER.value USE SELECT (lnOldArea) SET REPROCESS TO lcOldReprocess RETURN lnCounter ENDFUNC