Error al asignar valor secuencial de campo en base a fecha

En un formulario Tengo un campo "Expte" que se actualiza para cada registro de forma secuencial en función del valor de un Campo "Fecha_Entrada"

El primer registro lo hace bien, pero cuando creo un registro nuevo...

Por favor, ¿Puede alguien decirme donde está el fallo?

2 respuestas

Respuesta
1

Pruebe con esto:

SELECT Left([Expte],3) AS text_expte FROM tblventas WHERE Left([Expte],4)=Year([fecha_registro])
ORDER BY Left([Expte],3);

Es mejor darele un ALIAS  en este caso le puese text_expte.

Cambie en su instrucción tblventas por el nombre de su tabla y fecha_registro por el nombre del campo en su tabla.

TABLA DEL EJEMPO

Si ejecuto la consulta obtengo el siguiente resultado:

Es decir los 3 primeros caracteres del campo Expte corresponde a:

2020/89

2020/56

2020/45

Lógicamente el encabezado es el nombre del ALIAS.

Disculpe me equivoqué en la el orden de la consulta.

Cambie ORDER BY Left([Expte],3) por ORDER BY Right([Expte],3) la respuesta sería:

Observe está ordenado por los 3 caracteres de la derecha de Eexpte, esto es:

/45

/56

/89

Respuesta
1

José María, creo que te complicas demasiado para algo tan sencillo. Te lo pongo en un formulario continuo porque se ve mejor, pero sería exactamente el mismo código para un formulario único.

A medida que voy poniendo fecha de entrada le va asignando el registro. Cuando cambia el año empieza de nuevo por 001. Pero aunque te dieras cuenta de que te olvidaste poner una fecha de entrada de un año anterior( ver último registro) te la numera correlativamente dentro de su año. El código del evento Después de actualizar es simplemente

Private Sub FechaEntrada_AfterUpdate()
Dim i As Integer
i = Nz(DCount("*", "tabla1", "year([fechaentrada])=year(#" & Me.FechaEntrada & "#)")) + 1
Registro = Year([FechaEntrada]) & "/" & Format("" & i & "", "000")
End Sub

Y no tienes que escribir tanto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas