*********************************************************************************************** * Written by: Gregory A. Green * 980 Windmill Parkway * Evans, GA 30809 * (706) 651-1640 * ************************************************************************************************ * Routine for Increment to the next sequential ID number using 0-9, A-Z * *FUNCTION INCSEQ LPARAMETERS pcFieldName LOCAL lcOrgAlias, lcFirst, lnDecPlace, lcAlias, lcField, lnNdx, lnLen, lcNextID, lcFieldValue, llNext LOCAL lnChr lcOrgAlias = ALIAS() pcFieldName = ALLTRIM(pcFieldName) lcFirst = "1" lnDecPlace = ATC(".",pcFieldName) pcFieldName = ALLTRIM(pcFieldName) lnLen = LEN(pcFieldName) lcNextID = "" && Get next ID number llNext = .T. DO WHILE llNext && Loop to increment decimal places IF lnLen > 0 lnChr = ASC(SUBSTR(pcFieldName,lnLen,1)) DO fIncDigit WITH lnChr,llNext lcNextID = CHR(lnChr) + lcNextID lnLen = lnLen - 1 ELSE lcNextID = "1" + lcNextID EXIT ENDIF ENDDO IF lnLen > 0 lcNextID = LEFT(pcFieldName,lnLen) + lcNextID ENDIF RETURN ALLTRIM(lcNextID) ************************************************************************************************ PROCEDURE fIncDigit PARAMETER pnChr, plNext IF pnChr>=48 .AND. pnChr<57 && Check if digit is 0-8 pnChr = pnChr + 1 && Increment digit plNext = .F. ELSE IF pnChr = 57 && Check if digit is 9 pnChr = 65 && Set to character A plNext = .F. ELSE IF pnChr < 90 pnChr = pnChr + 1 && Increment digit plNext = .F. ELSE pnChr = 48 && Set to character 0 ENDIF ENDIF ENDIF RETURN