Contador para cambiar valor de un campo

Buenas,

Quiero que el campo "EstadoOferta" de mi tabla "Ofertas" cambie a un cierto valor si pasan 3 meses, ¿es posible?
Para explicarme mejor, EstadoOferta tiene los valores: Enviada, Aceptada, Cancelada o Congelada.

Quiero que si un registro tiene EstadoOferta : "Enviada" durante 3 meses, se modifique automáticamente a "Congelada".

No tengo ni idea si es posible, quizás no... Iba a probar con el TimerInterval pero creo que es un temporizador una vez dentro de un formulario.

¿Quizás una consulta que modifique valores de mi tabla "Ofertas" a los 3 meses?

1 respuesta

Respuesta
1

Sí es posible, pero necesitarás:

- Un campo fecha que te indique cuándo se creó el registro, o un campo fecha que tomes como referencia para poder compararlo con la fecha actual y, si han pasado tres meses, cambiar el valor de [EstadoOferta].

Para poderte dar una solución necesitaría saber:

- El nombre de ese campo que te recoge la fecha

- Doy por supuesto que el nombre del campo que debe cambiar se llama [EstadoOferta]

- El nombre de la tabla que contiene esos registros.

Por otra parte efectivamente el TimerInterval no te serviría para lo que quieres hacer.

Espero tus noticias.

Hola experto!

Tabla: Ofertas
Campo a cambiar a los 3 meses de "Enviada" a Congelada": [EstadoOferta]
Campo de Fecha de referencia: [FechaOferta]

Muchas gracias, esperaré impaciente =D!

No me ha llegado ningún mail notificando tu respuesta y la acabo de ver ahora. Esta tarde creo que voy a tener un hueco. Lo miro y te digo cosas.

Disculpa no haberte contestado antes.

Te voy a pasar el código que hace lo que pides, pero antes un par de comentarios:

Tienes que programar un evento para que se ejecute el código. En la BD de ejemplo que te menciono más abajo yo he programado la acción al hacer click en un botón.

Si tú lo quieres de manera más automática podrías programar, por ejemplo, el evento "al abrir" de un formulario (por ejemplo, el formulario de inicio).

Para programar un evento de formulario o de control tienes que sacar las propiedades de ese formulario o control y te vas a la pestaña Eventos -> ... Ahí verás una lista de eventos. Como te comentaba, en un formulario lo podrías programar en el evento "Al abrir", o si es un botón (como el ejemplo que te envío yo) seria en el evento "Al hacer click".

El código que te hace lo que pides es el siguiente (te lo pongo comentado para que lo veas un poco más claro:

...

Private Sub...

'Declaramos las variables
Dim vFechLimite As Date
Dim miSql As String
'Calculamos cuál sería la fecha límite (3 meses atrás desde hoy)
vFechLimite = Date - 90 '90 = 30 días por 3 meses
'Creamos la SQL de actualización filtrando los registros por: 1-Fecha anterior a 3 meses, y
'2-EstadoOferta="Enviada"
miSql = "UPDATE Ofertas SET Ofertas.EstadoOferta=" & """" & "Congelada" & """" _
& " WHERE Ofertas.FechaOferta<#" & Format(vFechLimite, "mm/dd/yy") & "#" _
& " AND Ofertas.EstadoOferta=" & """" & "Enviada" & """"
'Desactivamos los warnings
DoCmd.SetWarnings False
'Ejecutamos la SQL
DoCmd.RunSQL (miSql)
'Activamos los warnings
DoCmd.SetWarnings True
'Avisamos de que todo ha ido bien
MsgBox "Actualización realizada correctamente", vbInformation, "OK" 'Esta línea es opcional: la puedes poner o no
End Sub

...

Y ya está.La BD de ejemplo te la puedes bajar aquí: http://www.filebig.net/files/RSywwuALm6

Ya me comentárás qué tal ha ido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas