Actualización en formulario

Tengo una duda y quería consultarla a ver si me puedes ayudar. Me extenderé un poco tratando de ser lo más claro posible aunque creo que no es algo complicado.
Tengo formulario con un subformulario. Cada uno asociado a una tabla.
En cada fila del subformulario introduzco una serie de datos. Con esos datos realizo una serie de cálculos intermedios. Estos cálculos 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 así el volumen de los datos serrá mucho menor (tengo muchos más campos del estilo de EurosProducidosInt).
Pero la verdad es que no se como hacerlo. ¿Puedes ayudarme con un ejemplo?
He pensado poner algo como en el evento después de actualizar de un campo del subformulario como:
forms¡[PArte]![Euros] = forms¡[PArte]![Euros] + [Tarea]!EurosInt.
¿Algo así se puede hacer?.

3 respuestas

Respuesta
1
Lo primero que he decirte que según mi opinión es mucho mejor solución guardar los registros hijos (subformulario), pues de esa manera siempre podrías recomponer el cálculo, guardarlos movimientos que te producen el total. Hoy en día no ha problemas de espacio (un disco duro suele ser gigante para llenarlo de datos), además tendrías el problema de que en formulario continuo (que supongo que es lo que será el subformulario) no puedes poner un campo para meter datos si no está soportado por un campo (al introducir un valor en el 2º registro, el 1º cogería el valor del segundo). Lo que si puedes hacer es poner como campos las variables que ahora tienes en el formulario principal (HorasTrabajadas y EurosProducidos), simplemente en el código del subformulario, en el evento después de actualizar pones el código que tienes ahora en el origen de control:
Forms!Formulario.EurosProducidos = SumaEuros
Y lo mismo para las horas.
El guardar los totales en la tabla principal te puede venir muy bien para luego realizar informes o cálculos posteriores (te facilitará mucho las cosas).
La solución que propones por ahorrar espacio, en mi opinión es peor.
Respuesta
1
La verdad es que no te cojo la idea. En principio todos los cálculos que hagamos en campos independientes ya son de por si variables. Como ya sabrás, access no guarda cálculos sino que los efectúa sobre el registro activo.
Lo que ya no se tampoco es si el problema que tienes es como pasar el valor de un control del subformulario a otro control del formulario, si es eso, la sintaxis correcta para el Origen del control en el cuadro de texto del form principal seria:
=[Formularios]![Clientes]![Secundario24]!Cargo
Donde Clientes es el form principal, Secundario24 es el nombre del subformulario y Cargo es el nombre de un campo del subform.
NOTA: creo que no te he captado bien la pregunta, pero en fin, aquí estamos.
Ejemplo de una variable para asignarle valor a un cuadro de texto:
Private Sub Nº_ENTRADA_GotFocus()
Dim Msg, Title, Defvalue, Answer
Msg = "Escriba el texto (AROUT, CACTU, THEBI, etc.)."
Title = "Inputbox ejemplo y variable"
Defvalue = "CACTU"
Answer = InputBox(Msg, Title, Defvalue)
If Answer <> "" Then
Nº_ENTRADA.Value = Answer
End If
End Sub
Hola, gracias por la respuesta. Intentaré aclarar un poco más.
Tengo un formulario con un subformulario.
En cada fila del subformulario introduzco unos datos. Con esos datos hago unos cálculos, con lo que tengo por cada fila una serie de valores calculados.
Quiero que esos datos calculados aparezcan en el formulario. Cada vez que los obtengo, los muestro en el formulario.
En la siguiente fila del subformulario vuelvo a introducir unos datos.
Ahora obtengo unos datos distintos y lo que me gustaría es que me actualizara el formulario con esos datos MÁS los que he calculado en la fila anterior.
Así sucesivamente.
¿Crees qué se puede hacer?
Gracias
Claro que se puede hacer, tienes un ejemplo en neptuno.mdb y su formulario Pedidos con el subformulario pedidos. En el pie de este formulario se van recogiendo los distintos subtotales del subformulario para conseguir una suma Total.
El truco esta en añadir en el pie del subformulario un cuadro de texto independiente (p.e. vamos a llamarlo SubtotalPedido) con Origen del control =Suma([PrecioConDescuento]) para que nos haga una suma del campo PrecioConDescuento.
Después añadimos otro cuadro de texto independiente (p.e.Vamos a llamarlo SubTotal) en el formulario principal (yo lo pondría en el Pie del form) y que recoja el valor del SubtotalPedido del subformulario, para eso ponemos su Origen del control así:
=[Subformulario Pedidos].[Formulario]![SubtotalPedido]
Donde Subformulario Pedidos es el nombre del subform, Formulario es una referencia a Parent obligatoria, y SubtotalPedido es nuestro cuadro de texto independiente
Y a partir de aquí seguimos haciendo nuestros cálculos. En el caso de neptuno hace una suma de Cargo a este subtotal para acabar con un Total.
Respuesta

Excellent post! We will be linking to this great article on our website. Keep up the good writing. Kokoa TV

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas