Imprimir página | Cerrar ventana

Generar número de factura

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=81708
Fecha de impresión: 20/Abril/2021 a las 12:10


Tema: Generar número de factura
Publicado por: markichu
Asunto: Generar número de factura
Fecha de publicación: 18/Abril/2016 a las 21:51
Hola a tod@s

Tengo un problema que seguro que es una tontería.
Os resumo
Tabla en Access con campo número de Factura de tipo texto en el que almaceno las facturas con FA + Año + secuencia
Ejemplo

FA201601
FA201602
......

Tengo un formulario con este campo y necesito que cuando se pinta el formulario aparezca el siguiente valor.
Me podéis ayudar?



Respuestas:
Publicado por: mounir
Fecha de publicación: 18/Abril/2016 a las 22:16
Hola!

Tan simple como en un cuadro de texto independiente poner en su origen de control:

="FA" & Year(Now()) & DCount("*";"Tablafactura";"IdFactura<=" & [IdFactura])

-------------
Un Saludo.


Publicado por: markichu
Fecha de publicación: 18/Abril/2016 a las 23:21
Muchas gracias mounir. LA verdad que me funciona con
="FA" & Year(Now()) & DCount("*";"Facturaacliente")
Sin embargo si lo pongo como comentas

="FA" & Year(Now()) & DCount("*";"Facturaacliente";"NumFactura<=" & [NumFactura])

Me da error #ERROR

Para que es ese criterio?



Publicado por: mounir
Fecha de publicación: 18/Abril/2016 a las 23:35
Tal como lo pones te tiene que dar la cuenta total, para eso está esta condición.

Si te da error algún campo esta mal escrito.

-------------
Un Saludo.


Publicado por: mounir
Fecha de publicación: 18/Abril/2016 a las 23:39
Hola!

También lo puedes hacer con:

= "FA" & Year(Now()) & Nz(DMax("NumFactura"; "Facturaacliente"); 0) + 1

-------------
Un Saludo.


Publicado por: bryger
Fecha de publicación: 18/Abril/2016 a las 23:54
una consulta y si en caso quiero que comienze por el año agregue 4 0 y despues comienze a enumerar por ejemplo 20160000-01 etc 20160000-02 y asi


Publicado por: markichu
Fecha de publicación: 18/Abril/2016 a las 23:55
Ahora no da error.
El problema que el maldito campo no se almacena en la BBDD

He puesto la sentencia en el origen de control del mismo campo


Publicado por: markichu
Fecha de publicación: 18/Abril/2016 a las 23:57
Según lo que comenta mounir deberás de concatenar los ceros que necesites despues del año

En tu caso sería algo como:
=  Year(Now()) & "0000" & "-" & Nz(DMax("NumFactura"; "Facturaacliente"); 0) + 1


Publicado por: bryger
Fecha de publicación: 19/Abril/2016 a las 00:04
una pregunta si es una tabla como puedo hacer para que dicho texto o clave se guarde en una tabla y disculpe mi ignorancia


Publicado por: mounir
Fecha de publicación: 19/Abril/2016 a las 00:23
Hola, bryger!

Para tu caso sería:

=Year(Now()) & " 0000-" & Format(DCount("*";"Nombredela tabla";"Id<=" & [Id]);"00")

-------------
Un Saludo.


Publicado por: bryger
Fecha de publicación: 19/Abril/2016 a las 00:48
mounir muchas gracias amigo disculpe la molestia sera que me puede ayudar en otro tema que tengo es un proyecto para la universidad y no encuentro quien me ayude es una tonteria pero no consigo alguien que me diga es sobre como bloquear una tabla despues de editada

aqui el link http://www.mvp-access.com/foro/bloquear-campos-despues-de-actualizar_topic81706.html


Publicado por: markichu
Fecha de publicación: 19/Abril/2016 a las 09:28
mounir disculpa
Esta sentencia Nz(DMax("NumFactura"; "Facturaacliente"); 0) + 1
Me da error de tipos ya que el campo es un campo de texto y al intentarle sumar uno casca


Publicado por: mounir
Fecha de publicación: 19/Abril/2016 a las 09:32
Hola!

Prueba como te lo puse antes pero con comillas simples al tratarse de texto.

="FA" & Year(Now()) & DCount("*";"Facturaacliente";"NumFactura<='" & [NumFactura]&"'")

y tienes que ponerla en el origen del control de un campo de texto independiente, na vale para el campo NumFactura.

-------------
Un Saludo.


Publicado por: markichu
Fecha de publicación: 19/Abril/2016 a las 12:49
Y luego para que el campo de la tabla coja el valor generado en ese campo?


Publicado por: mounir
Fecha de publicación: 19/Abril/2016 a las 13:07
Hola!

Pues crea otro campo en tu tabla, posteriormente en el formulario en algun evento lo pasas el valor al nuevo campo.


Me.NuevoCampo=Me.Campodefactura , donde mi campodefactura es el que tiene el valor y el otro se lo guarda en la tabla.



-------------
Un Saludo.


Publicado por: E. Feijoo
Fecha de publicación: 19/Abril/2016 a las 14:12
¿Esto no es un clásico 'autonumerico simulado'?....

Pregunta:
¿El numérico correlativo se tiene que reiniciar cada año? (si no es asi, un limite de 99 facturas me parece un tanto escaso o la empresa esta diseñada para un corto periodo de tiempo)

Si se ha de reiniciar cada año, el función DCount no es adecuada (a no ser que se parametrice) y faltaría el reinicio cada nuevo año.




Imprimir página | Cerrar ventana