Tengo una tabla grid. Y quiero sumar un campo con otro por ejemplo.
totalcomision = precioimten * comision / 100
columna5 = columna3 * columna4 /100
- Anónimoahora mismo
2 respuestas más de otros expertos
Respuesta de ravenn
1
1
ravenn, Me alegra poder estar de regreso. A la orden para sus consultas....
Sabes... esa consulta yo la hice hace años... y me tomo meses para que alguien me comprendiera. Nadie lo hizo jajaja! Así que me las tuve que arreglar! Para poder ayudarte, necesito saber algo si primero... ¿tienes la tabla del grid relacionada a alguna otra tabla por medio de un campo común? Por ejemplo... para el facturador, relacionastes la tabla de datos generales con la de detalle...! ¿Lo tienes así..? Avisame!
Je je. Así tuve leyendo una consulta que hiciste el año pasado. Bueno en este caso tengo solamente una tabla al grid sin relaciones, ahora que lo mencionas tengo el otro caso de las tablas relacionadas las que trabajamos juntos.
Disculpa por la demora en contestar... pero tuve una semana horrorosa! Vamos al caso! Sumar los datos que ves en pantalla de una columna grid a un text es fácil. No obstante, te aconsejo mejor que trabajes con las 2 tablas relacionadas. Lo que pasa es que, si trabajas solo con una, la suma podría caer en una especie de referencia cíclica...! Y ademas, no podrías desplazar correctamente los registros del grid con su suma respectiva, puesto que los vas a ver todos al mismo tiempo. Avisame si quieres que trabajemos así (con la relación de tablas, es super fácil)... para empezar a orientarte como proceder! A tus ordenes! Ravenn! :) :) :)
Ok. Esta bien a como tu digas. Tu eres el experto je je. o:)
Ok! Empecemos: la estructura básica de las 2 tablas debe ser así: la primera tabla (Tabla1) almacenara los datos generales de la factura (numero de factura, cliente, tipo de venta |contado-crédito| fecha, y así mismo, los datos de Subtotal, IVA, DESCUENTO Y TOTAL). La segunda tabla almacenara el detalle de la factura, es decir, los productos y su detalle (código de producto, descripción, precio unitario, unidad de medida, precio total). Importante: ambas tablas deben contener un campo de relación... que sera el designado para el "numero de factura"... esto es muy importante... es la base de la suma! La estructura de las tablas seria entonces así: Nombre | Tabla1 Campos | numerofactura (indice primario), fecha, cliente, tipodeventa, subtotal, iva, descuento, total. Nombre | tabla2 Campos |numerofactura, codigoprod, descripcion, unidadmed, preciounit, cantidad, preciototal Relaciona las tablas por el campo "numerofactura". La tabla parent debe ser la tabla1 y la child la tabla2! La tabla1 sera "alimentada" con los DATOS GENERALES a través de controles "TextBox" (o también combos... como keiras). Coloca los texts necesarios en tu form y enlazalos. La tabla2 sera "alimentada" por el grid. Coloca las columnas y enlazalas a los campos con el detalle de factura. La lógica de esto es así: cuando ingreses el numero de factura (para un nuevo registro) en la parte de datos generales, ese mismo numero debes repetirlo "en cada uno de los registros que pongas luego en el grid", es decir, en cada linea, alimentado en ambas tablas el campo "numero de factura". Por ejemplo... si pones nueva factura "100" en la parte de datos grales., en cada linea del grid que agregues de esa factura, debe ir ese mismo numero "100". Así podes enlazar "cada producto" a un numero único de factura! ¿Comprendes? Bien@ Espero que si! :D :D :D Imagino que el orden de tu grid debe ser algo así: Factura | Codigo | Descripcion| UM| Precio Unit|Cantidad| Precio total| Imagino también que, cuando escribís la cantidad, te debe arrojar el precio total (multiplicando el precio unitario por la cantidad) en su respctiva columna. ¿Es asiii? Bueno... de no ser así, te explico completo: ve al VALID del text1 de la columna "cantidad" para sacar el total, pone un código así: THISFORM.Grid1.Column7.Text1.Value = (THISFORM.Grid1.Column5.Text1.Value) * (THISFORM.Grid1.Column6.Text1.Value) Ahora... inmediatamente después, llamas a la sumaa de todos los "precios totales" de la columna de tu grid a un control text (el text debe estar enlazado al campo "subtotal" de la tabla1) con este código: Thisform.LockScreen=.t. SELECT tabla2 SET FILTER TO tabla2.numerofactura = (THISFORM.Grid1.Column1.Text1.Value) &&Columna factura del grid&& InRecno=Recno() Sum(preciototal) to Thisform.Txtsubtotal.value Locate Record InRecno Thisform.LockScreen=.F. Con esto, colocas un filtro a aquellos registros del gridd que coincidan exactamente con tu número de factura! Y luego toma el valor del campo "preciototal" (tabla2) y lo suma en el txtsubtotal "UNICAMENTE PARA LOS REGISTROS DE ESA FACTURA! Ves por que es importante que el numero de factura este en las 2 tablas y en cada linea del gridd??? Así sumas el "percio total" de todos los productos de la factura "100", de la factura "200" y así sucesivamente!!! Despues, si keres calcular el iva, en ese mismo evento del control, mas abajo, podes colocar algo como: THISFORM.TxtIva.Value = (THISFORM.TxtSubtotal.Value) * 0.15 Estoy a tus ordenes para aclararte las dudas o problemas que te aparezcan! Avisameee!
Muchisimas gracias. Revenn. la verdaf que tengo muchas dudas, pero ya algunas las he ido resolviendo, probando una cosa, provando otra. pero de todos modos siempre te preguntare algo. saludos. jejeje :)
Necesito saber como hago para que mi control text sume el total de la ultima factura, seguí el ejemplo de Raveen y me funciono, pero como hago para que luego sume las próximas ventas, ejemplo: ya suma los registros de el primer número de factura, ¿Cómo hago que sume los registros del segundo número de factura? No se si me doy a entender :<
Vaya, después de 11 años... pues mira, depende de como muestres las facturas, si la tienes en un grid, en el grid hay algo que se llama AfterRowColChange, aquí puedes incluir el código que suma la factura, y te la irá actualizando según el registro del grid, estoy a la orden para cualquier consulta adicional
Una duda adicional y perdone las molestias yo quiero poder sumar solo el total de la primera factura, sin que los de una segunda factura se me afecten la suma y que pueda hacer lo mismo con la segunda factura. ¿Cómo podría hacerlo? Disculpe las molestias
1 comentario
yo lo haría así; siguiendo los nombres sugeridos por Ravenn; Select 0Select sum(preciototal) as Total ;From Tabla2 ;where numerodefactura=<aquí el N° de factura> ;Into cursor SumatoriaLuego para recuperar el total sumado, haces.TotalSuma = Sumatoria.Total - SysGen Argentina