¿Cómo validar los datos de un informe insertado en un formulario?

Tengo un formulario llamado frm_llamadas al cual le inserte el informe inf_agenda, este informe es un contador de los registros que se van trabajando en el formulario y se actualiza cada vez que le paso al siguiente registro.

Lo que necesito es que cuando el informe indique que el día de hoy le di cita a 20 personas, me de un mensaje indicando que ya no puedo citar más.

Hice una prueba con un botón utilizando un IF pero no hace nada, si me pueden ayudar se los agradezco

Codigo del boton:

Private Sub Comando240_Click()
If (txt_citas = 20) Then
   MsgBox "No puedes citar mas pacientes", vbExclamation, "Atención"
    Else
End If
End Sub

Respuesta
2

Yo lo haría con un DCount(), usando como criterio el día (mejor sería la fecha completa), algo así:

If DCount("*","nombreTabla/Consulta","CampoFecha=#" & Date & "#") =20 Then

 MsgBox "No puedes citar mas pacientes", vbExclamation, "Atención"

'Y lo que quieres que haga para que no te deje seguir

End If

También lo puedes hacer viendo los registros que tiene el informe (con un recordset) y haciendo la comparación.

Un saludo.


Buenos Días

Gracias por tu pronta respuesta!

Utilice If DCount como me lo sugeriste pero no hace nada, el código se lo pegue al botón del formulario para ver que hacia...

Q_AGENDA_LLAMADAS CONSOLIDADAS2= consulta que carga los datos del informe

txt_fe_citas= es el nombre del cuadro texto en el informe

If DCount("*", "Q_AGENDA_LLAMADAS CONSOLIDADAS2", "txt_fe_citas=#" & Date & "#") = 22 Then
 MsgBox "No puedes citar mas pacientes", vbExclamation, "Atención"
End If

Te adjunto  unas capturas del formulario en donde inserte el informe

Tienes que usar como filtro el nombre del campo que contiene la fecha de la consulta, no el del cuadro de texto del informe.

Hola

hice el cambio pero no hace nada!!!

he buscado mas ejemplos pero no logro hacerlo, no se en que estare fallando

Prueba esto:

Coge la expresión que tienes en el cuadro de texto del informe que te dice los citados para cada hora, y valídala contra los 22 que es tu tope. O usa el cuadro de texto correspondiente a Libres.

Si quieres sube una copia de tu BD con el formulario, informe y tablas/consultas que necesiten para funcionar y te doy opciones... porque viendo solo trozos de imagen, va estar difícil...

Te acabo de subir mi access para que lo observes mejor y tal vez veas donde estoy cometiendo elerror

https://1drv.ms/u/s!AiQ56dh07_lLhSrtRj-cOOLnCMb9

Vamos a ver... exactamente ¿qué es lo que quieres?

¿Qué te avise a las 22 citas de un día cualquiera o que te avise a las 22 citas de una hora de un día?

Porque la cosa cambia: si es la primera (22 citas un día), tienes que comprobar el dato del encabezado del informe (en la imagen el que aparece en azul y pone 44), mientras que si es la segunda (22 citas en una hora de un día), tienes que validar el valor del cuadro de texto que señalas en rojo en la imagen (21 citas a las 3 pm), pero no tiene sentido que lo hagas desde el botón siguiente, tendrías que hacerlo al seleccionar la hora en el formulario...

Lo quiero es que me avise cuando las 22 citas lleguen a la hora seleccionada de un POR día, osea la segunda opción.

En el campo hora si le puse tu código pero tampoco hizo nada, por eso es que solicite más info, hasta había hecho un botón nuevo pero no validaba.

Ok, era lo que suponía que querías, en breve te doy opciones

Una forma sencilla de hacerlo, en el evento "Antes de actualizar" del cuadro combinado hora_prog de tu formulario ponle este código:

Private Sub hora_prog_BeforeUpdate(Cancel As Integer)
If DCount("*", "Q_AGENDA_LLAMADAS CONSOLIDADAS2", "hora_prog=" & Me.hora_prog) >= 22 Then
MsgBox "Ya has llegado al limite de citas en esa hora. Elige otra"
Cancel = True
End If
End Sub

El texto del MsgBox lo personalizas como quieras.

Con ese código, mientras no pongas una hora válida, o pulses la tecla ESC, no te va a dejar avanzar, retroceder, cambiar de control...

Ya me dirás si es lo que buscabas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas