Access - Valor autonumérico para dos valores en una misma tabla

 
Vista:

Valor autonumérico para dos valores en una misma tabla

Publicado por Daniel R (4 intervenciones) el 02/02/2017 23:43:21
Hola que tal.

Soy casi nuevo en el tema de Access y estoy armando una tabla nueva con un formulario.

En esta tabla nueva quiero armar un numero consecutivo para dos tipos de valores distintos que se registran de manera aleatoria y que el contador se regrese a 1 cuando se inicie un nuevo año.

Para poder explicar mi caso como ejemplo en esa tabla estoy registrando el valor Jitomate y el valor Tomate, por tanto cada que meto un nuevo registro en el formulario ya sea de Jitomate o Tomate los vaya access contabilizando y cuando llegamos a un nuevo año, ese contador regrese a 1. Me imagino que esto es un codigo que ingreso en el propio formulario en la opción Antes de Actualizar pero no ubico como realizar este codigo. Si alguien me puede orientar se los agradecería.

Como dato adicional ingrese en la tabla un campo para poder tipificar si el nuevo registro es Jitomate o Tomate y otro registro para que me inserte el año en curso.
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

Valor autonumérico para dos valores en una misma tabla

Publicado por Daniel R (4 intervenciones) el 09/02/2017 19:56:59
Que tal Jesús, he tratado de entender los 5 ejemplos, siento que el ejemplo 4 es el que mejor en caja pero me pierdo en el proceso. No si tengas otro ejemplo que compartir. 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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Valor autonumérico para dos valores en una misma tabla

Publicado por Jesús Manuel (375 intervenciones) el 10/02/2017 14:54:20
Lo que estas buscando es un falso autonumerico en función de si es Jitomate o Tomate el valor de un campo y con reinicio anual, dato que guardas en otro campo.



Pongamos que la tabla se llama tblDatos y los campos que interesan son:

- TipoTomate: en el que tienes como posibles valores Jitomate o Tomate, en realidad, cualquier otro valor/tipo valdría
Campo tipo texto

- AñoActual: en el diseño de la tabla puedes especificar como valor por defecto =year(date()) y ya tienes el año guardado en cada registro
Campo tipo texto

- NumeracionTomate: el valor a incrementar en función de TipoTomate y el año
Campo tipo número


Creas un formulario con los campos de la tabla y lo que nos interesa es el campo TipoTomate, que supongo sería un cuadro combinado con los valores a elegir. Cuando eliges el valor de este campo es cuando podemos incrementar el valor del campo NumeracionTomate, por lo que pondremos el siguiente código en el evento después de actualizar de TipoTomate:


If Me.NewRecord Then
Me.NumeracionTomate = Nz(DMax("[NumeracionTomate]", "[tblDatos]", "[TipoTomate]='" & Me.TipoTomate & "' and [AñoActual] ='" & Year(Date) & "'"), 0) + 1
End If


Para evitar que se cambie el valor del TipoTomate a posteriori de crear el registro y esto afecte a NumeracionTomate, en el evento "Al activar registro" del formulario pondríasmos:

If Me.NewRecord Then
Me.TipoTomate.Locked = False
Else
Me.TipoTomate.Locked = True
End If



Bien, que estoy haciendo con estos códigos exactamente:

Con el código del evento después de actualizar del campo TipoTomate lo que hacemos es:

- comprobar que es un registro nuevo
- Asignar a NumeracionTomate el valor máximo del campo NumeracionTomate, en la tabla, cuando TipoTomate (campo de la tabla) coincide con el valor del Me.TipoTomate (campo del formulario) y el valor de AñoActual (campo de la tabla) es igual al año actual que calculo de nuevo con Year(Date()).
- Todo esto esta dentro de la función Nz, que nos permite que el valor sea 0 en caso de un valor Null en el Dmax. Esto nos arregla el problema de que en un año dado y para un TipoTomate, no tuviesemos aún ningún registro
- Por último, sumamos 1 al valor que tenemos de Dmax.
-Si Dmax nos da 7, le sumamos 1 y nos quedamos con NumeracionTomate=8. Si Dmax nos da un valor Null, con Nz lo camibamos por un 0 y sumamos 1 y nos quedamos con NumeracionTomate=1



Con el segundo caso me aseguro que solo se puede cambiar el valor de TipoTomate si se esta creando un registro nuevo, en caso contrario el campo esta bloqueado y no se ejecuta el código del evento despues de actulizar que hemos puesto en primer lugar.


Adapta los nombres de campos y tablas a lo que tienes y haz la prueba.
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

Valor autonumérico para dos valores en una misma tabla

Publicado por Daniel R (4 intervenciones) el 11/02/2017 22:04:09
Jesús,

Muchas gracias por tu apoyo, reproduje el ejercicio y funciono a la perfección. Posteriormente reproduje el codigo aplicando modificaciones de acuerdo a mi base de Access que estoy construyendo y funiono sin problemas.

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