LOCAL ji, llError, lnErrCnt, lnRetry, lnRand STORE 0 TO lnErrCnt, lnRetry, lnRand CREATE TABLE testrand (crand c(14)) INDEX ON crand TAG crand CAND SET ORDER TO llError = .F. ON ERROR llError = .T. lnErrCnt =0 FOR ji = 1 TO 250000 lnRand = RAND()*(10^12) IF MOD(ji,1000)#0 ** every 1000 should fail m.crand = STRTRAN(TRANSFORM(lnRand,"999-9999-99999")," ","0") ENDIF INSERT INTO testrand FROM MEMVAR IF llError lnRetry=0 DO WHILE llError AND lnRetry<=10 && only retry 10 times llError= .F. lnErrCnt = lnErrCnt+1 WAIT WINDOW "Retries "+STR(lnErrCnt) NOWAIT lnRetry=lnRetry+1 lnRand = RAND()*(10^12) m.crand = STRTRAN(TRANSFORM(lnRand,"999-9999-99999")," ","0") INSERT INTO testrand FROM MEMVAR ENDDO IF llError ** still have an error MESSAGEBOX("Could not generate unique number.") EXIT ENDIF ENDIF ENDFOR ON ERROR