Sumar correctamente en text el valor de columna grid

Esta es la 2da consulta que te realizo. Espero me comprendas...! Para acumular o totalizar los valores numéricos de una columna (subtotal) de un grid en un textbox, utilice en el evento keypress (y probé también en valid) de la columna la siguiente linea:
thisform.text1.value= thisform.text1.value+  thisform.grdEntradasdet.Column8.Text1.Value
**RETURN
THISFORM. Refresh
Esto funciona... A medida que dígito un registro numérico en la columna, se va haciendo la suma en el text... Algo así como los facturadores que hay en los supermercados o tiendas..! Je je! El problema es que si en la misma linea de la grid, repito enter... es decir, la recorro horizontalmente con el cursor nveces presionando enter (sin pasar a la linea de abajo) el valor de la columna se duplica las veces que la recorra! Es decir, si en la columna grid tengo:
[Subtotal]
[    10     ]
EN el textbox aparece [10]
Pero si recorro la linea del grid con enter, el text incrementa el valor... ! Ejemplo, si recorro 2 veces la linea del grid, el text registra [30] mientras que el valor en la linea del grid se mantiene en 10! ¿Me comprendes? Si no, házmelo saber para ulustrate mejor!

1 respuesta

Respuesta
1
Entiendo perfectamente el problema y te sorprenderá saber cuán sencillo es obtener la suma de los valores de una columna de un grid. Y es que haciéndolo de la forma que has diseñado se complica un poco precisamente por la situación que ocurre al recorrer la misma línea una y otra vez.
Olvidemos el grid y concentrémonos en el cursor o tabla que lo alimenta.
Escribe esto en el evento lostFocus del Text de tu columna 8
sum column1 to thisform.text1.value
Listo!, una línea para obtener la suma. Column1 es el nombre del campo de la tabla que alimenta tu columna 8.
Hola devilzito! Muchas gracias por tu respuesta! Quisiera unicamente pedirte una aclaración. La linea de código que me distes funciona bien! Solo que a través de ella, sumo el "TOTAL DEL CAMPO" de la tabla de la columna8, es decir, todos los registros que tiene el campo! Y pues lo que me gustaría es sumar solo lo que veo en pantalla en el grid..! Permíteme ilustrarte...:
(Grid)
[Subtotal]
[ 10 ]
[ 10 ]
(Textbox) TOTAL [$20]
¿Me comprendes? A como ves... solo sumar lo que tengo en el grid en el momento que ingreso datos...! ¿Podrías ayudarme? Gracias! Eres muy amable! :D
¿Lo qué ves en el grid? No entiendo.
Pensé que usabas un "cursor" o "tabla temporal" para el almacenamiento de los datos, linkeado a tu grid. El cual posteriormente, previa verificación, volcarías a tu tabla de datos principal.
Si tienes algún filtro (el cual hace que "veas" sólo ciertos registros) sum también tiene una expresión For, para sumar sólo ciertos registros
SUM [eExpressionList] [Scope] [FOR lExpression1] [WHILE lExpression2] [TO MemVarNameList | TO ARRAY ArrayName] [NOOPTIMIZE]
Hola! Gracias por contestar. Mira... la cosa es así.. el grid lo tengo enlazado a una tabla que almacena los datos. El text almacena en otra tabla. Con el código que te mostré al inicio, los datos del grid se almacena bien. Los datos del text con la suma correcta se almacenan correctamente también! Todo funciona bien... El único problema es el recorrido de la grid en la misma linea varias veces... repite la suma! Con el código que me sugeriste, puedo sumar sin repetir... pero me suma todo el campo de la tabla! He intentado poner mi código de varias formas para evitar repetir la suma.. incluso lo he cambiado deevento... pero no logro resolver! Si pudieras ayudarme, te lo agradeceré infinitamente..! De verdad! Saludos y gracias! MAriela! :D :D :P
La pregunta es:
"Para acumular o totalizar los valores numéricos de una columna (subtotal) de un grid en un textbox..."
Luego dices que quieres sumar "algunos" registros de tu columna8 y ponerlo en un textbox, sabiendo que column8 está "linkiado" o amarrado a un campo de una tabla.
Eso es lo único que se deja entender y se hace con el código que te mostré arriba.
Quizás si vemos algunas capturas de pantalla del programa que estás haciendo o copia de esa pantalla a mi correo, podría ayudarte mejor.
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas