Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Incrementing Alpha ID's
Message
De
17/04/2007 13:50:40
 
 
À
16/04/2007 13:39:03
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Versions des environnements
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Divers
Thread ID:
01212864
Message ID:
01216908
Vues:
18
Below is code that I have used -- you can set the value to be incremented to any intial length:

lcValue = "000"
or
lcValue = "000000"
etc.

then call by:

lcValue = "00000"
lcValue = INCSEQ(lcValue)
***********************************************************************************************
* 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
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform