Incrementar un contador a partir de una fecha fija y la fecha actual. ¿Cómo lo hago?

Tengo una tabla con varios registros llamada LVA.
Tiene varios campos como DNI(varchar), FECHA_FACTURA(dd-mm-yyyy), COUNT_FF que se supone debiera ser la Fecha de hoy(actual) - FECHA_FACTURA).
El índice se llama NO_FACTURA y es llave y única (long).
El problema es que tengo n facturas y por ende necesito que cada vez que se abra el formulario de INICIO... Se incremente el campo COUNT_FF.
O que se ejecute a una hora específica.

1 Respuesta

Respuesta
1
No acabo de entender qué estás pidiendo. ¿Serías tan amable de ponerme un ejemplo con valores asociados a cada campo que comentas, y qué nuevo valor debería coger?
A ver si así me aclaro un poco.
OK.
Tengo un numero de factura (NO_FACTURA ) que llega en una fecha cualquiera.
que viene a ser la FECHA_FACTURA. Este numero de factura es único y no se repite ni nada.
En la tabla también tengo un campo numérico llamado COUNT_FF. que es la difrenecia entre la fecha actual y la fecha en que llegó la factura.
Este contador debiera irse incrementando a medida que pasan los días reales y se cumpla una condición "Y". En este específico este contador me debiera permitir cuanto es el tiempo transcurrido en días  hasta que la factura sea pagada. NO_FACTURA_STS (Estatus de la factura (Cancelada o no ), es boolean.
Ejemplo:
Tabla LVA
NO_FACTURA: = 45878456
FECHA_FACTURA : = 06-01-2012 (dd-mm-yyyy)
COUNT_FF : = (HOY()-FECHA_FACTURA)  = E.i = 3
NO_FACTURA_STS : = False
Como uno ya se podrá imaginar hasta que no esté cancelada el contador se debe ir incrementando a medida que transcurra el tiempo.
Por ende necesito una suerte de cursor que recorra la tabla de las NO_FACTURA no canceladas y el campo COUNT_FF (que es para cada factura) y que se incremente..
Te explico cómo puedes hacer lo que pides. Sin embargo, antes debes comprobar si tienes registrada la referencia "Microsoft DAO 3.6 Object Library". Si no la tuvieras registrada la deberías registrar (si no sabes cómo se hace eso me lo comentas).
Te aconsejo que antes de aplicarlo directamente a tu BD lo pruebes en una copia de tu BD, ya que se van a modificar registros.
Lo que tienes que hacer es lo siguiente:
1.- Abres tu formulario de inicio en vista diseño. Sacas sus propiedades y te vas a la pestaña Eventos -> Al abrir, y le generas el siguiente código:
...
Private Sub ...
Dim difFecha as integer
Dim fechaActual as Date, fechaRegistro as Date
Dim miSql as String
Dim rst as DAO.Recordset
'Cogemos la fecha actual
fechaActual=Date
'Creamos la SQL
miSql = "SELECT LVA.FECHA_FACTURA, LVA.COUNT_FF, LVA.NO_FACTURA_STS FROM LVA"
miSql = " WHERE LVA.[NO_FACTURA_STS] = False"
'Creamos el recordset
Set rst = CurrentDb.Openrecordset (miSql)
'Si no hubiera registros en la consulta saltamos a Salida
If rst.Recordcount = 0 then goto Salida
'Nos movemos al primer registro
rst.MoveFirst
'Iniciamos el recorrido de registros
Do until rst.EOF
'Cogemos el valor de la fecha factura
fechaRegistro = rst.Fields("FECHA_FACTURA").Value
'Calculamos la diferencia de días
difFecha = fechaActual - fechaRegistro
'Actualizamos el valor obtenido en la tabla
With rst
.Edit
.Fields("COUNT_FF").Value = difFecha
.Update
End With
'Nos movemos al siguiente registro y repetimos el proceso
rst.MoveNext
Loop
Salida:
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub
...
Te he escrito el código de memoria, por lo que si te da algún error me comentas el número de error y la línea que te marcará en amarillo y le echamos un vistazo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas