Access - Macro limitar fecha

   
Vista:

Macro limitar fecha

Publicado por Rafi (66 intervenciones) el 23/04/2009 06:44:46
Hola a todos, quiero ayuda de los expertos. Pongo en el evento después de actualizar de un capo fecha la siguiente Macro: Condición:[txt_del]<Fecha()+2; Acción CuadroMensaje. Pues bien, se cumple siempre y cuando no me salga del mes. Es decir, si estamos a 23/04/2009, y digito 24/04/2009; Se activa la macro, si digito 26/04/2009, no se activa y cosa curiosa, si digito 01/05/2009 (me salgo del mes), se activa. Alguien sabe que hago mal, o como se hace con código esta limitación, es para impedir que activen registros antes con un periodo minimo de dos días. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Macro limitar fecha

Publicado por Jefferson (381 intervenciones) el 24/04/2009 06:51:42
Hola Rafi

Lo puedes hacer de varias formas aqui te dejo dos :

1) en el campo donde introduzes la fecha en Propiedades=>Regla de Validacion
>SerieFecha(Año(Ahora()),Mes(Ahora()),Día(Ahora()+2)) Y <SerieFecha(Año(Ahora()),Mes(Ahora()),31)

2) en Propiedades=>Texto de Validacion
La fecha que ingreso no cumple con el rango permitido

Ahora mas prolijo es usando VBA, supongamos que tu campo se llama Texto1
pega esto:

Private Sub Texto1_BeforeUpdate(Cancel As Integer)
'*********************************************
'Codigo Simple Cortesia de Jefferson Jimenez *
'*********************************************
'Creamos la funcion condicional
If Texto1 >= DateSerial(Year(Now()), Month(Now()), Day(Now() + 3)) _
And Texto1 <= DateSerial(Year(Now()), Month(Now()), 30) Then
'De cumplirse dejaria pasar al siguiente campo
Else
'Al no cumplir lanzamos un mensaje explicando el porque _
y dandole al usuario los valores que deberia introducir
MsgBox "La fecha que ingreso" & vbCrLf & _
"no cumple con el rango" & vbCrLf & _
"permitido, este debe ser " & vbCrLf & _
"entre el : " & DateSerial(Year(Now()), Month(Now()), Day(Now() + 3)) _
& " y el : " & DateSerial(Year(Now()), Month(Now()), 30) & "" _
, vbCritical, "Fecha???"
'imposibilitamos el avance al siguiente campo hasta que no se _
incluya la fecha correcta
Cancel = True
End If
End Sub

Un Placer Colaborar
Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Rafi (66 intervenciones) el 24/04/2009 10:27:13
Hola Jefferson, con la primera opción, rula divino, pero con el código siempre me activa el MsgBox. ¿Podrías mirar que ocurre?, me gustaria saberlo para aprender como va esto. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Jefferson (381 intervenciones) el 24/04/2009 17:25:47
Si la fecha esta entre el periodo que deberia, entonces no debe aparecer la caja de mensaje, verifica...

desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Rafi (66 intervenciones) el 24/04/2009 19:46:34
Creo que entonces me entendistes mal, porque parece que me limita el acceso a treinta de mes, ¿es así?, si es así como hago para que no lo limite en el futuro y si unicamente en los dos días siguientes a la Fecha actual. He probado poniendo la primera parte de la condición: >SerieFecha(Año(Ahora()),Mes(Ahora()),Día(Ahora()+2)) , pensé que así lo haría pero sigue impidiendo a fecha por ejemplo de hoy 24/04/2009, si digito 01/05/2009, me salta el MsgBox. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Jefferson (381 intervenciones) el 24/04/2009 21:29:16
de verdad no entiendo, explica mejor lo que pretendes hacer y veremos que podemos hacer....????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Rafi (66 intervenciones) el 25/04/2009 01:45:19
A ver si me explico mejor, tengo un form, los dos primeros Cuadros de texto son tipo fecha, en ellos se inserta un rango de fechas a modo de solicitud, es decir quiero disfrutar en mi trabajo del día 26/04/2009, como libre en concepto de otros pendientes, entonces digito en ambos ese día. Son dos cuadros de texto porque a veces la gente piden días contiguos, más de uno.
Lo que quiero es limitar que esa petición se haga con un periodo de tiempo de 48 horas, es decir si estamos a 25/04/2009; y el ususario solicita ese mismo día o el siguiente, que no acepte la petición, que salga el MsgBox, pero tambien ha de haber una limitación futura, es decir que no se pueda solicitar más allá de los 30 días desde la fecha en que se hace la petición. Si, como dije estamos a 25/04/2009, no acepte tampoco el 26/05/2009 y en adelante. Espero haberme explicado mejor y por supuesto gracias Jefferson.
Tanto el código como el criterio que me pasaste hacen lo primero, no aceptan hasta pasadas las 48 horas, pero al pasar del mes, no de los treinta dias anteriormente expresados arriba, sino del mes en cuestion en el que estamos, es decir poniendo el día 01/05/2009 y sin haber pasado los treinta dias, salta el Msgbox, por lo que mucho me temo que incluso llegará el día 28/04/2009, y el programa no dejará que un trabajador pueda pedir el día 01/05/2009. Gracias Jefferson.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Jefferson (381 intervenciones) el 25/04/2009 06:02:09
ahora si te explicastes mejor

Usando VBA
'*********************************************
'Codigo Simple Cortesia de Jefferson Jimenez *
'*********************************************
'Creamos la funcion condicional
If Texto1 >= DateSerial(Year(Now()), Month(Now()), Day(Now()) + 3) _
And Texto1 <= DateSerial(Year(Now()), Month(Now()), Day(Now()) + 30) Then
'De cumplirse dejaria pasar al siguiente campo
Else
'Al no cumplir lanzamos un mensaje explicando el porque _
y dandole al usuarios los valores que deberia introducir
MsgBox "La fecha que ingreso" & vbCrLf & _
"no cumple con el rango" & vbCrLf & _
"permitido, este debe ser " & vbCrLf & _
"entre el : " & DateSerial(Year(Now()), Month(Now()), Day(Now()) + 3) _
& " y el : " & DateSerial(Year(Now()), Month(Now()), Day(Now()) + 30) & "" _
, vbCritical, "Fecha???"
'imposibilitamos el avance al siguiente campo hasta que no se _
incluya la fecha correcta
Cancel = True
End If
End Sub

Un Placer Ayudarte
Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Rafi (66 intervenciones) el 25/04/2009 11:24:49
Mucho me temo que debo tener algo en la BD, que impide ejecutar ese código, si no te importa ¿te podría enviar una copia y la miras? Yo me pierdo ya con tantas fechas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
No hay problema me la puedes enviar a mi correo jefferson-jimenez@hotmail.com (CLARO ESTA SIN TUS DATOS CONFIDENCIALES)

Pero una vez que este reparada la subo o bien en mi pagina o en speedyshare porque la idea del foro es que todos tengamos accesso a los problemas o que en un futuro alguien tuviese un problema similar y pudiese bajarla para poder guiarse

Ahora soy yo quien pregunta si no hay problema.....?????

De todas formas te dejo un ejemplo en la direccion URL

Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro limitar fecha

Publicado por Rafi (66 intervenciones) el 26/04/2009 00:44:35
Ok, Jefferson, ya estuve mirando detenidamente el ejemplo y la verdad esque no veo nada distinto a lo que ya teniamos, así que sogo sin entender porqué no iba. Así que tiene que ser alguna incompatibilidad con otro código que tenga yo en él. Lo dejamos para otro día ya que son las 0'44 por esta parte del mundo. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar