Índice en formulario

Buenos días.

Comento mi problema. Tengo un formulario donde introduzco facturas. Para ello, utilizo un índice que introduzco manualmente, con la siguiente nomenclatura: C-Año-Número. Por ejemplo, C-12-1, C-12-2, C-12-3, C-12-4, C-13-1...

Lo que quiero conseguir es crear un campo que me diga el número por donde voy, teniendo en cuenta el año, para que cuando cambie de año, empieza la cuenta de nuevo. Así, por ejemplo, si el 2012 ha terminado en 35, me debe poner en el nuevo registro C-13-1.

No sé si es demasiado complejo lo que digo y lo que quiero hacer.

A la espera de su respuesta, reciba un cordial saludo.

1 respuesta

Respuesta
1

Primero de aclaro que no es la forma correcta de numerar facturas, no obstante, aquí te preparé esta función. En el ejemplo tomo una tabla arbitraria "tblFacturas", debes cambiar el nombre por el de tu tabla y el nombre del campo "factura". Copia la función en un Módulo.

Public Function SgteFactura() As String'Función para llevar el consecutivo de las facturas- formato C-12-1 hasta 9999'Elaborado por: EDUARDO PEREZ FERNÁNDEZ'Fecha: Enero 8 de 2013'Colombia'Llamar la función desde un formulario asignar en datos el valor predeterminado a '=SgteFactura()Dim strSQl As StringDim db As DatabaseDim rs As RecordsetDim lnPeriodoAnt As LongDim lnPeriodo As LongDim lnUltimoNro As LongDim aux1 As StringstrSQl = "SELECT Last(tblFacturas.factura) AS ultimafactura" & vbCrLfstrSQl = strSQl & " FROM tblFacturas" & vbCrLfstrSQl = strSQl & " ORDER BY Last(tblFacturas.factura);"Set db = CurrentDbSet rs = db.OpenRecordset(strSQl)lnPeriodoAnt = Mid(rs!ultimafactura, 3, 2)lnPeriodo = Right(Format(Year(Date), "00"), 2) ' Determina los 2 últimos dígitos del añolnUltimoNro = Mid(rs!ultimafactura, 6, 4) ' Determina el ultimo número de la factura aux1 = Mid(rs!ultimafactura, 1, 5) ' Primera parte de la factura ej C-12-If lnPeriodoAnt = lnPeriodo Then ' Estamos en el mismo periodo o año. Incrementamos el 'consecutivo SgteFactura = aux1 & lnUltimoNro + 1 Exit FunctionElseIf lnPeriodoAnt < lnPeriodo Then ' Estamos en un nuevo periodo o año. Iniciamos 'fecha y contador SgteFactura = "C-" & lnPeriodo & "-" & "1" ' Nuevo añoEnd Ifrs.Closedb.CloseSet rs = NothingSet db = NothingEnd Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas