Porque Requery no actualiza bien los datos?

Tengo un Formulario llamado formFactura con un subformulario formFactura1. En formFactura1 tengo un campo de texto llamado Subtotal que muestra el total del formulario.

Para cerrar el formFactura que además de cerrar el formulario introduce datos en el campo "Total" de formFactura, para lo que ejecuto este código:

Me. FormFactura1. Requery

Me.Total = Forms!formFactura!formFactura1.Form!Subtotal
DoCmd. RunCommand acCmdSaveRecord

DoCmd. Close acForm, "formFactura"

Bien pues tras hacer varias pruebas cuando ejecuto el Me. FormFactura1. Requery, me pone siempre el total en 0. Si se lo quito actualiza bien los datos pero a veces la última línea de los detalles no me la calcula.

Tengo otro formulario con el mismo código y funciona perfecto. ¿Alguna idea de a que se puede deber?

2 Respuestas

Respuesta
3

Eloy, tu verás lo que te conviene pero lo veo más sencillo, que el código lo pongas en el subformulario. Supongamos que éste tiene los controles Precio, cantidad, subtotal. Por ejemplo, en el evento Después de actualizar del cuadro de texto Cantidad

Subtotal=precio*cantidad

docmd.runcommand accmdsaverecord

me.parent!totalfactura=dsum("subtotal","tablaorigendelsubform","idfactura=" & me,idfactura & ""

Suponiendo que el campo que relaciona el form con el subform se llame Idfactura

Así, a medida que vayas poniendo productos en el subformulario, en el cuadro TotalFactura del formulario te va poniendo la suma acumulada.

Muchas gracias si que es mucho más fácil y más rápido también. Gracias

Muy buenas, he implantado esto pero me he dado cuenta que me da un pequeño error.

Tengo un botón para eliminar cada línea del detalle de las ventas. Al pulsarlo, luego de eliminar le puse este código para que me recalcule el total:

Subtotal = PCoste * Cantidad

DoCmd.RunCommand acCmdSaveRecord

Me.Parent!Total = DSum("subtotal", "tblIngresoProducto", "Ingreso=" & Me.Ingreso & "")

El tema es que me borra el registro pero me deja una línea en blanco (que me da error de que no hay ningun prooducto que coincida), y para finalizar el borrado tengo que pulsar esc. He probado y el problema es la línea:

 Subtotal = PCoste * Cantidad

Pero sí se la borro no me recalcula bien el total. Me queda así tras pulsar el boton de eliminar:

No sé si me he explicado más o menos jejej. Muchas gracias.

Si tengo el formulario Ventas

Voy a eliminar los limones. Pulso el botón y

Lo ha eliminado y en TotalVenta tienes el nuevo resultado

El código que tengo puesto es

Respuesta
1

Al final creo que lo he medio solucionado. Lo que he hecho es enviar el foco a otro campo del formulario y darle un poco de tiempo para que coja el totaldel subformulario. Pongo el código por si se sirve a alguien aunque no creo que sea la mejor solucion:

Private Sub Comando64_Click()

IdFactura.SetFocus
EsperaSecs 0.5
Me.Total = Forms!formFactura!formFactura1.Form!Subtotal
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close acForm, "formFactura"

End Sub

'LA FUNCION

Function EsperaSecs(Segundos As Single)
' Espera los segundos especificados en la ejecución del código
Dim Hora As Single
Hora = Timer
Do While Timer - Hora < Segundos
DoEvents
Loop
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas