FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Suma de una columna de un DBGRID
Hola, nuevamente quisiera q alguien me corrija esto, xq me esta volviendo loco y no logro q haga lo q yo pretendo.
Quiero q al ingresar un producto y se calcule el precio de ese item, lo vaya a acumulando en y sumando en otro campo calculado de mi tabla para luego sacar el total a pagar. 1º codigo es este: tengo un campo calculado para sacar el precio a pagar por item, entonces lo q hago es acumularlo y lo muestro (cre q el error esta q la acumulacion la hago en el procedimiento oncaculated de la tabla, en el mismo q calculo el precio del item entonces no me lo acumula.) el codigo seria asi: var acum: currency; procedure TForm4.Table4CalcFields(DataSet: TDataSet); begin table4Total.ascurrency:= table4Cantidad.AsInteger * Table4Precio.asCurrency; acum:= acum + table4Total.ascurrency; end; 2º creo q esta debe ser la correcta pero no se como hacerlo. ah medida q se ingreso una fila acumularlo a una varible y mostrar eso. No se como moverme fila por fila y ingresar al dato ese. Mi idea es asi lo escribo es pseudocodigo: cuando pasa a la siguiente fila acumulador:= dbgrid1.columns[n] + acumulador; Gracias!!! |
#2
|
||||
|
||||
Hola
No estoy muy seguro, lo hice hace algun tiempo y no me acuerdo bien, pero creo que el tutorial de facturación hace lo que necesitas, revisalo, tal vez te sirva. Saludos
__________________
Siempre Novato |
#3
|
||||
|
||||
Hola, colocar esto en los eventos AfterDelete y AfterPost de tu dataset, debes adaptarlo a tu manera:
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#4
|
|||
|
|||
hola enecumene, a ver si entiendo ...
campo: tfield; --->esto es la declarion de un acum de tipo tfield? Campo := FieldByName('valor');---> le asigno a campo el valor q tengo en ese campo..(mi caso total?), y porq pusiste entre literales 'valor' y donde pusiste cdDetalles y cdCaja te estas refiriendo al nombre de las tablas? Perdon por todas las preguntas, pero prefiero preguntar y sacarme las dudas antes de decir q si como los locos! |
#5
|
||||
|
||||
Hola Pollo2004, TField es una clase tipo campo, Campo := FieldByName('valor'); donde "Valor" es el campo de la columna que vas a sumar y restar, cdDetalles es un dataset (Puede ser TTable o TQuery) y dsCaja es un datasource donde muestro el total (Pero eso es en mi caso, en tu caso puede ser un TTable o TQuery en el mismo Form), recordad colocarlos en los eventos mencionados anteriormente en el dataset asociado al DBGrid.
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#6
|
||||
|
||||
Hola, ¿te resultó? ¿Conseguiste otro código?
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#7
|
|||
|
|||
hola enecumene, no he logrado compilarlo, te paso como lo deje a tu codigo y te indico donde me sale el error
procedure TForm5.TDetaAfterDelete(DataSet: TDataSet); var Suma: Double; Campo: TField; Begin Suma:=0; Try With DsDeta Do Begin TDeta.DisableControls; Campo := TDetaTotal; TDeta.First; While Not EoF Do Begin Suma := Suma + Campo.AsFloat; Next; End; End; Finally TDeta.EnableControls; End; TDeta.TDetaSinIva.AsCurrency := Suma; (aca tengo el error al compilar,TDetaSinIva es un campo calculado) end; Me larga un error diciendo q no esta declarado el identidicador TDetaSinIva. mañana lo voy a ver con un poco mas tiempo, para ver si le encuentro la solucion, cualquier sugerencia es bienvenida! saludos! Nos vemos! |
#8
|
||||
|
||||
Hola, Amigo no puedes mostrar un resultado en un campo calculado debes mostrarlo en un campo normal o en un edits, cuando tengas más tiempo estúdialo y verás que es un código muy sencillo .
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#9
|
||||
|
||||
O en un TAggregateField
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#10
|
|||
|
|||
No me funciona la suma
Hola nuevamente, perdon por la demora....enecumene he logrado compilar tu idea, pero no me funciona, la verdad no se xq...
corregi mi error de esta manera, puse un label.caption:= currtostr(suma); Bueno aca no me muestra nada. Yo lo q me gustaria es recorrer el dbgrid y controlar desde ahi las filas q ingreso, pero no se como moverme x fila, si alguien lo sabe soy todo oido.. Por las dudas te paso mi form para q le hechen una miradita
Gracias otra vez por el aguante y las pilas q le ponen!!! |
#11
|
||||
|
||||
Hola
La verdad es que he seguido el hilo y cada vez entiendo menos. No se exactamente lo que se pretende, me da la impresión de que se quiere sumar los datos que hay en un campo que presenta un dbgrid, pero no entiendo por que el uso de un campo calculado. Me pongo a pensar: Que pasa si no se quiere calcular todos los campos del dbgrid o si hay algún error y se quiere corregir?. No se, no lo capto. Saludos
__________________
Siempre Novato |
#12
|
|||
|
|||
Tratar de aclarar!!!
Cita:
Espero aclarar tu panorama y q puedas aportar tus ideas. gracias caral! |
#13
|
||||
|
||||
Hola, el código que te propuse hace exactamente eso que quieres hacer, lo uso y me funciona perfecto, te aconsejo revises bien donde está fallando.
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#14
|
|||
|
|||
I/O error 6
Cita:
el disablecontrols coloca la tabla en q estado? despues el resto lo entiendo. otra duda q me entro mirando detenidamente el codigo es el soguiente! Table1.first, lo coloca en el inicio de la tabla, esto es correcto? Entonces me pregunto, me sumaria todos los registros, viejos, nuevos de otras facturas completamentes todos?, o al existir una integridad referencial fijo un dominio q solamente me sume los q cargo en ultimo para ese num de factura? |
#15
|
||||
|
||||
Hola
Es el problema con los maestros, hacen códigos y luego a nosotros los novatos nos toca tratar de entender de que se trata. Estos Maestros, cuando aprenderán. A ver Maestro enecumene, ilustranos Saludos
__________________
Siempre Novato |
#16
|
||||
|
||||
Hola, el with sirve para trabajar con un objeto específico es útil para reducir el código, ejemplo:
Aquí sin el with...do:
¿Ves la diferencia?, con el First se coloca desde el primer registro de la tabla, como estás tratando de realizar facturas es lógico que deberías estar usando tablas de memorias o una tabla temporal, porque si no, te sumará todos los registros viejos, por eso se recomienda usar tablas de memorias o temporales donde puedes trabajar solamente con esos registros de manera individual a los registros viejos. Espero que se te claro sino me avisas. Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#17
|
||||
|
||||
Ya ilustré algo a ver si se entiende
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#18
|
||||
|
||||
Hola Pollo2004, también lo puedes lograr creandote un campo Agregado en su propiedad Expression haces un sum de tu campo calculado SUM(CampoCalculado), activas el campo agregado y también AgregatesActive de tu DataSet.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#19
|
||||
|
||||
Hola
Cita:
Tener una tabla temporal es tener mas cosas de la cuenta, a veces es bueno, pero en este caso no lo veo necesario. Se habla de facturas, estas siempre tienen un numero consecutivo y unico, se puede hacer referencia a este numero sin necesidad de otra cosa. En mi primera intervención sugerí que se revisara el tutorial de facturacion, ahi se hacen los calculos sin usar tablas temporales ni otras cosas. Lo siento enecumene, pero algo he aprendido de ti. Saludos
__________________
Siempre Novato |
#20
|
||||
|
||||
Lo digo porque no se sabe si los detalles de las facturas lo esta registrando directamente a la tabla o en un stringgrid, en este caso es directo a la tabla entonces está involucrando los demás registros anteriores, digo yo no sé, hay muchas formas de realizar una factura, en mi caso la numeración la asigno luego de grabar y utilizo tablas de memorias, así cuando hago la suma, sumo lo que registro y no todos luego le asigno la numeración de la factura. , pero bueno, dejemos que otro maestro nos ilumine con este asunto
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Hacer que una columna de un DbGrid aparezca distinta según valor | Aprendiendo | OOP | 11 | 30-11-2018 15:47:20 |
suma de una columna del Report | megaredoxk | Impresión | 3 | 04-12-2007 15:05:11 |
suma de una columna en mysql | coletaun | MySQL | 5 | 09-01-2006 15:29:38 |
Suma de elementos de una columna | Mathom | SQL | 4 | 15-12-2005 19:49:24 |
Suma de Datos de Columna en paradox | gersongelabert | Tablas planas | 2 | 14-08-2005 07:20:37 |
|