Facturación. Id diferentes por años.

Estoy desarrollando un pequeño programa de facturación. Dispongo de cuatro tablas: Clientes, Comerciales, Factura y Líneas factura, y un formulario llamado Generar Factura en el que se incluyen los datos de las tres primeras tablas tomando como principal "Facturas", y un subformulario tomando la tabla "Lineas Facturas". Como quiera que la numeraciónde factura, que conincide con el id de la tabla factura, debe iniciarse con el numero 1 cada año, recurro a vosotros a ver si me dais la solución para que ese id se reinicie con el numero 1 con la primera factura del año que se estrena; osea 2016 desde la 1 hasta ∞, 2017 desde la 1 hasta ∞, y así sucesivamente.

Respuesta
1

Estaba revisando preguntas antiguas y quizás te sirva

Supongamos qe la tabla Facturas tiene los campos Idfactura(texto, 9 dígitos), Fechafactura, Cliente, Numfactura, etc.

En el formulario Facturas, en Orden de tabulación pon Fechafactura antes de Idfactura(si no lo has seleccionado para hacer el formulario no pasa nada). En las propiedades de cuadro de texto FechaFactura, en Eventos-Después deactualizar, crea un procedimiento de evento y entre Private Sub y End Sub escribe

Dim a As Integer
a = (DCount("nz([idfactura])", "facturas", "year([fechafactura])=year(date())")) + 1
Idfactura = Format([a], "0000") & "/" & Year([Fechafactura])

numfactura=idfactura

Así, cuando ingreses una fechafactura, él contará cuantas hay antes el año en curso y le sumará 1, con lo cual el id será, por ejemplo 0001/2015, el siguiente 0002/2015. Cuando cambie el año y crees la primera factura, como todavía no hay ninguna, el Idfactura empezara por 0001/2016.

El único inconveniente que tiene es que para probar con facturas del año 2016 tienes que cambiar momentáneamente la fecha del sistema, ya que date() es la del sistema

Le he puesto al campo Idfactura 9 dígitos, porque no se el formato de usais.

¡Gracias! 

Icue, no lo consisgo. Podría ser debido a que mi idfactura es autonumérico. Si lo tengo que cambiar a texo (nueve dígitos), como consigo que me genere el numero de factura automaticamente?

Gracias

Sin Problema, en la tabla

Mira la máscara de entrada del campo Numfactura. En el formulario te decía que pusieras el campo Fechafactura antes, pero da igual. En las Propiedades del cuadro de texto Fechafactura, en Eventos-Después de actualizar, entre Private Sub Y end sub escribe

Dim a As Integer
a = (DCount("nz([idloquesea])", "facturas", "year([fechafactura])=year(date())")) + 1
Numfactura = Format([a], "0000") & "/" & Year([Fechafactura])

Con eso sólo llega.

Lo que te había mandado era por si no querías tener ningún id autonumerico. Pero tu idea es muy correcta.

Si tienes algún problema no dudes en decírmelo

Un saludo y que pases unas Felices Fiestas

1 respuesta más de otro experto

Respuesta
1

En esta web ya tienes muchas respuestas sobre este tema, por ejemplo:

Como crear un numero consecutivo personalizado en access

Numeración correlativa de un campo según el año

¡Gracias! 

Buenas tardes amigo, muchas gracias por tu respuesta, pero lo que yo quiero es que el Campo Id sea el que se reinicique con el numero uno cada año, no crear otro campos.

Buenas tardes amigo, muchas gracias por tu respuesta, pero lo que yo quiero es que el Campo Id sea el que se reinicique con la número uno cada año, no crear otro campos.

Cualquiera de las dos respuestas te lo explican, lo único que has de hacer es adaptar el código a tu caso concreto, cambiando los nombres de tus campos.

Además, que antes no te lo comenté, tu campo Id no puede ser autonumérico, y además, si sólo quieres que tenga números consecutivos, sin hacer referencia de algún tipo al año, tampoco puede ser clave principal, pues al cambiar de año te dará error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas