Sumar datos desde una columna de grid a un textbox

Hola! Tengo un formulario y dentro de este un grid. Quisiera saber como puedo sumar los datos de la columna calculada a un textbox. Es para sacar subtotales por cada registro, no el total general de todos los registros. . Yo intente en refresh del textbox:
SELECT mitabla
SUM (el controlsource de la columna calculada en la grid) TO Subtotal
THISFORM.TEXT1.VALUE=SUBTOTAL
THISFORM.REFRESH
El resultado es el calculo de TODOS los datos que tiene la columna, totalizando todos los registros. Lo que yo quiero sumar unicamente los datos que veo en pantalla, es decir, los de cada registro! Solo totalizar unicamente los datos que introduzco por registro. Con lo anterior, se totalizan todos los registros! Y no se como proceder.
Respuesta
1
Espero poder ayudarte.
Por lo que describís, supongo que seria algo como multiplicar precio por cantidad y ponerlo en una columna del grid que se llame "total" o algo así:
Si es así (espero no equivocarme) lo que tienes que hacer es simplemente en la propiedad controlSource de la columna "total" poner:
tabla.cantidad*tabla.precio
(Tienes que reemplazar "tabla" por el nombre de la tabla o cursor que está abajo del grid)
Espero te haya entendido y que vos me entiendas a mi. Sino, iremos al próximo paso.
Estoy a tu disposición
Hola! Saludos! Fíjate que la columna calculada de precio total ya la tengo. Utilice la propiedad controlsource así como tu dices y eso me arroja los datos que quiero. Lo que pretendo es sumar los datos de esa columna (precio total) del grid a un textbox. Es para sacar un subtotal. El código que escribí antes lo puse en refresh del textbox y lo que me arroja es el total de datos que tiene la columna preciototal pero de TODOS los datos en todos los registros; es decir, suma todo lo que tiene en diferentes registros, algo así como sumar absolutamente todo lo que tuviese un campo ( solo que en este caso, esta columna tiene controlsource la multiplicación de otras 2 columnas). Yo quiero que la suma de datos que tiene la columna se ubique en un textbox pero por cada registro, me refiero a sumar unicamente los datos que veo en pantalla. Me explico:si aperturo un nuevo registro y si en la columna calculada preciototal tengo las cantidades en orden descendente: $10, $20 y $30, quiero que esas cantidades se totalicen en el textbox, arrojando el resultado $60. Lo que sucede con el código es que suma todos los registros. Me explico: si aperturo otro nuevo registro, la grid se pone en blanco esperando que ingrese datos, al ingresar datos nuevos tengo $10 y $20. Al guardar, el textbox [con el codigo anterior que te mencione] acumula este nuevo total ($30) con el anterior y arroja $90 !. Es para un facturador, entonces debo sacar subtotales por factura con sus respectivos datos, no el total de toda, enteramente todas las facturas. Si pudieras ayudarme te lo agradecería infinitamente! Saludos!
No entiendo la diferencia entre todos los registros y la suma de todos los totales, salvo que vos estés queriendo ver solo los de la factura y no la de la tabla que tiene todas las facturas, pero en el grid solo trae de la actual.
Si es así, ya que solo me lo imagino, tendrías que usar la misma clausula del filtro o select que usas para ver los datos en la pantalla.
Por ejemplo:
En el VALID de los text y no en el REFRESH porque no es ahí donde se usa habitualmente, pones:
Dime total(1,1)
total=1
mFactura=thisform.factura.value
select sum(precio*cantidad) from mitabla where factura=mFactura into array total
thisform.total.value=total(1,1)
Te conviene que este código este en un método del formulario por ejemplo "Calcula" entonces en los valid de los textbox pones:
Thisform. Calcula()
De esta manera, cuando modifiques el método "calcula" se modificará para todos los textbox.
Por cuestiones de optimización te recomiendo que no uses un filtro y en el grid que no aparezca tu tabla directamente, ya que cuando son muchos registros (con el tiempo) esto te hará tardar mucho entre cada refresh..
Lo mejor es armar el grid en base a un select por ejemplo y siempre agregas a tu cursor los registros. Al presionar el botón "Grabar" o "imprimir" o como se llame el botón que guarda los datos, simplemente actualizas tu tabla con los valores del cursor.
Si optas por esto, en el select deberás poner readwrite al final del select para que el cursor que se genere sea modificable.
El uso de filtros no es para nada recomendable asociado con variables ya que esto es muy inestable y lo peor es que las variables pueden salir del rango y falla el filtro.
Bueno, espero que sea lo que necesitas, cualquier cosa estoy a tu disposición.
PD: El uso del select para sumar los datos en lugar del comando sum es para que no se mueva el puntero en la tabla atrás del grid.
Un abrazo
Hola! Saludos! Realice todo lo que me orientaste! La cosa es que todavía no logro resolver el asunto! Jejejeje! Todo esta bien, funciona pero no aun tengo el problema de que me arroja no exactamente lo que necesito! Quisiera saber si tendríais la disposición de echarme una mano nuevamente! Soy bastante novato y la cosa es que no me logro explicar muy bien! Podríais facilitarme una dirección de correo electrónico para tratar de explicarte gráficamente la ayuda que necesito! Me refiero a enviarte una gráfica jpg. De mi form y a través de ella darme a entender mejor sobre lo que necesito! Te lo agradecería muchísimo! Infinitamente! Y disculpa mi insistencia! Es solo que es un proyecto muy importante! Gracias y saludos! Ravenn.
Disculpame la demora.
Podes usar mi mail "consultas"
le tienes que sumar "@keystone.com.ar"
Lo paso así para que no lo capture algún spam.
Un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas