Sumar varios campos y actualizar resultado

He aquí el problema: Tengo un formulario basado en una consulta con varios campos: Cuo, Der, Pen, CuoD, DerD, estos son numéricos Tot1, Tot2, Tot3 que son TxtBox.

Tot1:Nz([CuoE])+Nz([DerE]).

Tot2:Nz([CuoD])+Nz([DerD])

Tot3:Nz([Pen])+Nz([Tot2])-Nz([Tot2])

Lo que no logro, y puedo aseguraros que lo he intentado, es que el Tot3 se actualice según voy introduciendo los datos en cada uno de los campos numéricos.

Los Tot1 y Tod2 si se actualizan inmediatamente pero el Tot3 quiero que se actualice al introducir introducir en cualquier campo. ¿Qué hago mal?

2 Respuestas

Respuesta
1

Ignoro si habrá otras cosas, pero si en Tot3 le sumas y le restas el mismo valor, siempre se te quedará el resultado de [Pen].

Un saludo >> Jacinto

Respuesta
1

Como señala Jacinto, imagino que el Tot3 será así:

Tot3:Nz([Pen])+Nz([Tot1])-Nz([Tot2])

Pero independientemente de la fórmula, pon este código:

Me. Recalc

En los eventos "Después de actualizar" de los 5 campos numéricos. Si no te va, puedes probar con Me. Recalc o Me. Refresh

Otra alternativa es que los cálculos los hagas directamente en VBA:

1º/ En los eventos "después de actualizar" de lso 5 campos pones

Private Sub ...._AfterUpdate()

subCalcula

End Sub

2º/ Añade, en el mismo módulo, este procedimiento:

Private Sub subCalcula()

Me.Tot1=Nz(Me.CuoE,0)+Nz(Me.DerE,0)

Me.Tot2=Nz(Me.CuoD,0)+Nz(Me.DerD,0)

Me.Tot3=Nz(Me.Pen,0)+Nz(Me.Tot1,0)-Nz(Me.Tot2,0)

End Sub

3º/ Borra las fórmulas de los textbox

Perdona por la tardanza en contestarte. Te aclaro que en Tot3, "Pen" es un valor de un campo y ToT1, Tot2 son campos calculados.

He probado a quitar Pen del Tot3 y funciona y se actualiza perfecto por lo que deduzco que el error está en ese campo. ¿Estoy en lo cierto?

Me dices que ponga Refresh o recalc en los campos numéricos. Yo creía que eso era para ponerlo en el calculo, no en el campo. Perdona pero soy 8un poco torpe y me cuesta entender las cosas.

No creo que el problema del cálculo sea el campo Pen. Se me ocurre que pruebes a cambiar la fórmula de Tot3, y en vez de usar Tot1 y Tot2 uses sus fórmulas:

Tot3: Nz([Pen];0)+Nz([CuoE])+Nz([DerE];0)-Nz([CuoD])+Nz([DerD];0)

Lo que te comentaba del Reclac/Refresh, es para que lo pongas en el código asociado al evento "despues de actualizar" de los campos que contienen los datos para hacer los cálculos, no en el campo en sí.

Por último, si quieres, puedes subir una copia de tu BD (con que tenga la tabla y el formulario en cuestión es suficiente) y te lo hago yo.

Me gustaría poder enviarte la Bd, pero no sé a donde. Aquí está mi correo por si quieres enviarme el tuyo. Te prometo que no lo usaré para hacer preguntas. Gracias.

[email protected]

Puedes mandarla (comprimida, si puede ser) a esta dirección:

[email protected]

Buenos días:

Ya te mandé la copia. La tabla se llama Comuneros. La Consulta. Prueba y el informe: FEnero.

Ya pude ver tu BD y no le veo ningún problema a la hora de hacer los cálculos (aunque con tanta columna calculada igual se me escapa algo...)

El me. Recalc no te hace falta ponerlo, ya que haces los cálculos en la consulta (yo había interpretado que lo hacías directamente en el formulario)

Sobre las otras consultas que me haces:

1º/ En los informes de listados, si te pide el parámetro Fecha (a mi me lo hace en access 2013), lo que tienes que hacer es cambiar la función Fecha() por Ahora() en el cuadro de texto del encabezado. Por algún motivo no te la reconoce como una fórmula interna.

2º/ Unos informes los tienes para que se te abran en Vista informes y otros en vista preliminar, aunque al abrirlos desde VBA deberían abrirse todos igual. Comprueba que las propiedades están igual en todos los informes.

3º/ La tabla quizás sería mejor dividirla en dos, una con los datos de los comuneros y otra (u otras) con los datos de las cuotas, derramas... Sobre esta tabla/s "secundarias", yo las estructuraría parecido a esto: Comunero (vinculado con la tabla principal), Periodo (mes,...) Cantidad, Pagado (de tipo Sí/no), FechaPago...

Con esto te evitas tener una tabla con tantas columnas (4 por mes) y te evitas tener que hacer un formulario para cada mes, pues puedes hacer un único formulario y filtrarlo por el mes que necesites.

Te resubo la BD, con una modificación en un código que daba error al entrar al formulario de listados: http://www.filebig.net/files/Z4WaCjjc8P

Para futuras ocasiones, puedes usar Filebig para compartir tus archivos en este foro, o ya que tienes dropbox, usar la opción compartir enlace público.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas