Access - "contador automatico" en formulario de Access

 
Vista:
sin imagen de perfil

"contador automatico" en formulario de Access

Publicado por rosy (12 intervenciones) el 18/03/2016 16:35:48
Buen dia Chicos!!

Aqui con una duda, espero me puedan ayudar, veran estoy trabajando en una base en access y me gustaria tener un campo en mi formulario donde se este actualizando de manera automatica los registros que van entrando a la misma, es decir si hago un registro que mi contador se actualice automaticamente por ejemplo 1/54, 2/54, 3/54 etc., cabe destacar que la terminacion 54 no sera siempre asi, hay otros donde tendra que ser 1/48, espero haberme dado a entender, muchas gracias Chicos.

saludos
rosy
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

"contador automatico" en formulario de Access

Publicado por Enrique Heliodoro (1664 intervenciones) el 18/03/2016 20:36:17
¿lo que se conoce como 'falso autonumerico? .....
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
sin imagen de perfil

"contador automatico" en formulario de Access

Publicado por rosy (12 intervenciones) el 18/03/2016 21:27:53
Me podrias explicar mas a fondo, sabes no soy muy experta en esto de access.

gracias
saludos
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
sin imagen de perfil

"contador automatico" en formulario de Access

Publicado por Enrique Heliodoro (1664 intervenciones) el 19/03/2016 19:06:27
Expresiones como 1/xx deberían ir en un campo alfanumérico o de lo contrario Access efectuara la operación matemática y ... comienza el lio.

Por la descripción parece que se compone de tres partes:
.- la unidad o valor incremental
.- el separador (la barra o lo que se utilice)
.- una constante (que puede ser a su vez variable).

Lo indispensable:
Antes de calcular 'el siguiente' hay que definir cual es la constante común de ese rango (dado que el rango puede ser variable)

Para obtener la parte incremental nos basaríamos en el separador y aplicaríamos la función InStr que si lo localiza devuelve su posición en la cadena de texto pasada como argumento y si no lo localiza ... un cero (indicador de que no existe)

Conocida la posición del marcador, la parte incremental seria la que comenzando por la izquierda acabase en la posición del marcador menos uno, la parte fija (que define al grupo) comenzaría en la posición del marcador mas uno haste el final de la expresión.

Un dato tal como 7854/55 se desglosaría así:

Incremental = Left ("7854/55", InStr("7854/55","/") -1) ==> "7854"
.. InStr("7854/55","/") devolvería el numero cinco que es la posición del marcador, si el dato fuera "12/55" devolvería el numero tres

Grupo = MID("7854/55", InStr("7854/55","/") + 1) ==> "55"

Ambos son texto, pero un texto no se incrementa numéricamente, asi que lo convertimos a numero:
Incremental =Incremental = Left ("7854/55", InStr("7854/55","/") -1) ==> 7854==> 7854

Localizamos el mayor en el conjunto (función DMax) y el dato sera el valor del campo en la tabla (le denominare 'UnCodigo'

Mayor = Dmax("Left ([uncodigo], InStr([uncodigo],"/") -1)", "[aquí la tabla]")

Hay que condicionarla para que solo obtenga el mayor de un subconjunto (el grupo, que a estas alturas ha de ser conocido y esta en ..¿GrupoAlmacen?...
Mayor = Dmax("Left ([uncodigo], InStr([uncodigo],"/") -1)", "[aquí la tabla]", " MID([uncodigo], InStr([uncodigo],"/") + 1) = '" & me.GrupoAlmacen & "'")

Ya tendríamos al mayor de los '55' (o '44' o '123' o '999') , lo incrementamos para obtener el siguiente:
Siguiente = Dmax("Left ([uncodigo], InStr([uncodigo],"/") -1)", "[aquí la tabla]", " MID([uncodigo], InStr([uncodigo],"/") + 1) = '" & me.GrupoAlmacen & "'") +1

Y le añadimos el separador y grupo al que pertenece:
Siguiente = Dmax("Left ([uncodigo], InStr([uncodigo],"/") -1)", "[aquí la tabla]", " MID([uncodigo], InStr([uncodigo],"/") + 1) = '" & me.GrupoAlmacen & "'") +1 & "/" & me.GrupoAlmacen

En siguiente y partiendo de supuesto inicial (7854/55) estaría el nuevo dato (7855/55) el cual asignaríamos donde nos pareciese oportuno.


Quzas tengas alguna duda, pero ANTES de plantearla ojea en la ayuda de Access lo mas básico de las funciones expuestas (MID, InSTR, Left, Val, DMax ....) posiblemente se aclararan la mayor parte de ellas y si algo queda y tras 'la ardua meditación' solo queda un dolor de cabeza, tras la correspondiente aspirina: esa pequeña duda ==> 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