Calculo automático del precio

Como andas ernesto! Espero que bien. Tengo que hacerte otra preguntita sobre mi programa de facturación que ya tengo listo y funcionando al 90% luego de muchas horas de trabajo, y también gracias a tu gran ayuda.
El tema ahora es el mismo que comencé preguntando la ultima vez. En el formulario Ventas tengo un campo que es TC (tipo de cambio) que sirve para calcular los precios en la moneda local dado que los artículos están en u$s (así llegan de la tabla artículos). Resulta que hago la factura con un tipo de cambio que ingreso al principio y el programa calcula todo. Pero en el caso de querer corregir ese valor, le puse el campo TC en el evento "al perder enfoque" que recalcule y actualice según la sig. Expresión: Punit$=PunitU$S*TC
El problema es que solo recalcula la fila del subformulario "Detalle ventas" que esta seleccionada, es decir, donde estuvo el cursor antes de salir (la fila donde a la izquierda aparece un lápiz o un triangulito).
Lo que necesito es que recalcule el precio de todos los item del subformulario. El sub no esta basado en una consulta y no me seria útil que lo esté.
Ojalá puedas darme una mano con esto.

1 Respuesta

Respuesta
1
Creo que la respuesta no se envío, te respondo de nuevo...
Esta estuvo difícil...
La solución de la consulta es la forma más practica e ideal diría yo...
Sin embargo, le "Cacharrie" al problema.
Utilice una sentencia que saltara de Registro TC en Registro TC calculando lo que necesitábamos
Lo probé con sentencias While, con el evento EOF, con el evento "Al recibir el enfoque"... todas hacían el recorrido bien y rapido pero al llegar al ultimo registro me generaba error por que no se detenían
Solo me funciono una forma...
Con el evento "al cronometro"
Pon en un botón lo siguiente
Me.TimerInterval = 500
Private Sub Form_Timer()
If capacidad.Text <> "" Then
capacidad.Text = "Hola"
DoCmd.GoToRecord , , acNext
End If
End Sub
Hay una propiedad llamada "intervalo de Cronometro" digita 0
Nota: un segundo es 1000
Pruébalo.. todavía creo que la consulta es la forma ideal..
Cuéntame como te fue con el timer...
Amigo ernesto, estoy en problemas. Tengo muchas dudas acerque de como implementar tu solución.
¿Hay qué crear un botón y poner el tu código en el evento click?(Nunca he visto el evento al cronometro ni nada similar)
¿El botón se crea dentro del subformulario o en el formulario?
¿capacidad.text es un campo de mi subform?
¿La linea me.timerint.... queda fuera de Private Sub??
¿La propiedad intervalo de coronometro la encuentro en el generador de código o en las propiedades del botón?
Se que es más fácil crear una consulta donde se calcule el precio$ de manera automática, pero no puedo hacerlo ya que no todos los precios están en u$s. Es decir, frecuentemente necesito introducir manualmente un valor en "pesos" que no responde a la cuenta u$s*TC.
Millones de gracias por la ayuda que me brindas. Espero poder resolver esto y no generarte más molestias.
Saludos!
Creo que estamos más cerca... pero igual tengo inconvenientes. A manera de resumen:
TengoTC en el formulario principal. En un subformulario del mismo tengo los artículos cargados spectivos precios en u$s y el equivalente en pesos. Necesito que cuando cambie el valor dealculen todos los precios en pesos (precioU$S*TC) de todas las lineas del sub. Hasta el moa que al perder enfoque de TC se realize la operación precioU$S*TC, pero solo me calculabade la fila activa.
Lo que estoy haciendo ahora es lo siguiente:
puse un boton en el formy en el evento click puse : Me.TimerInterval = 500
tc.setfocus
En el evento al cronomerm principal escribi:
If TC.Text <> "" Then
TC.Text = "Hola"
DoCmd.GoToRecord , , ac If
puse 500 en el intervalo de cronometro.
Hasta aqui todo bien. Cuando ejecuto el for manda al depurador donde aparece resaltada la linea << If TC.Text <> "" Then >>
¿Encuentr rror en lo que estoy haciendo?
Te escribí de nuevo mi problema por la siguiente razón: nse estén ejecutando los cálculos en ninguna linea de código de las que escribí(no entiendoasic, quizás este diciendo cualquier cosa), por lo me hizo pensar que quizás no habías entproblema, y no quiero hacerte pensar y gastar tu tiempo por un malentendido. Desde ya no tionando tu solución, solo que quiero asegurarme de que no estemos hablando de cosas diferacias nuevamente, un abrazo amigo!
Fresco
Después de poner una gran explicación se callo la página.. casi lloro... reenvío... por si no te llego... mi primera contestación
Con esta opción del timer, puedes crear movimiento en tus formularios, imágenes que cambian de sitio o ver uno a uno sin mover el mouse ni teclado, etc, etc
Empecemos con tus preguntas...
¿Hay qué crear un botón y poner en el poner tu código en el evento click?
Si... debes poner...
Me.TimerInterval = 500
Tc. Setfocus
¿Nunca he visto el evento al cronometro ni nada similar?
Debes hubicarte fuera del formulario, No donde pones los campos, fuera de el, en la parte "oscura", haces click derecho propiedades-eventos, y casi al final encuentras uno que se llama "al cronometro", si lo haces por el generador de código se llama "timer"
¿El botón se crea dentro del subformulario o en el formulario?
En el formulario principal
Me.TimerInterval = 500
Tc. Setfocus
La primera linea arranca el timer, para que genere pulsos
la segunda pide que el cursor salte y se posesione en el campo TC
¿capacidad.text es un campo de mi subform?
No... error mio... para tu caso es TC.text
¿La linea me.timerint.... queda fuera de Private Sub??
No...
Me.TimerInterval = 500
Tc. Setfocus
Las lineas se ponen dentro del sub, en el evento "al hacer Clic" del botón
¿La propiedad intervalo de coronometro la encuentro en el generador de código o en las propiedades del botón?
De la misma forma que la propiedad "al cronometro"... hay se pone un valor numérico... 1000 es un segundo, 2000 son dos segundos, 500 es medio segundo, etc
¿Lo encontraste?
¿Cuéntame?
Argón... enviame un correo a...
[email protected]
o
[email protected]
o... Dame tu correo y te envío el ejemplo explicado de la prueba que hice yo mismo para que la veas ... si.
Esta Fácil de entender...
Atentamente: Ernesto Cruz

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas