Access crear un secuencial dependiendo de unos criterios

Tengo una tabla que se llama Listado_Recibos_Detalle en la cual hay una serie de campos de los cuales hay tres necesarios para lo que solicito.

Los campos son Recibo/Fecha_hora/Id

El campo Recibo y el campo Fecha/hora están cumplimentados no así el campo Id que debería cumplimentarse por un secuencial que siempre empezara por 1 dependiendo de los otros dos campos.

Es decir

recibo    fecha/hora                       id

111 01/01/2021 15:00:01 1

111 01/01/2021 15:40:03 2

111 01/01/2021 16:03:00 3

Y así sucesivamente. En cuanto cambiase el número de recibo volvería el contador a 1

3 respuestas

Respuesta
1

Javier: A mi no me queda claro si es que quieres:

A.- Ordenar Registros por Grupo en una Tabla que ya tienes >>

Listado_Recibos_Detalle

B.- Adjudicar ese auto numérico cuando das de alta un nuevo Registro en la Tabla a través de un Formulario.

La contestación que te pueda dar o que otro usuario lo haga dependerá bastante de si tu situación es A o B. Un saludo >> JTJ

B.- Adjudicar ese auto numérico cuando das de alta un nuevo Registro en la Tabla a través de un Formulario. (el alta del nuevo registro es manual no a través de extracciones de ficheros externos)

Javier: De acuerdo a lo que me comentas y viendo la respuesta de Julián (un saludo), lo que te comenta es adecuado.

Solo que para una mayor seguridad y si estás en un Registro Existente y por alguna razón tecleas el mismo que hay, yo pondría>>

Private Sub Recibo_AfterUpdate()
If Me.NewRecord Then
    Id = DCount("*", "Tabla1", "recibo=" & Me.Recibo & "") + 1
End If
End Sub

Nada que añadir. Saludos >> JTJ

Respuesta
1

Si lo que quieres es que te quede como en la imagen,

basta con poner en el evento Después de actualizar del cuadro de texto Recibo

Private Sub Recibo_AfterUpdate()
Id = DCount("*", "Tabla1", "recibo=" & Me.Recibo & "") + 1
End Sub
Respuesta
1

Como dice "tengo una tabla que..." y no un formulario, le presento otra alternativa. Si ordena los recibos con base en el Recibo y Fecha_hora, no sirve utilizar DCount() cuando el registro de la información no obliga el orden ascendente de la fecha, toda vez, que solo puede contar el campo Recibo indistintamente de la fecha.

TABLA

Observe que al final hay 2 registros 111 01 con fecha 230/02/2021 pero no están en orden que corresponde. Como voy a utilizar una consulta y una función para obtener el orden del campo id, éste no es necesario en la tabla.

DISEÑO DE LA CONSULTA

Utiliza para hacer la numeración por agrupación la función RT_NumerarParcialSQL, cuyo autor es JESUS MANSILLA CASTELLS -Mihura-".

FUNCION PARA LA CONSULTA

RESULTADO DE LA CONSULTA

Observe que han quedado de primeros los 2 registros que están de últimos en la tabla y van numerados en orden ascendente por Recibo y Fecha_hora, en donde el grupo 111 01 va del 1 al 6, el 111 02 va del 1 al 3, el 111 03 va del 1 al 3 y el 111 04 va del 1 al 2.

Ahora, si lo hace en un formulario para registrar los datos y el campo de fecha tiene por defecto la del sistema, le sirve la solución de Julián. Si quiere el ejemplo lo puede solicitar a [email protected], favor en el asunto anotar la consulta.

No había leído su respuesta a la pregunta de Jacinto, en este caso, siga las indicaciones del él si piensa usar el campo id, pero no es necesario porque es un campo calculado y esto se hace por lo general en una consulta como en el ejemplo que le expongo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas