¿Cómo compara fechas en access y mandar mensaje?

Tengo un problemita quiero comparar 3 fechas, pero una de ellas se encuentra en mi sub-formulario el asunto esta así:
Mi formulario principal se llama CONTRATO en el están dos campos donde capturo la fecha de inicio y fin del contrato, sus nombre son INICIO y FIN, ambas salen de la misma tabla, dentro de mi Form principal esta mi subformulario llamado PAGOS, en este esta el otro campo donde capturo la tercera fecha, se llama Fechapago este ultimo esta basado en otra tabla
como puedo hacer para comparar la fecha de inicio, ¿fin y la fechapago? Sabiendo que esta ultima esta en un subformulario y que me mande un mesaje de aviso si en fecha pago ya rebaso la vigencia del contrato
inicio... Fin... Fechapgo... Mensaje
01/01/2011.........01/05/2011........ 01/04/2011....................
01/01/2011.........01/05/2011........ 01/06/2011.................... "FUERA DE VIGENCIA"
He buscado en internet y lo que he encontrado es esta fórmula DateDiff("periodo", fecha1, fecha2) pero no se como usarla con tres campos y más aparte para que me mande el mensaje
gracias y espero que me puedan ayudar !

2 Respuestas

Respuesta
1
Ok, muy sencillo:
En el evento después de actualizar del campo FECHAPAGO vas a poner la siguiente instrucción:
if me.FECHAPAGO < FORMS!contrato!inicio and FECHAPAGO > FORMS!CONTRATO!FIN THEN
MSGBOX "FUERA DE VIGENCIA"
END IF
Para ver los eventos de FECHAPAGO da click con el botón derecho en modo diseño en el campo FECHAPAGO selecciona propiedades y ahí esta la pestaña eventos, busca el evento después de actualizar y ahí pones la rutina anterior en código.
También la puedes poner en antes de actualizar y si agregas la instrucción DOCMD. CANCELEVENT antes del END IF no deja salir del campo hasta que alimenten una fecha correcta.
¿Hola qué tal? Espero que estés bien, muchas gracias por tu repuesta, pero no me funciono, no se que hice mal
Mira, de esta manera es como me quedo
Private Sub FECHAPAGO_AfterUpdate()
If Me.FECHAPAGO < Forms!formHonorarios!FINICIO And FECHAPAGO > Forms!formHonorarios!FFIN Then
MsgBox "FUERA DE VIGENCIA"
End If
End Sub
En la pregunta de arriba cambie los nombres de los formulario, subformulario y campos para mayor comprensión pero estos son los verdaderos solo sustituí los nombres
formhonorarios es el nombre del Formulario principal y el nombre de sus campos FINICIO y FFIN
El nombre de el subformulario es consultahonorarios1 y el nombre del campo es FECHAPAGO lo hice como me dijiste, pero no funciona, tal vez hice algo mal
Ok, cuando dices que no te quedó, es que no funcionó.? O te mando algún error.?
Al alimentar la fecha en FECHAPAGO das enter o te cambias de campo y no hace nada.?
En las tablas los campos FECHAPAGO, FINICIO, FFIN están definidas como tipo FECHA/HORA.?
Pon por favor la siguiente instrucción al inicio de la rutina para saber que valores esta comparando:
MSGBOX ME.FECHAPAGO & " " & FORMS!FORMHONORARIOS!FINICIO & " " & FORMS!FORMHONORARIOS!FFIN
Si gustas puedes enviarme la base de datos en ZIP a mi correo la checo y te la regreso, tiene que ser en ZIP por que hotmail no acepta extensiones mdb, mi correo es::
[email protected]
Respuesta
1
Lo que empiezo por no entender es porque tienes que comparar 3 fechas. ¿Qué tienes que comparar entre las 3? Lo único que dices es comparar dos "fechapago" y "fin".
Si mira en mi formulario principal tengo 2 campos, fechaIn y fhechaFin en estas pongo el inicio de un contrato digamos 01/07/2011 y en la otra pongo (fechafin) 31/12/2011 es la vigencia del contrato. Dentro de mi formulario esta un subformulario en el hay un campo llamado fechapago, que es donde capturo la fecha de los recibos, entonces lo que ue quiero hacer es que cuando en fechapago capture un recibo digamos 10/08/2011 me lo acepte, pero si capturo otro que en fechapago sea 01/01/2012 me mande un mensaje que me diga recibo fuera de vigencia, es un ejemplo
Eso es lo que trato de hacer, pero la verdad no encuentro al manera, cabe señalar que el formulario principal y el subformulario están en distintas tablas
fechain... fechafin... fechapago
01/07/2011.............31/12/2011................08/08/2011......................
..................................................................01/01/2012.......... RECIBO FUERA DE VIGENCIA
Gracias por responder tan rapido y espero haber sido más claro muchas muchas gracias !
Ahora no te he contestado tan rápido porque he tenido un pequeño problema. He cambiado mi correo en Todoexpertos y no podía acceder a mi categoría de experto, ni contestar preguntas...
Una cosa, que es eso de "capture un recibo", es importante, porque lo que comentas en principio no es complicado, pero no acabo de entender como introduces la fecha en fechapago.
Si, mira tengo un formulario principal llamado FORMCONTRATO en el hay 2 campos que yo utilizo para capturar la vigencia del contrato, se llaman F_INICIO y F_FIN estos están en formato fecha/hora digamos que en f_inicio pongo 01/01/2011 y en f_fin pongo 01/05/2011
Y en ese mismo formulario tengo un subformulario llamado PAGOS en e esta un campo llamado FECHAPAGO en este campo capturo la fecha que viene el los recibos de honorarios digamos por ejemplo que viene en el recibo la fecha 05/04/2011, como entra dentro de la vigencia del contrato no hay problema, pero si pongo 05/05/2011 ó 01/06/2011 ya hay problema por que ambas se pasaron de la vigencia del contrato
¿Cómo puedo hacer para que me mande un mensaje cuando se encuentre con esta situación?
Los tres campos tienen el mismo formato fecha\hora
Creo que tu problema es el referirte adecuadamente a un control del formulario desde un subformulario.
Para ello, es algo tan sencillo, pero a la vez desconocido como:
Me.parent.[micampo]
En tu caso en el evento después de actualizar la fecha del subformulario PAGOS, "fechapago", pondría algo así:
If me.[fechapago] > me.parent.[fechafin] then
msgbox "la fecha es superior a la del final del contrato"
end if
Podría darte algún problema por el tipo de campo fecha, según cómo lo tengas todo definido. Pero eso debería funcionar,(yo lo he probado y funciona).
Un saludo y te comento que me voy de vacaciones un mesecillo más o menos, intentare conectarme pero...
Hola que tal, pues gracias por tu ayuda, si me funciono como quería, solo resta darte las gracias y desearte felices vacaciones que te diviertas mucho y se te agradece tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas