No da el resultado exacto en los cálculos dentro de un ciclo For.. Next

Utilizo este proceso para realizar los Cálculos del PVP.

El proceso que lee cada una de las lineas:

Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
While Not Rst.EOF
DoCmd. OpenForm "INTERMEDIOCALCULOCOMBINADOS"
Rst. MoveNext
Wend
Rst. Close
Set Rst = Nothing
Exit Sub

Realizo los Cálculos de esta Forma:

En el formulario: INTERMEDIOCALCULOCOMBINADOS en el evento: Al Activar registro tengo estas instrucciones:

Private Sub Form_Current()
OpenForms = DoEvents
Call CALCULOPVPCOMPUESTOS
End Sub

el resultado es este:

PVP Calculado dentro del Ciclo :

Si de forma individual llamo al Producto este es el resultado correcto que ha de calcular:

La llamada al cálculo: Call CALCULOPVPCOMPUESTOS es el mismo para los dos procesos tanto para el Formulario Continuado como para la llamada de forma individual del producto.

NO extrae totalmente el resultado final del Resultado que es: 5,08789

1 respuesta

Respuesta
1

No los extrae porque sencillamente el recordset clonado no avanza, es decir, si hace un seguimiento se dará cuenta que se queda en el primer registro, esto se debe a que el formulario de los cálculos se hace una llamada a Me. Recalc o Me. Refresh.

Trate de cambiar la llamada del recordset clonado con un FOR nexT, algo como:

FOR X=1 TO Me.RercordsetClone.Recordcount

Call CALCULOPVPCOMPUESTOS  

DoCmd.GoToRecord , , acNext

NEXT X

Pruebe colocando un temporizador en el formulario que hace los cálculos, para que dé tiempo mientras se avanzar al siguiente recordset.

Esta instrucción no es correcta : OpenForms = DoEvents

Sobra OpenForms =

Aunque es mejor que actualice con UPDATE, no puedo ampliar más, toda vez, que desconozco su aplicación.

He realizado un proceso que calcula todos los productos he creado una tabla paralela en la que recojo los productos y vanquedando marcados cuando es calculado el precio de venta así de esta forma cuando abre el formulario: INTERMEDIOCALCULOCOMBINADOS siempre recoge el primer registro que esta sin estar marcado y de esta forma el ciclo se me completa bien.

El primer registro de la tabla me calcula perfectamente el precio de venta pero a partir del segundo ya no son correctos los precios.

Hay alguna manera que después de calcular el precio de venta pueda refrescar totalmente el proceso como ocurre con el registro primero cuando lanzo los cálculos.

El primer campo calculado es correcto sea del producto que sea. Es a partir del segundo cuando ya fallan los cálculos. Por eso necesito refrescar totalmente las memorias para que cada vez que abra el ciclo los cálculos sea como si fuese el primero.

He cambiado el OpenForms = DoEvents por DoEvents y me hace lo mismo.

Vuelvo y le cuento, cuando se hace un Me. Recalc desde el formulario que se abre, pareciera como si Access perdiera el control de Recordset NO avanza, esto lo he probado con otra pregunta muy similar a su caso. Si quiere envíeme su base de datos a [email protected] y trato de colaborarle.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas