Expresión en Access

Según el soporte de Office.,.,esta expresión calcula un numero progresivo en access

Campo :Nombre ID

Tabla: Principal

en la tabla se tiene los siguientes valores:

Ejemplo: valor Inical --> "AL-100".,.,.,con la expresión se debe generar el siguiente valor "AL-101"

se coloca en propiedades "valor predeterminado"

="AL-" & Der(DMáx("[Nombre ID]";"Principal");Longitud:(DMáx("[Nombre ID]";"Principal"))-3)+1

Lo raro es que no funciona!!! alguien puede ayudar para que la expresión genere el siguiente valor para un registro nuevo en la tabla!

Grax!!

1 respuesta

Respuesta
1

Quítale los dos puntos después de "Longitud". Es decir:

="AL-" & Der(DMáx("[Nombre ID]";"Principal");Longitud(DMáx("[Nombre ID]";"Principal"))-3)+1

A ver cómo te va.

Excelente!! si funciono.,.,.,.gracias!!

Ahora quiero implementarlo en mi Bds pero ese valor debe ir personalizado!!

Ejemplo: el código que utilizo es el siguiente:

No_Control: 13-165C-0700 ....este seria el valor inicial

para los nuevos registros debo implementar un valor progresivo en los últimos 4 dígitos..,

Ejemplo: 13-165C-0701.....así sucesivamente.,.,.,.13-165C-0702.,..,etc.

por favor podrías ayudarme con este código! o expresión como valor predeterminado para nuevos registros!!

ya lo intente modificando el ejemplo anterior.-,.,.pero me dice #¡Tipo!.,.,.,y de ahí no paso!!!

Si utilizas el formato que indicas vas a tener un problema, que va a ser el cero del número final de tu código.

Para que nos entendamos, el primer cero de "0700"

¿Por qué? Pues porque al extraer el valor el proceso que realiza Access es:

- Extraigo el valor "0700"

- ¡Vaya! ¡Es un número! Pues así, ¿qué número es? Pues es el 700 (porque los ceros a la izquierda lógicamente no tienen valor)

- Le sumo una unidad

- El número resultante es 701

- Reconstruyo la expresión, lo que me queda así: 13-165C-701

Y es en ese proceso de reconstrucción cuando el cero de delante el 701 desaparece.

Si consideras ese cero como parte la la expresión "fija" el problema lo vas a tener cuando llegues a 1000, porque tu numeración te quedará así:

13-162C-0999

13-162C-01000

Y, en este caso, sí te sobrará el cero inicial de "01000"

De todas maneras si sólo cuentas la parte fija hasta el segundo guión (empezando a leer por la izquierda) tu expresión debería quedar así:

="13-165C-" & Der(DMáx("[Nombre ID]";"Principal");Longitud(DMáx("[Nombre ID]";"Principal"))-8)+1

A ver si, a pesar de los "inconvenientes" que te he mencionado, te sirve.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas