Access - calculos en subformularios, actualizados en form

 
Vista:

calculos en subformularios, actualizados en form

Publicado por Per (1 intervención) el 17/08/2002 23:37:37
Hola. Tengo una duda y queria consultarla. Me extenderé un poco tratando de ser lo mas claro posible. Tengo formulario con un subformulario. Cada uno asociado a una tabala.

En cada fila del subformulario introduzco una serie de datos. Con esos datos realizo una serie de calculos intermedios. Estos calculos han de actualizarse en el formulario al actualizar un nuevo registro del subformulario.

Un Ejemplo

FORMULARIO
Nombre:---------
...
HorasTrabajadas: ?¿
EurosProducidos: ?¿

SUBFORMULARIO

HoraInicio: 09:00
HoraFIn: 10:00
EurosProducidosInt: 15

(* Al hacer esto automaticamente el campo Horas trabajadas del form se tiene que poner como 1:00 y Euros producidos = 15 *)

HoraInicio: 10:00
HoraFin: 11:00
EurosProducidosInt: 17,3

(*Al hacer esto automaticamente, en el formulario HorasTrabajadas = 02:00 y EurosProd = 32,3 *)

Yo lo que hago ahora mismo es que HorasTrabajadas y EurosProducidos no pertenecen a la tabla, sino que son campos independientes donde en origen del control pongo =[Tarea Subformulario].Formulario!SumaEuros (Siendo sumaeuros la suma del campo EurosProducidosInt).

Lo quiero hacer es ponerlos como campos y que HoraInicio, HoraFIn, EurosproducidosInt sean variables y borrarlas de la tabla del subformulario, por que asi el volumen de los datos serrá mucho menor (tengo muchos mas campos del estilo de EurosProducidosInt).

Pero la verdad es que no se como hacerlo. Agradecederia que alguien me ayudara.
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
Imágen de perfil de Alejandro

calculos en subformularios, actualizados en form

Publicado por Alejandro (4142 intervenciones) el 21/04/2023 23:42:35
Para hacer lo que estás buscando, necesitas utilizar eventos de actualización en el subformulario y en el formulario principal. Aquí te indico los pasos que debes seguir:

1. Elimina los campos HoraInicio, HoraFin y EurosProducidosInt de la tabla del subformulario.

2. Agrega los campos HoraInicio, HoraFin y EurosProducidosInt como controles en el subformulario.

3. Agrega un evento AfterUpdate en cada uno de los controles HoraInicio, HoraFin y EurosProducidosInt. En el evento AfterUpdate, escribe código para actualizar los campos HorasTrabajadas y EurosProducidos en el formulario principal.

El código para el evento AfterUpdate de HoraInicio y HoraFin debe calcular la diferencia entre las horas y actualizar el campo HorasTrabajadas en el formulario principal. El código para el evento AfterUpdate de EurosProducidosInt debe agregar su valor al total de EurosProducidos en el formulario principal.

A continuación, te muestro un ejemplo de código que puedes usar para actualizar los campos en el formulario principal:

1
2
3
4
5
6
7
8
9
10
11
Private Sub HoraInicio_AfterUpdate()
    Me.Parent.HorasTrabajadas = DateDiff("n", Me.Parent.HoraInicio, Me.Parent.HoraFin) / 60
End Sub
 
Private Sub HoraFin_AfterUpdate()
    Me.Parent.HorasTrabajadas = DateDiff("n", Me.Parent.HoraInicio, Me.Parent.HoraFin) / 60
End Sub
 
Private Sub EurosProducidosInt_AfterUpdate()
    Me.Parent.EurosProducidos = Me.Parent.EurosProducidos + Me.EurosProducidosInt
End Sub

Recuerda que debes reemplazar los nombres de los campos y los controles con los nombres que utilizas en tu base de datos.

Espero que esto te ayude a resolver tu problema. ¡Buena suerte!
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