RECORRER LINEAS FORMULARIOS |
Responder
|
Página 12> |
| Autor | |
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Tema: RECORRER LINEAS FORMULARIOSEnviado: 12/Diciembre/2021 a las 08:39 |
|
Dentro de un Formulario continuo he de recorrer cada una de las lineas existentes y calcular los Precios de Venta.
He probado con estos dos rutinas: Dim Rst As DAO.Recordset Set Rst = Me.RecordsetClone While Not Rst.EO Call CALCULOPVP Rst.MoveNext Wend Rst.Close Set Rst = Nothing y con esta otra: Dim bucle As Integer Dim i As Integer DoCmd.GoToRecord , , acFirst For i = 1 To Me.Recordset.RecordCount Call CALCULOPVP DoCmd.GoToRecord , , acNext Next Me funcionan bien las dos, pero en el momento que dentro del CALL, encuentran que abro otros formularios para extraer los datos para calcular el PVP, el proceso, se me queda en la primera linea sin hacer el recorrido por cada una de las lineas del Formulario Principal. Os agradeceria si puedieseis indicarme otra forma de trabajo para que me pudiese funcionar. |
|
|
jvob
|
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 12/Diciembre/2021 a las 10:46 |
|
Hola Podrias poner el codigo que realizas con "CALCULOPVP" Saludos
|
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 13/Diciembre/2021 a las 06:36 |
|
Este el codigo que hay en el CALL con la llamda a otrso formularios que contienen los datos complementarios para realizar el Calculo:
*************************** '-- RUTINA CALCULO PVP -- * '*************************** Sub CALCULOPVP() '* Dim AREAPRODUCTO As Double Dim AreaMaterial As Double Dim UnidadesHoja As Double Dim UnidadesMaterial As Double Dim TOTALMTS2 As Double '* AREAPRODUCTO = ((Me.AnchoProducto / 1000) + (Me.AnchoSangrado / 1000)) * ((Me.AltoProducto / 1000) + (Me.AltoSangrado / 1000)) '* AreaMaterial = Me.AMaterial UnidadesHoja = Nz(Int([AreaMaterial] / [AREAPRODUCTO])) If UnidadesHoja = 0 Then UnidadesHoja = 1 Else End If '* Dim ValorDecimal As Double Dim ParteEntera As Long Dim ParteDecimal As Double ValorDecimal = Nz([UNIDADESTOTALES] / [UnidadesHoja]) ParteEntera = Int(ValorDecimal) ParteDecimal = ValorDecimal - ParteEntera If ParteDecimal <> 0 Then UnidadesMaterial = ParteEntera + 1 Else UnidadesMaterial = ParteEntera End If TOTALMTS2 = 0 '* If Me.GranFormato = "SI" Then If AreaMaterial < Me.AreaMinima Then AreaMaterial = Me.AreaMinima Else End If Else End If '* Dim SELECTORUNIDADES As Double Dim SUMAGASTOSIMPRESION As Double Dim SELECTORUNIDAD As Double Dim SUMAGASTOSMATERIALES As Double If GranFormato = "SI" Then SUMAGASTOSIMPRESION = SUMACOSTESIMPRESION SELECTORUNIDADES = Round(TOTALMTS2, 3) SELECTORUNIDAD = Round(TOTALMTS2, 3) / UNIDADESTOTALES Else SUMAGASTOSIMPRESION = SUMACOSTESIMPRESION SELECTORUNIDADES = Round(UnidadesMaterial, 3) SELECTORUNIDAD = Round(UnidadesMaterial, 3) / UNIDADESTOTALES End If Me.Recalc '* If Me.GranFormato = "SI" Then SUMAGASTOSMATERIALES = SUMAMATERIALES SUMACOSTESMATERIALES = CosteMateriales Else SUMAGASTOSMATERIALES = SUMAMATERIALES SUMACOSTESMATERIALES = CosteMateriales End If Me.Recalc '* DoCmd.OpenForm "COMPUESTOIMPRESIONTRABAJOINICIO" DoCmd.OpenForm "COMPUESTOPREPOSTIMPRESIONTRABAJO" '* DoCmd.OpenForm "COMPUESTOPREPOSTIMPRESIONPRODUCTO" DoCmd.OpenForm "COMPUESTOCOSTESIMPRESIONPRODUCTO" '* DoCmd.OpenForm "COMPUESTOCOSTESIMPRESIONMATERIAL" DoCmd.OpenForm "COMPUESTOPREPOSTIMPRESIONMATERIAL" DoCmd.OpenForm "COMPUESTOMATERIALESINICIO" '* Me.Recalc Dim TOTAL1 As Double Dim TOTAL2 As Double TOTAL1 = Nz(Me.SUMAPRODUCTO * Me.UNIDADESTOTALES) TOTAL2 = Nz(Me.SUMAMATERIAL * SELECTORUNIDADES) Me.PVPLINEA = Nz(Me.SUMATRABAJO) + Nz(TOTAL1) + Nz(TOTAL2) Me.Refresh '* DoCmd.Close acForm, "COMPUESTOIMPRESIONTRABAJOINICIO" DoCmd.Close acForm, "COMPUESTOPREPOSTIMPRESIONTRABAJO" '* DoCmd.Close acForm, "COMPUESTOPREPOSTIMPRESIONPRODUCTO" DoCmd.Close acForm, "COMPUESTOCOSTESIMPRESIONPRODUCTO" '* DoCmd.Close acForm, "COMPUESTOCOSTESIMPRESIONMATERIAL" DoCmd.Close acForm, "COMPUESTOPREPOSTIMPRESIONMATERIAL" DoCmd.Close acForm, "COMPUESTOMATERIALESINICIO" '* si necesitas mas informacion dimelo y te la indico. Un saudo |
|
|
jvob
|
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 13/Diciembre/2021 a las 10:05 |
|
Hola Dento de la llamada a CALCULOPVP no veo necesidad de poner ningún Me.Recalc ni tampoco el Me.Refresh que pones despues de la linea Me.PVPLINEA = Nz(Me.SUMATRABAJO) + Nz(TOTAL1) + Nz(TOTAL2). Si deduzco bien Me.PVPLINEA es el único campo del formulario que actualizas para cada registro Prueba esto Dim Rst As DAO.Recordset Set Rst = Me.RecordsetClone Rst.MoveFirst Do Until Rst.EOF Call CALCULOPVP Rst.MoveNext Loop Rst.Close Set Rst = Nothing Me.Requery |
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 13/Diciembre/2021 a las 11:23 |
|
Me sique haciendo lo mismo. Solo calcula el PVP del primer registro.
Cuando le doy al boton del calculo noto que abre los Forms que tengo para recoger datos por cada uno de los productos dentro del Form principal. Pero solo calcula la primera linea y no avanza con las siguientes lineas. Si elimino los Calcs y el Refresh no me hace bien los calculos, por eso fue el motivo de intercalarlos. He probado eliminarlos pero tampoco realiza bien el proceso. Si lo ves conveniente te podria mandar el proceso para que lo vieses personalmente en tu ordenador. |
|
|
jvob
|
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 13/Diciembre/2021 a las 12:33 |
|
Hola, puedes enviarmelo si quieres no hay problema O bien colgarlo en la nube y poner el enlace aqui en el foro para que otros miembros puedan ayudarte. Asi todos veran la solución. Prueba a cambiar la linea Me.PVPLINEA = Nz(Me.SUMATRABAJO) + Nz(TOTAL1) + Nz(TOTAL2) Por estas Rst.edit Rst!PVPLINEA = Nz(Rst!SUMATRABAJO) + Nz(TOTAL1) + Nz(TOTAL2) Rst.update Sinó tendrias que sincronizar el registro del formularo con el del recordset Algo asi Dim Rst As DAO.Recordset Set Rst = Me.RecordsetClone Rst.MoveFirst Do Until Rst.EOF Me.Bookmark = Rst.Bookmark Call CALCULOPVP Rst.MoveNext Loop Rst.Close Set Rst = Nothing Me.RequerySaludos Editado por main - 13/Diciembre/2021 a las 13:08 |
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 13/Diciembre/2021 a las 16:46 |
|
No se como podria subirlo a la nube dime los pasos a seguir. O bien dime tu correo y te lo mando.
|
|
|
jvob
|
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 13/Diciembre/2021 a las 19:04 |
|
Probaste algo de lo que te comente? ¿Que es lo que no te funcioa? Utimamente las normas del foro son asi. Tengo en el foro,como todos, un canal de mensajes- dirijete a el Saludos
|
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 14/Diciembre/2021 a las 04:54 |
|
He probado el eliminar las actualizaciones que me dijiste del Call y el Refresh y sigue sin funcionar. Solo actualiza la primera linea del Formulario.
|
|
|
jvob
|
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 14/Diciembre/2021 a las 04:56 |
|
En este foro es la primera vez que entrado aunque ya hacia tiempo que estaba dado de alta. Donde se encuentra el canal de mensajes para poder acceder
|
|
|
jvob
|
|
![]() |
|
main
Colaborador
Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1301 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 14/Diciembre/2021 a las 12:53 |
|
Prueba lo que te envie ayer a las 12:33 y comentas Los mensajes los tienes en la parte superior izquierda de la pagina Saludos
Editado por main - 14/Diciembre/2021 a las 12:55 |
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 14/Diciembre/2021 a las 15:26 |
|
He probado lo que me dijiste ayer y me sigue haciendo lo mismo. Se queda en el primer producto.
|
|
|
jvob
|
|
![]() |
|
joanka
Habitual
Unido: 07/Abril/2021 Localización: Lleida Estado: Sin conexión Puntos: 144 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 14/Diciembre/2021 a las 15:38 |
|
Hola,
Prueba con este código: Application.Echo False Dim n As Long n = Me.CurrentRecord Me.Recordset.MoveFirst Do While Not Me.Recordset.EOF Call CALCULOPVP Me.Recordset.MoveNext Loop Me.Recordset.MoveFirst If n > 1 Then Me.Recordset.Move n - 1 Application.Echo True Exit Sub |
|
![]() |
|
jvob
Nuevo
Unido: 30/Marzo/2016 Localización: Masculino Estado: Sin conexión Puntos: 41 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 15/Diciembre/2021 a las 03:43 |
|
Gracias por tu ayuda.
He probado este codigo que me has mandado pero no me hace nada. Se queda sin calcular nada. El problema me viene que en el CALL al llamar a otros Forms. nse queda en la primera linea sin continuar con las siguientes del Formulario Pincipal. Parace ser que el puntero no avanza con las lineas siguientes del formulario a calcular. Si elimino la llamada a los formularios donde he de extraer datos para calculos me funciona perfectamente.
|
|
|
jvob
|
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(1)
Cita Respuesta
Enviado: 15/Diciembre/2021 a las 08:20 |
|
El módulo CalculoPVP tienes que rehacerlo, de forma que tire directamente de las tablas de datos (usando recordsets) y no de los campos de unos formularios.
|
|
![]() |
|
Responder
|
Página 12> |
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |