¿Cómo se puede generar un folio para factura de tipo texto y numero (CVMM 00001)?

Mi Problema consiste en lograr foliar las facturas en el campo (N_FACT) de la tabla tb_Factura teniendo en cuenta:

Primero; (FOLIO_ABIERTO = Abierto), el (NOMBRE_FOLIO) y la (ULT_FACT_FACTURADA) de la tabla tb_Folios.

Segundo: Que la Nueva Factura Generada este en el Rango de: (FACT_INICIAL) y (FACT_FINAL) de la Tabla tb_Folios

De esta forma, Al crear Una factura: Consulta cual es el folio abierto, el rango de facturación autorizado y cual ha sido el numero de la ultima factura generada para poder establecer el numero de esta nueva factura.

Ejemplo: Ultima Factura: VMCC 00005 entonces la nueva factura debe ser VMCC 00006 y así sucesivamente.

Anexo...

2 respuestas

Respuesta
2

Jorge: En lugar de ponerte a "secas" una formula para que uses por ejemplo en el Evento >> Al activar registro de tu Formulario, te recomiendo leas (si quieres) éste articulo y aplicas la parte que se adapte a tus facturas. No te valdrá el aleatorio, pero así lo contemplas para otros usos.

http://www.accessyexcel.com/cinco-formas-de-generar-un-valor-unico-para-usarlo-como-campo-clave/

Un saludo >> Jacinto

Gracias por tu pronta respuesta. ya había mirado este articulo pero no hace lo que necesito. ese ejemplo me vendría bien para folios numéricos. el mio es un folio alfanumérico y consecutivo.

Agradezco Cualquier otra Información.

Jorge: Al intentar responderte, he visto que Icue (un saludo), te ofrece una solución que para mi cubre lo que buscas.

Puesto que por la respuesta que le das al parecer no es así, me temo que iríamos alargando con respuestas y repreguntas con poco resultado efectivo. Entonces la forma que veo más eficaz es que pongas aquí un enlace con tu BBD y datos inventados para ver la estructura con más claridad.

Otra alternanativa si es que la quieres utilizar es que me envíes directamente la Base de datos, también con datos ficticios a [email protected]

La base no hace falta que sea entera. Si con todos los objetos que intervienen en ese proceso. Un saludo >> Jacinto

Bueno Gracias por tu colaboración te anexo un link de la base de datos modelo.

https://drive.google.com/open?id=1MA1CgKN1IGnn1SYTkbiiguLxc9zGDedP 

Jorge: Lamentablemente con lo que me envías no puedo hacer nada, ya que las tablas están vinculadas. Conviértelas en locales y meló reenvías. Un saludo >> Jacinto

Respuesta
2

No sé de donde salen las letras de las facturas, ni he entendido lo de Folio, pero si tengo una tabla Facturas

Construyo un formulario, lo pongo como continuo que se ve mejor

Cuando anoto el cliente y me voy a un nuevo registro

Cuando anoto el cliente y me voy a uno nuevo

El código del evento Al activar el registro es simplemente

Private Sub Form_Current()
If IsNull([NFactura]) Then
NFactura = "AAAA" & " " & Format(Val(Right(Nz(DLast("NFactura", "facturas")), 5)) + 1, "00000")
End If
End Sub

¡Gracias! Tu respuestas siempre muy buenas.

las letras salen de la tabla (tb_Folios) exactamente del campo Nombre folio.

y el numero que le sigue a las letras debe estar comprendido por los campos (FACT_INICIAL) y (FACT_FINAL) de la Tabla tb_Folios.

Seria de mucha ayuda.

Finalmente, Como funcionan en el codigo que tu me das: 

Format(Val(Right(Nz(DLast("NFactura", "facturas")), 5)) + 1, "00000")

Como sigo sin saber como es la tabla Folios voy a suponer que es como la imagen

En el formulario Facturas

El valor de Nfactura sólo depende del folio del que se trate, independientemente de que se intercale otro folio.

El código del evento Después de actualizar del control IdFolio(así se llama el combinado)

Private Sub IdFolio_AfterUpdate()
If Nz(DCount("*", "facturas", "idfolio=" & Me.IdFolio & "")) = 0 Then
NFactura = "" & Me.IdFolio.Column(1) & "" & " " & Format(DLookup("factinicial", "folios", "idfolio=" & Me.IdFolio & ""), "00000")
Else
If IsNull([NFactura]) Then
NFactura = "" & Me.IdFolio.Column(1) & "" & " " & Format(Val(Right(Nz(DLast("NFactura", "facturas", "idfolio=" & Me.IdFolio & "")), 5)) + 1, "00000")
End If
End If
End Sub

Te dejo como ejercicio, la instrucción para que valide si el valor está entre FactInicial y FactFinal

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas