Como puedo hacer que el numero de factura en access empiece cada año por la numero 1

Tengo una pequeña empresa de construccion que la gestiono con una base de datos en acces, que la cree yo mismo. Aunque se algo de access no lo se todo. El numero de factura lo cree con un autonumerico, ahora lo que querria es lo siquiente: crear un campo tipo de datos numero llamado "numFactura" y que al poner el foco en el para introducir el numero de factura me saliese un msgbox "El ultimo num factura fue X" como recordatorio para introducir el siguiente que corresponda. Todo con una variable y dicha variable cada año se pudiera en =0 para empezar cada año con la fra nº 1.creo que me he explicado bastante bien. Si hay alguna duda pregunten.

1 Respuesta

Respuesta
1

Convendría que dijeras cual va a ser el "formato" del número de la factura. Si va a ser 1 ó 001 ó

001/2020, etc, ya que la instrucción varía un poco. Por ejemplo, en el formulario le pongo un cuadro de texto con una fecha del que sólo voy a usar el año. Realmente sería la fecha del sistema, pero si apago el router para modificar la fecha de sistema, los compas me pueden dar una paliza.

Cuando cambia el año(lo cambio en el cuadro de texto)

El código del evento Después de actualizar es, en este caso

Private Sub FechaFactura_AfterUpdate()
NumFacturaA = Nz(DLast("numfacturaa", "tabla3", "year([fechafactura])=year([fechaB])")) + 1
End Sub

La correcta, sin ese cuadro de texto sería

Private Sub FechaFactura_AfterUpdate()
NumFacturaA = Nz(DLast("numfacturaa", "tabla3", "year([fechafactura])=year(Date())")) + 1
End Sub

Pero como te decía, convendría que dijeras como va a ser el tipo del número de factura.

gracias Julian,

si llevaria tres ceros delante "0001" y la fecha la pondria yo a mano en un campo tipo fecha corta

Como te dije no puedo desconectar el router, por lo que no puedo cambiarle la fecha al sistema, ya que actualiza el día y la hora cada 10 segundos. Por eso te pongo un cuadro de texto con una fecha, que "representa" la fecha del sistema, pero sólo uso el año de dicha fecha.

Te lo pongo como formulario continuo porque se ve mejor como van cambiando los números de facturas pero el código se usaría exactamente igual en un formulario único. Mientras estamos en el año 2020

Pero cuando cambia el año

El código correcto es( he preferido ponerte varias líneas para no hacer una única instrucción, pero muy larga)

Private Sub FechaFactura_AfterUpdate()
If IsNull([NumFactura]) Then
Dim s
s = Left(DLast("numfactura", "facturas", "numfactura is not null and year([fechafactura])=year(Date())"), 4)
NumFactura = Format(Val("" & s & "") + 1, "0000") & "/" & Year(Date)
End If
IdCliente.SetFocus
End Sub

La ventaja de esto es que te las lleva correlativas dentro del año en curso.

Aunque, no lo sé, personalmente haría un formulario Presupuestos, donde puedo cometer todos los desaguisados que quiera, borrar, etc, con un botón, de forma que si lo aprobaran, automáticamente te generara la factura en orden correlativo. Te digo esto porque creo recordar de cuanto estudiaba Administración de Empresas que a la AEAT hay que presentarle las facturas en orden correlativo (salvo un explicación documentalmente justificada) por fecha y por número.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas