Crear un "reminder" con Access (VBA)

El objetivo de recurrir a ustedes, es por que estoy trabajando en una base de datos Access 2016.

Tengo actualmente un usuario que tiene acceso a un formulario Access, y en dicho formulario el usuario configura un recordatorio para una actividad, este usuario programa la fecha y la hora de la actividad, lo que deseo es que ya sea a través de un tipo "pop up" le aparezca un mensaje unos minutos antes que tiene que hacer la actividad y de igual forma le mande un correo con el recordatorio.

Lo que he hecho hasta este momento, es que cree otro formulario que esta ejecutándose y el timer he programado lo siguiente:

Private Sub Form_Timer()
nTimeReminder = 15
'-- Script para crear REMINDER.
   nTimeReminder = nTimeReminder - 1
   If nTimeReminder <= 0 Then
   Dim db As Database
   Dim rs As Recordset
   Dim strSQL As String
   Set db = CurrentDb()
   strSQL = "Select * from Reminders"
   Me.RecordSource = strSQL
   Me.Refresh
   If rs.RecordCount = 0 Then
   MsgBox "No records returned"
   Else
   'Aqui enviare los correos
   End If
   rs.Close
   Set rs = Nothing
   Set db = Nothing
   End If
End Sub

 Pero en esta parte: 

   If rs.RecordCount = 0 Then

Me da el siguiente error:

rs.RecordCount = <Variable de objeto o bloque with no establecido>

1 respuesta

Respuesta
1

Eso es porque estás usando un recordset que no has cargado, tendrías que hacer algo así:

Private Sub Form_Timer()
nTimeReminder = 15
'-- Script para crear REMINDER.
   nTimeReminder = nTimeReminder - 1
   If nTimeReminder <= 0 Then
   Dim db As Database
   Dim rs As Recordset
   Dim strSQL As String
   Set db = CurrentDb()
   strSQL = "Select * from Reminders"
   Set rs=db.OpenRecordset(strSQL)
   If rs.RecordCount = 0 Then
   MsgBox "No records returned"
   Else
   Me.RecordSource = strSQL
   Me.Refresh
   'Aqui enviare los correos
   End If
   rs.Close
   Set rs = Nothing
   Set db = Nothing
   End If
End Sub

Un saludo.


Buenos días.

Primero muchas gracias por la ayuda, me ha servido este comando, y he logrado avanzar.

Pero tengo otro problema:

   nTimeReminder = nTimeReminder - 1
   If nTimeReminder <= 0 Then
   '-- Declaro las variables
      Dim db As Database
      Dim rs As Recordset
      Dim strSQL As String
      Dim dFecha As Date
      Dim var As Date
   '-- Seteo las variables
      dFecha = Date
      Set db = CurrentDb()
      strSQL = "Select * From Reminders Where Fecha_Recordatorio = #" & dFecha & "#"
      Set rs = db.OpenRecordset(strSQL)
      If rs.RecordCount = 0 Then
        '-- Nothing to do!
      Else
         Me.RecordSource = strSQL
         Me.Refresh
        Do While Not rs.EOF
          var = !Hora_Recordatorio
          '-- DESEO COMPARAR HORAS Y 15 MINUTOS ANTES DE LA HORA PROGRAMADA... ENVIAR CORREO
        If rs.EOF Then Exit Do
      End If
   rs.Close
   Set rs = Nothing
   Set db = Nothing
   End If

 En la siguiente linea: 

var = !Hora_Recordatorio

Me da el siguiente error:

Referencia no valida o sin calificar

Lo que estoy tratando de hacer, es que una vez que encuentre que si hay un "reminder", haga una validación con la hora.

Para esto tengo un campo llamado "Hora_Recordatorio" y es un combo box donde el usuario puede escoger horas ej: 13:30, entonces deseo que cada 15 minutos haga la verificación de la hora actual y compare.

Ejemplo: El usuario escogió un recordatorio para las 13:30, y si en este momento son las 13:15, el aplicativo le envié un correo y un mensaje tipo "pop up".

Estoy averiguando también como poder enviar correos desde Access, pero por el momento tengo problemas de como comparar esto del tiempo.

Me ayudas por favor.

Para usar "!" o "." seguido de un nombre o propiedad, primero debes hacer referencia al objeto que lo contiene con With nombreObjeto. Por ejemplo, si trabajas con un recordset "rs", podrías hacer:

With rs
  If .Recordcount=0 Then
  Do While .EOF
  Var=!Campo1
End With

En tu caso, si Hora_recordatorio es un control del formulario, escribe 

var=Me.Hora_recordatorio

y si es un objeto del recordset:

var=rs!Hora_recordatorio

Para enviar mails con access, mira en la web de Neckkito, tiene varios ejemplos con distintos métodos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas