Envía alerta de vencimiento en access

Antes que nada quiero informar que soy nueva en access y no se nada de código, pero me aventure a hacer una base de datos para llevar el control de los vehículos de la empresa en la que trabajo, el asunto es que ya que hacia lo mas básico, me pidieron que de acuerdo a la fecha de vigencia que tiene la licencia de los choferes envié una alerta un mes antes de que se le venza, y no tengo ni idea de como hacerlo, mi base tiene una tabla llamada "chofer" donde tengo los campos (Nombre de chófer, Numero de licencia, Vigencia de licencia) y tengo un formulario de entrada en donde deseo que envié la alerta, en el cual se puede acceder a otros formularios, ojala pudieran ayudarme con este tema porque no encuentro como, he visto que hay que generar campos calculados y consultas ó macros pero no me queda claro que seria lo ideal en mi caso.

PD Trabajo en access 2007

Respuesta
1

la mecánica de este ejemplo a ver si te sirve: http://bit.ly/18zKG5k

Saludos,

Hola Neckkito, antes que nada gracias por la ayuda la base que tu tienes de ejemplo esta excelente, creo que si me funciona.

Hice todo lo que dices en tu manual pero no hace nada, mi tabla se llama "Chofer", los campos son (Nombre chofer = Texto, Numero de licencia = Texto, Vigencia_de_Licencia = Texto (debido a que tengo vigencias que son permanentes)  y Revisado = si/no (este último agregado según tus indicaciones), como veras no tengo un campo fecha inicio pero creo que funciona con solo la fecha de la vigencia, realice la consulta a la que nombre "Alerta" y puse lo siguiente:

[Vigencia_de_Licencia]: >=Fecha() Y <=Fecha()+30 en los criterios del campo Vigencia de licencia

[Revisado]= Falso (cambie : por = ya que me enviaba un error se sintaxis)

luego intente poner solo:

>=Fecha() Y <=Fecha()+30 en los criterios del campo Vigencia de licencia y

Falso en  los criterios del campo Revisado

Pero al ejecutarla me borra los datos que ya tenia en la consulta (creo que aquí esta el problema), yo ya tenia un formulario de inicio llamado "Menu" en el que al pulsar algunos botones entran a diferentes formularios (aquí quiero que envié la alerta)y esta configurado para que al abrir la base aparezca en automático aquí puse el código que indicas con sus respectivos cambios según mi tabla e informe, luego di de alta un nuevo chofer donde le puse que la licencia vence el 11/04/2015 para que realizara la validación correspondiente y me enviara la alerta, pero no hizo nada y revisando la consulta no tiene información alguna, te pido tu ayuda ya que como mencione antes soy nueva en esto.

Apreciada Diana:

Me pregunto por qué llamáis a un campo <FechaLoQueSea> y, como tipo de campo, no pones lo lógico, que sería fecha, y pones que es un dato tipo texto.

Lo idóneo sería que si un campo es de fecha, es de tipo fecha, y si hay permisos que son permanentes pues dejas el campo de la fecha en blanco y añades un campo [Permanente] de tipo sí/no que, de ser verdadero, significa que es permanente.

Sinceramente, a mí no se me ocurriría llamar a un campo [Plátanos] para llevar la cuenta de lechugas recolectadas... je, je...

La palabra "Fecha" en la expresión de criterios te devuelve un valor de tipo fecha (de hecho, te devuelve la fecha del sistema). Si intentas compararlo con un string (texto) no es que te borre nada, es que la consulta te devuelve cero registros.

Tienes dos opciones: o reestructurar tu base de datos en atención a los comentarios que te hacía antes y poner a cada cosa su tipo, o me pasas tu BD o una recreación de tu BD con los elementos que intervienen en tu consulta (las dos tablas que me muestras y la consulta que intentas crear) a mi correo electrónico, que lo tienes en el botón del smiley del ejemplo. No necesito todos los registros, pero déjame algunos, aunque sean con datos inventados, y en el propio mail, y en base a esos registros, me dices cuál debería ser el resultado.

La segunda opción es para evitar encontrar más "sorpresas" en la estructura de tu BD y que esto se convierta en el cuento de nunca acabar ;-)

Hola Neckkito

Te comento que reestructure el campo Vigencia de licencia a fecha y hora y la consulta funciona, ahora lo que me sucede es que el código no se ejecuta, te envío mi base por correo con datos ficticios porque aun estoy probando, te agradezco de antemano tu gran ayuda.

Te he adaptado el código a la BD que me has enviado. Estabas haciendo un pequeño "pastiche" pero bueno... nadie nace enseñado ;-)

Si me permites, te recomiendo que eches un vistazo a esta página: http://bit.ly/1esPvid

La BD que me has enviado pesaba algo más de 8MB, y tras lo que se dice en ese artículo te quedaría en poco más de 3MB.

  • Muchas gracias por el enlace, te envíe correo de vuelta porque la BD sigue igual y tengo el mismo código tanto en la que me enviaste como en la que yo tengo, y aun no envía la alerta, perdón por tantas molestias.

Vamos a ver... en la BD que yo te he enviado, con el código corregido, en mi ordenador funciona perfectamente.

Entiendo yo que es tu Access el que está bloqueando la ejecución del código.

Para solventarlo echa un vistazo a este artículo, donde se explica cómo crear un centro de confianza: http://bit.ly/1fvFMEB

A ver si así te funciona.

Hola, yo configure los sitios de confianza y aun no me envía la alerta, yo me refería a que tu me mencionaste que habías modificado el código para que la ejecutara correctamente pero cuando descargue la BD que tu me regresaste y compare el código con el que ya tenia en mi copia, ambos códigos son iguales es decir no veo la modificación, no se si pudieras enviarme cuales son las modificaciones que debería hacer para que se ejecute por favor.

...

Private Sub Form_Open(Cancel As Integer)
On Error GoTo sol_err
    Dim rst As Recordset
    Dim resp As Integer
    Set rst = CurrentDb.OpenRecordset("Alerta", dbOpenSnapshot)
    If rst.RecordCount = 0 Then
        GoTo salida
    Else
        resp = MsgBox("Existen licencias próximas a vencer" & vbCrLf & vbCrLf & "¿Desea ver un informe?", vbInformation + vbYesNo, "AVISO")
        If resp = vbYes Then
            DoCmd.OpenReport "InfLicVencida", acPreview
        End If
    End If
salida:
    rst.Close
    Set rst = Nothing
sol_err:
    Exit Sub
End Sub

...

Evidentemente, el código depende de que exista una consulta llamada Alerta y que esa consulta devuelva registros.

Neckkito, ¡Muchísimas gracias! Funciona a la perfección te agradezco la infinita paciencia que me tuviste, no cabe duda que eres grande.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas