es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo almacenar sumas en una tabla de MS Access?

Sé cómo suena, no deberías almacenar campos calculados en una tabla de Access. Sin embargo, este es mi caso:

Tengo un formulario donde un usuario ingresa pesos de fardos. En la parte inferior del formulario hay dos campos que calculan los pesos totales de todos los fardos y el número total de fardos. Estos dos campos deben ser almacenados en nuestra tabla para que podamos mantener un registro de los totales de turno a turno.

Tengo los dos campos calculados y luego tengo dos campos ocultos que tienen fuentes de control para la tabla. Los dos campos ocultos están en el formulario principal de este subformulario de peso de fardo. Hay un evento OnClick en el control cuando se ingresa un nuevo peso de fardo que actualiza los controles ocultos principales con los controles calculados del formulario.

El problema:
Estos campos no se actualizan inmediatamente después de ingresar un nuevo peso de fardo y si pongo requery, recalc, refresh en el evento afterupdate, el cursor va al primer registro, lo que es muy poco amigable para el usuario.
A veces alguien tiene que eliminar o cambiar un montón de registros en el medio de este formulario, cada clic y actualización te lleva al principio (o al final si agrego DoCmd.GoToRecord, , AC NewRecord).

TLDR:
Necesito una forma de obtener la suma de todos los fardos de un turno de 12 horas para almacenar en nuestra tabla que no implique actualizar, porque eso desordena la ubicación del cursor si los registros necesitan ser actualizados.
Intenté actualizar la tabla después de que el formulario de peso del fardo pierde el enfoque, pero esto no es consistente con la actualización inmediata de los controles ocultos de peso total de fardo y número total de fardo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en VBA y MS-Access 2007, es importante señalar que en general no se recomienda almacenar campos calculados en una tabla de Access. Sin embargo, en algunos casos, como el descrito anteriormente, puede ser necesario.

    Para abordar el problema de los campos que no se actualizan inmediatamente después de ingresar un nuevo peso de bala, es posible considerar el uso del evento AfterUpdate para los controles del subformulario. En este evento, se puede actualizar los controles ocultos del formulario principal con los valores calculados y luego volver a consultar los controles ocultos para actualizar los totales.

    Para evitar el problema del cursor que se desplaza al primer registro, primero se puede almacenar la identificación del registro actual, actualizar los totales y luego navegar de vuelta al registro guardado utilizando el método DoCmd.GotoRecord.

    Alternativamente, se podría intentar usar una macro o módulo para actualizar los totales sin refrescar todo el formulario. Esto podría implicar el uso de SQL para actualizar directamente la tabla, o el uso de VBA para recorrer los registros y calcular los totales.

    En general, es importante considerar cuidadosamente los compromisos entre almacenar campos calculados en una tabla y usar controles calculados. En algunos casos, puede ser necesario almacenar campos calculados para fines de seguimiento y reportes de datos, pero es importante asegurarse de que la solución sea eficiente, confiable y fácil de usar.

Comments are closed.