Alertas en Access 2003

Quiero hacer una base de datos con alertas. Sera una Base de datos de contratación de servicios, es decir mi área necesita contratar 20 servicios, y cada servicio tiene un mes especifico que se va a realizar.
Ejemplo: (1)Servicio de digitalización, (02) Servicio de limpieza y (03)Servicio de Mantenimiento, con fechas de inicio de servicio Marzo, Junio y Marzo respectivamente.
Quiero que al abrir el formulario digamos "Servicios", me mande una alerta 5 días antes de que se inicie el servicio, es decir me arroje un listado de todos lo servicios que se van a iniciar en ese mes.
En este ejemplo al abrir el formulario "servicios", me arrojara automáticamente 5 días antes el listado del servicio (1) y (3), puesto que los dos empiezan en marzo, osea el 25 de febrero mas o menos me tiene que mandar esta alerta.
Espero me entiendan, por favor si me pueden ayudar estaría muy agradecido

4

4 Respuestas

818.075 pts. No responderé preguntas de usuarios que no valoren las...

Supondré que tienes una tabla "TServicios", con un campo numérico "MesInicio" en el que guardas el número del mes en que se inicia el servicio (01,02,...), y un campo de texto "Servicio".
Abre tu formulario "Servicios" en vista diseño, saca sus propiedades y vete a la pestaña "Eventos". Localiza el evento "Al abrir" y pulsa en el botón de los 3 puntos que aparece a la derecha de esa fila. En la ventana emergente selecciona "Generador de código"
Se te abrirá el editor de VBA, y en él escribes este código:

Private Sub Form_Open(Cancel As Integer)
On Error GoTo sol_err
    Dim rst As DAO.Recordset
    Dim vMes As Integer
    Dim elMsg As String
    Dim elInicio As String
    Const DiasAviso As Integer=5
    vMes = Month(Date)
    elInicio = "Los siguientes servicios se inician en " & MonthName(vMes + 1) & ":" & vbCrLf
    Set rst = CurrentDb.OpenRecordset("TServicios", dbOpenSnapshot)
    If rst.RecordCount = 0 Then GoTo salida
    rst.MoveFirst
    Do Until rst.EOF
        If vMes < 12 Then
            If rst("MesInicio") = vMes + 1 Then
                If Date = CDate("01/" & rst("MesInicio") & "/" & Year(Date)) - DiasAviso  Then
                    elMsg = elMsg & rst("Servicio") & vbCrLf
                End If
            End If
        Else
            If rst("MesInicio") = 1 Then
                If Date = CDate("01/" & rst("MesInicio") & "/" & Year(Date) + 1) - DiasAviso  Then
                    elMsg = rst("Servicio") & vbCrLf
                End If
            End If
        End If
        rst.MoveNext
    Loop
    If Len(elMsg) > 0 Then
        elMsg = elInicio & elMsg
        MsgBox elMsg
    End If
salida:
    rst.Close
    Set rst = Nothing
sol_err:
    Exit Sub
End Sub

Con esto cada vez que abras el formulario Servicios te avisará si hoy es 5 días antes del mes siguiente y si hay servicios que inicien ese mes.

Si quieres que el aviso salga con otra antelación, puedes cambiar el valor de la constante Const DiasAviso As Integer=5, por el que prefieras.

Si prefieres que el aviso te salga todos los 25 de cada mes, cambia esto:

If Date = CDate("01/" & rst("MesInicio") & "/" & Year(Date)) - DiasAviso Then

por esto:

If Date = CDate("25/" & rst("MesInicio") & "/" & Year(Date))  Then

y esto:
If Date = CDate("01/" & rst("MesInicio") & "/" & Year(Date) + 1) - DiasAviso

por esto otro:

If Date = CDate("25/" & rst("MesInicio") & "/" & Year(Date) + 1) - DiasAviso

13.950 pts. El tiempo es el recurso mas valioso que tenemos

En realidad quieres hacer un proyecto completo, avisame si sigues interesado

Nunca he trabajado con alertas, pero he encontrado esto que a lo mejor te sirve:

http://www.todoexpertos.com/categor%C3%ADas/tecnolog%C3%ADa-e-internet/bases-de-datos/microsoft-access/respuestas/1654701/crear-alertas-en-access-2003

Por lo que entiendo, es parecido a tu problema, ¿no?

Dime si te funciona!

Mi estimado, esta pagina dice que ya ha sido removida, favor no tendras otro link.

<div class="Message" style="border-bottom-width: 0px; border-bottom-style: initial; border-bottom-color: initial; padding-top: 10px; padding-bottom: 10px; line-height: 17px;"><div class="UserIcon" style="float: left; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: center; width: 60px;"><div>Usuario</div></div><div class="MessageTextContainer" style="border-left-width: 1px; border-left-style: solid; border-left-color: #dddddd; float: left; width: 555px; word-wrap: break-word; min-height: 82px;"><div class="MessageTextAd MessageTextAdFirst" style="float: left; padding-right: 2px;"><div class="customadsense test1" style="padding-top: 0px; padding-right: 10px; padding-bottom: 0px; padding-left: 10px; width: 250px; color: #666666; margin-top: -21px; line-height: 20px;"><div class="textadcontainer"><div class="bigtextad"><div class="adsbygoogle">Anuncios Google</div><div class="itemad" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;"><div class="titlead" style="font-size: 18px; font-weight: bold;">Circuitos simétricos 4M</div><div class="linesad" style="font-size: 14px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;"><div class="line1ad" style="display: inline;">IP Fija, VPN,Garantía de caudal 50%</div><div class="line2ad" style="display: inline;">Asesoramiento gratuito, consúltenos</div></div><div class="footerad" style="font-size: 14px;">www.idecnet.com</div></div></div></div></div></div><div id="freqdescription" class="MessageText description" style="color: #666666; padding-top: 4px !important; padding-right: 10px !important; padding-bottom: 10px !important; padding-left: 4px !important; height: auto !important; line-height: 20px; font-size: 14px;">Hola, En la oficina tengo una base de datos con los datos de los trabajadores, quería saber si hay alguna forma de que la propia base te lance avisos de las fechas de finalización de contratos, por ej., agradecería mucho vuestra ayuda,
gracias.
Un saludo.</div></div><div class="clear" style="clear: both;"> </div></div><div class="Message AlternatingMessage" style="border-bottom-width: 0px; border-bottom-style: initial; border-bottom-color: initial; padding-top: 10px; padding-bottom: 10px; line-height: 17px;"><div class="UserIcon" style="float: left; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: center; width: 60px;"><div class="user-icon expert-icon-nophoto" style="width: 48px; height: 48px; display: block; background-image: url('http://cdn1.todoexpertos.com/content/images/userphoto/1_respuesta.png'); background-position: 2px 2px; background-repeat: no-repeat no-repeat; border-width: 1px !important; border-color: #a6a6a6 !important; border-style: solid !important; padding: 2px;" title="Experto carruina respondiendo en Microsoft Access"> </div><div>Experto</div></div><div class="MessageTextContainer" style="border-left-width: 1px; border-left-style: solid; border-left-color: #dddddd; float: left; width: 555px; word-wrap: break-word; min-height: 82px; background-color: #f5f8fa;"><div class="MessageText" style="color: #666666; padding-top: 4px !important; padding-right: 10px !important; padding-bottom: 10px !important; padding-left: 4px !important; height: auto !important; line-height: 20px; font-size: 14px;">Hola
Puedes ejecutar un formulario basado en una consulta al inicio de la Base de Datos
1.- Crea una consulta con los contratos que van a caducar
Si FinCOntrato contiene la fecha de fin del contrato esta condición te mostrará todos los contratos que van a finalizar en 7 días
[finContrato]-Fecha() <=7
2.- Crea un formulario basado en la consulta anterior
3.- Asocia este Formulario al inicio de la base de datos
Menu Herramientas->Inicio... En Mostrar Formulario/Pagina Selecciona el nuevo formulario
Cada vez que abras la Base de Datos te aparecerán los contratos que van a finalizar en una semana.
Por supuesto cada vez que abras el Formulario o la consulta también
</div></div></div>

voy a probarlo ..

gracias

¿Funcionó?

1.950 pts. Albañileria de Access (SIN CODIGO ;)), si te puedo...

Puedes hacer que se abra una consulta siempre que abras ese formulario, o al abrir la base de datos.

Si tienes guardada la fecha como texto te aconsejaría cambiarla a tipo fecha, ya que te facilitara el colocar una formula que indique tan solo 30 días de adelanto a los eventos que van a suceder con una formula de diferencia de fechas con Ahora() > o < a 30 por ejemplo.

Ademas de esta manera puedes vincular el valor de 30 a alguno que introduzcas en una celda en un formulario y variarlo cómodamente.

La idea seria que el modificases los eventos al abrir la base de datos o un formulario para que al activarse abriese de igual forma la consulta o un informe basado en esa consulta.

Perdona la tardanza comentame si te sirvió para algo y si necesitas mas aclaraciones.

me gustaría enviarte el modelo de mi base de datos, si me enviaras tu correo y te envío el modelo de mi bd, seria mejor y me entenderías mejor

Muchas gracias

Perdona la tardanza, estaba de viaje y no pude modificar mi estado. No se si lo habrás resulto ya.

Tengo access 07 y seguramente variasen los comandos y funciones, así que es posible que te diese fallos si la modifico.

Si quieres contactar conmigo para el email hazlo por mensaje privado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas