Ayuda con autonuméricos

Hola experto:
Tengo un problema con los autonuméricos.
Quiero generar una clave aleatoria cada vez que de de alta a un cliente en mi base de datos, pero el campo autonumérico aleatorio es muy grande y aveces pone número negativos, además sólo necesito 8 dígitos, intenté poner una regla de validación con el generador de expresiones:
CVE_CTE > 0 AND CVE_CTE < 10000
Pero sigue generando números muy grandes.
La clave que en teoría necesito que salga es:
PR00000001
PR00001020
PR12350001
.
.
ETC.
En caso de usar números consecutivos como le hago para que al eliminar un registro, los demás no recorran su numeración p/e:
Tengo el 001,002,003 y si elimino el 002, quiero que queden guardados en la tabla: 001,003 sin que recorra el numero de cada registro
De antemano gracias y saludos
Respuesta
1
A tu segunda pregunta, el autonumérico estándar funciona así como tú quieres. Si eliminas no corre hacia atrás... Excepto en que, si tienes eliminados al final, te los "limpia" cuando compactas la base de datos.
Respecto al autonumérico aleatorio por diseño de tablas, su valor máximo es el Entero largo, unos dos mil millones, por lo que puede superar los 8 dígitos, llega a tener 10.
Para limitarlo a valores entre 1 y 99.999.999 habría que usar código, y la función "rnd". (Entre 1 y 99.999.999 para 8 cifras máximo)
Por ejemplo:
Function AutoIncrementoAleatorio8()
AutoIncrementoAleatorio8 = Int(99999999 * Rnd + 1)
End Function
A eso lo puedes formatear con "00000000" si quieres devolver una cadena con longitud fija a la que agregar tu prefijo, por ejemplo
Function AutoIncrementoAleatorio8()
AutoIncrementoAleatorio8 = Format(Int(99999999 * Rnd + 1), "00000000")
End Function
o bien
Function AutoIncrementoAleatorio8()
AutoIncrementoAleatorio8 = "PR" & Format(Int(99999999 * Rnd + 1), "00000000")
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas