Reiniciar el número de factura cada año

Tengo una base de datos con dos tablas, una de clientes y otra de citas. Trabajo con un formulario principal correspondiente a la tabla clientes y un subformulario de citas. En este subformulario tengo los campos: IdCitas, FechaCita y NumFact (entre otros que no vienen al caso).

A cada cita se le asigna un Id autonumérico (IdCita), y en el campo NumFact tengo el siguiente código:

=[IdCitas] & "/" & ParcFecha("aaaa";[FechaCita])

Que me devuelve el número de la cita y el año extraído del campo "FechaCita".

Lo que necesito es que una vez que cambie el año se reinicie el número manteniendo los demás. Es decir, seguir con los que haya tenido en 2016 (25/2016, 26/2016, etc), pero que aparezca 1/2017 y así progresivamente.

Entiendo que entonces, en lugar de obtener el número del campo IdCitas debería obtenerlo de un campo calculado que me permitiera hacer eso, pero no sé cómo hacerlo.

Si alguien puede ayudarme lo agradecería mucho.

Respuesta
2

Tal como lo planteas no puedes. Un campo Autonumérico no puede tener duplicados y no tienes "poder" sobre él.

En el evento después de actualizar del cuadro de texto Fechacita puedes poner

Dim a as integer
a = Nz(DCount("numfactura", "citas", "year([fechacita])=year(forms!nombredelform!nombredelsubform.form!fechacita)")) + 1
Numfactura = Format([a], "00000") & "/" & Year([Fechacita])

Lo de format puedes cambiarlo por la forma que quieras

¡Gracias! Por la contestación tan rápida, lo probé y no me da resultado, no aparece nada.

Para intentar solucionarlo he creado tres campos calculados:

-Uno  llamado TxtAño en el que puse el siguiente código para que devolviera el año de FechaCita: =ParcFecha("aaaa";[FechaCita]). Así ya tengo el año.

- Otro llamado Num en el que se supone que debería aparecer el número correlativo

- Y otro llamado TxtNuevo con este código: =SiInm([TxtAño]=2017;[Num] & "/" & [TxtAño];" ")

De esta forma parece que está bien -aunque probablemente haya otra más simple-, pero en el campo Num no sé como ponerlo para que salga correlativo desde el 1.

Le he puesto este código para que al cargar el formulario, si el campo TxtAño es 2017 ejecute lo que se supone que debería ser la numeración correlativa, pero por alguna razón no funciona y sólo muestra el 1.

Private Sub Form_Current()

If Me.TxtAño = 2017 Then

Me.Num = Nz(DMax("Num", "Citas"), 0) + 1
End If
End Sub

No sé si me he explicado bien. El caso es que si esto último funcionara igual sería suficiente.

Pero no sé dónde está el error.

Gracias.

Funciona, entre otras cosas, porque lo pruebo antes de ponerlo en la respuesta. Si quieres, repito si quieres mándame un mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu aliaswalden62, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas