En access 2010, en una orden if solo me cumple el tercer argumento, no el segundo.

Tengo un campo (R) del tipo Si/No y quiero que si el campo (R) es Si, otro campo (ILE) calcule la diferencia entre las fechas A y B, y si el campo (R) es No, eñ otro campo(ILE) calcule la diferencia entre las fecha A y C.

1 Respuesta

Respuesta
2

Veamos... aquí tienes varios problemas, y con la información que suministras es imposible conocer todos los detalles del problema. Las dudas retóricas que planteo son:
1.- Ese campo sí/no probablemente tendrá un valor predeterminado, que imagino será NO
2.- ¿Qué pasa si no hay valores de fechas?

3.- ¿Qué pasa si te vas moviendo entre registros que ya están informados? ¿Qué pasa si el registro es un nuevo registro?
En consecuencia, es difícil darte una respuesta que te funcione bien, salvo que por suerte suene la campanilla.

Así que te voy a indicar el código que, salvo mayores detalles, yo pondría, suponiendo que todos los elementos que intervienen en el código tienen su propio control en el formulario:
a) En el módulo asociado al formulario, bajo la/s línea/s Option:

Private sub realizoCalculo()
If not me.newrecord then
    If isnull(me.fechaA) then
        msgbox "No se pueden realizar los cálculos pues falta información de la fecha A"
        Exit sub
    End if
    If me.CampoSiNo=-1 then 'el campo es Sí
        If isnull(me.fechaB) then
            msgbox "No se pueden realizar los cálculos pues falta información de la fecha B"
            Exit sub
        End if
        me.CampoSí=me.fechaB-me.fechaA
        me.CampoNo=null
    Else 'el campo es No
        If isnull(me.fechaC) then
            msgbox "No se pueden realizar los cálculos pues falta información de la fecha C"
            Exit sub
        End if
        me.CampoNo=me.fechaC-me.fechaA
        me.CampoSí=null
    End if
End if
End sub

b) En el evento "Al activar registro" del formulario

Private sub Form_Current()
   Call realizoCalculo
End sub

c) En el evento "Después de actualizar" del contro sí/no

Private sub...()
   Call realizoCalculo
End sub

Ojo: lo anterior está escrito a vuelapluma y, como indicaba al principio, me baso en la suposición de que todos los elementos intervinientes están como controles en el formulario.

Saludos

Neckkito (http://bit.ly/NckAccess)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas