Fórmula en evento

Dudas sobre Tablas, Consultas, Formularios, Informes...
JUBILADO1940
Nivel 6
Reto03
Mensajes: 234
Registrado: Jue Dic 03, 2015 9:56 pm

Fórmula en evento

Mensajepor JUBILADO1940 » Mar Ago 06, 2019 12:45 pm

Hola, aquí estoy de nuevo.
Quiero poner en el formulario FrmAbrirLibro y en el evento del campo CobBanco "antes de actualizar" lo siguiente:

If Me.Tipo = 0 Then
If Me.NomConcepto.Column(1) = "Saldo anterior" Then
If Me.CobBanco > 0 Then
If Me.RbosPtes > 0 Then
Me.CobFondo = Me.CobBanco + Me.RbosPtes
End If
End If
End If
End If


Al introducir un valor en el campo CobBanco, si ese valor es mayor que 0 me entra en el otro If y si en el campo RbosPtes he introducido un valor mayor que 0, lo que quiero es que la suma de esos 2 valores se guarde en el campo CobFondo.
No me lo hace y no sé la causa.
Qué estoy haciendo mal?
Pd. Se me olvidó preguntar también la posibilidad que hay de que cuando se da la condición de Me.Tipo = 0 se pueda impedir la introducción de datos en los otros campos que no se utilizan en la expresión. Ya lo he intentado con Enable pero no funciona.
Gracias

pitxiku
VIP
Reto02
Mensajes: 313
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Fórmula en evento

Mensajepor pitxiku » Mié Ago 07, 2019 6:44 pm

En vez del evento antes de actualizar, puedes probar con el evento después de actualizar. Más que nada, por eso de que el primer evento está pensado para verificar que los datos son válidos antes de guardar el registro, y en el segundo ya están guardados los cambios.

También puedes colocar puntos de interrupción en el código, y ejecutar paso a paso para ver si se cumplen los if. También podrás ver qué valores hay en cada control, colocando el cursor sobre cada objeto, por si acaso hay alguno que no tiene el valor que crees.

En cuanto a lo otro, puedes usar la propiedad Enabled:

Me.UnControl.Ensbled = (Me.Tipo <> 0)

Y el evento, yo veo 2:

- Después de modificar el valor en Tipo.
- Cada vez que se cambie de registro, porque también podrá cambiar el valor del tipo.

JUBILADO1940
Nivel 6
Reto03
Mensajes: 234
Registrado: Jue Dic 03, 2015 9:56 pm

Re: Fórmula en evento

Mensajepor JUBILADO1940 » Mié Ago 07, 2019 10:38 pm

Gracias Pitxku.
Te explico.
Los campos son: CobBanco, PagBanco, RbosPtes, CobRBos, CobFondo, PagFondo, NonCon, Tipo
Los Nombres: CobroBanco, PagoBanco, RbosPendientes, CobRecibos, CobroFondo, PagoFondo, NomConcepto, TipoConcepto.
Bueno esos son los campos con sus nombres. La expresión en el evento "Antes de actualizar" del campo CobBanco es la siguiente:
If Me.Tipo = 0 then ' el tipo 0 sólo es para apuntar los saldos anteriores
If me.CobBanco > 0 then ' Si el valor que introduzco en el campo es mayor que 0, entro en el If
MsgBox " Saldo del banco positivo",vbInformation ' Para saber si entró en el If :D :D :D :D :D
If me.RbosPtes > 0 then ' Si hay recibos pendientes
MsgBox " Hay recibos pendientes", vbInformation ' Para saber si entró en el If :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Me.CobFondo = Me.CobBanco + Me.RbosPtes
endif
endif
endif
No entra en el segundo If y no sé la causa. Ya lo complicaré más tarde, pero ahora necesito saber la causa de no pasar el 2º If.
Me pondré a estudiar el enabled. Que significa (Me.Tipo<>0), me.tipo mayor o menor que 0 .Para qué?

pitxiku
VIP
Reto02
Mensajes: 313
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Fórmula en evento

Mensajepor pitxiku » Jue Ago 08, 2019 1:56 am

Si no entra en el segundo If, es porque no se cumple la condición. Comprueba el valor del campo y, si es preciso, usa un MsgBox para ver el valor. También hay que verificar el tipo de datos, por eso de que no se tratan igual los textos que los números.

Me.Tipo<>0 significa que la condición es que Me.Tipo debe ser distinto que cero. Si prefieres, puedes usar la negación con el igual:

Me.UnControl.Enabled = Not (Me.Tipo = 0)

pitxiku
VIP
Reto02
Mensajes: 313
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Fórmula en evento

Mensajepor pitxiku » Jue Ago 08, 2019 2:13 am

Otra cosa: recuerda que los valores nulos no son iguales a nada, ni siquiera son iguales a otro valor nulo.

Y más info sobre los operadores de comparación:

- https://docs.microsoft.com/es-es/office ... -operators

JUBILADO1940
Nivel 6
Reto03
Mensajes: 234
Registrado: Jue Dic 03, 2015 9:56 pm

Re: Fórmula en evento

Mensajepor JUBILADO1940 » Jue Ago 08, 2019 2:31 pm

Hola Pitxiku. Gracias por tu pronta respuesta.
Merezco palos en el sitio que más me duela, por haber ocupado tu tiempo con una cosa que cuando te la diga te vas a quedar :o :o :o :o-
El error estaba en que el evento debe colocarse en campo RbosPtes y yo lo estaba colocando en el campo de CobBanco.
Con esto queda solucionado el problema.
Anoche estuve probando y di con la respuesta.
Ahora me pondré a estudiar el enabled y haré todas las pruebas de que sea capaz antes de preguntar nada.
Gracias de nuevo


Volver a “Objetos Access”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados