Access - duda

   
Vista:

duda

Publicado por Alejandro (2 intervenciones) el 16/11/2015 10:50:53
Buenas tardes quiero crear un secuencial en ACESS y cuando cambie de sociedad me reinicie la secuencia. ejemplo: NA0000100000 la secuencia seria los 4 últimos dígitos en 1 y cuando cambie el código sociedad (00001) me lo reinicie.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de xve

duda

Publicado por xve (114 intervenciones) el 16/11/2015 11:21:37
Hola Alejandro, no se entiende tu pregunta...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda

Publicado por Alejandro alejandro.gestoso.barbero@gmail.com (2 intervenciones) el 16/11/2015 11:38:24
Buenas tardes
Os lo explico con un ejemplo tengo este campo NIF NA000010001 donde NA es fijo+código sociedad (5 dígitos´+ nº aleatorio (0001) quiero convertir el nº aleatrio en un secuencia (1,2, 3 ) y que se me reinicie cada vez que cambie de código de sociedad.

Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda

Publicado por Enrique Heliodoro (1663 intervenciones) el 16/11/2015 15:06:57
Hay mucha literatura sobre 'falsos autonumericos' y todo se basa en definir y tratar por separado las diferentes partes de esa expresión

En principio parecen ser tres, una constante (dos caracteres) la variable que define a la empresa (cinco caracteres) y el valor incremental para cada empresa (cuatro caracteres).

Para crear un nuevo dato emn ese conjunto, es indispensable conocer la empresa implicada (sin ese dato, el proceso no funciona) y ese dato no esta (de momento) definido.

El resto ...

El incremental (para cualquier empresa) siempre será el siguiente al mayor existente y los existentes se obtienen con la función DMax tomando parte del texto y convirtiéndolo a numero.
Como se desconoce de donde procede el dato 'empresa' y su formato de origen, se partirá del supuesto de que su formato será (00000)

Obteniendo el incremental genérico:

zzzzz = DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]")

Como deseamos diferenciar empresas, aplicamos un filtro:
zzzzz = DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquí la empresa] & "'")

Si no existen datos (la primera factura de una empresa) la función devolverá un null, la función NZ adecuadamente aplicada nos devolvería un cero:
zzzzz = Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquí la empresa] & "'"), 0)

Tenemos el mayor de los datos de la empresa (o un cero), asi que lo incrementamos:
zzzzz = Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquí la empresa] & "'"), 0) +1

Pero ello nos devolvería un 1, 2, 3 ...... y asi no nos es valido, le damos formato a cuatro dígitos:
zzzzz = Format(Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquí la empresa] & "'"), 0) +1,"0000")

Ya disponemos del numero, solo hace falta añadir empresa y constante:
zzzzz = "NA" & [aquí la empresa] & Format(Nz(DMax("Val(Right([campo de la tabla],4))", "[la tabla con datos]", "Mid([campo de la tabla],3,5) = '" & [aquí la empresa] & "'"), 0) +1,"0000")

Y recordar que (en este ejemplo) se supone que la empresa viene 'de fabrica' con el formato '00000', si no fuera asi, se le puede aplicar a función format (como antes se aplico al numero incremental) para obtener de un uno (1) un '00001'

El método esta recreado aquí y sobre la marcha, espero que no me quedase algo en el tintero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda

Publicado por Jesús Manuel (202 intervenciones) el 16/11/2015 14:51:15
[url]Mira el ejemplo 4 en este link http://www.accessyexcel.com/2014/04/17/[/url]

Aquí puedes ver como comparar parte de la una cadena con otra para hacer un autoincrementable.
En tu caso tendrías que pasar de la referencia al año y cambiarlo por NA y la variable con el código de sociedad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar