Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Codigo character mas secuencia numerica
Message
De
19/03/2003 08:28:31
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivie
 
 
À
19/03/2003 07:50:22
Mayra Suero
International Systems Developers
Santiago, République Dominicaine
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
00767447
Message ID:
00767471
Vues:
14
>Hola a todos. Deseo saber si hay algun tipo de datos que yo pueda tener una cadena de caracter mas una secuencia numerica. Ejemplo
>Si tengo nombres mas apellidos entonces quiero que mi codigo se genere de la siguiente manera la tres primera letra del apellido mas las dos primera letra del nombre mas una secuencia numerica que se vaya incrementando pero que todo esto se genere despues de yo hacer digitado el nombre mas el apellido. yo se que con substr yo podria sacar la letra del nombre y la del apellido lo que no tengo idea es combinando eso mas la secuencia numerica y que tipo de datos usar.
>
>Mayra Jimenez que me devuelva JIMMA001
>
>Gracias

Para convertir numérico a carácter, normalmente uso str(), pero en este caso, te rellenaría con espacios. Para que te rellene con ceros, utiliza padl(), como sigue:
? left("JIMENEZ", 3) + left("MAYRA", 2) + padl(1, 3, "0")
Para obtener la secuencia, crea una tabla para guardar el siguiente número a utilizar (diferentes registros de la tabla pueden guardar diferentes secuencias), y escribe una función para devolver ese valor, mientras se incrementa el valor en la tabla. Te paso la función que yo utilizo para este fin.

Saludos,

Hilmar.
**********************************************************************
FUNCTION SerialNumber(tcSequence)
	* Get serial number. Used mainly to generate primary keys.
	* The easiest way to achieve this is to call this function from a fields default value.
	* Example: default value for primary key "Client" of table "Client" = SerialNumber("Client")
	* This function accesses table SerialNumber. Fields: Sequence C(30), NextNum I.
	tcSequence = lower(tcSequence)
	local lnSelect
	lnSelect = select()
	if used("serialnumber")
		select serialnumber
	else
		select 0
		use serialnumber
	endif
	set order to "sequence"
	seek padr(tcSequence, len(sequence))
	if not found()
		append blank
		replace sequence with tcSequence, nextnum with 1
	endif
	local lnReturnValue
	if lock()
		lnReturnValue = nextnum
		replace nextnum with nextnum + 1
	else
		lnReturnValue = -1
	endif
	unlock
	select (lnSelect)
	return lnReturnValue
ENDFUNC
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform