PDA

Ver la Versión Completa : Suma de dos Campos en un BDGrid


esimon
29-08-2005, 17:03:13
Hola......!

Tengo en una forma un DBGrid, con una tabla detalle el cual tiene dos campos uno Credito y otrdo Debito y lo que quiero hacer es sumar el contenido del Credito en un Campo llamado TotalCredito, igual mente con el Debito, mi Query eria haci.


select sum(credito)as Total_Credito, sum(Debito)as Total_Debito From Detalle


hago esto por que el DBGrid tiene que permitirme digital diferentes tipos de Cuentas.

mil Gracias

vtdeleon
29-08-2005, 18:02:23
Saludos

Cual es la duda?:confused:

el_barto
29-08-2005, 18:11:26
Si lo que quieres es sumar los campos y guardarlos en la base de datos lo que tendrias que hacer es lo siguiente:

procedure TForm1.IBDataSet1BeforePost(DataSet: TDataSet);
begin
with IBdataset1 do begin
FieldByName('campo4').AsInteger:=FieldByName('campo2').AsInteger*FieldByName('campo3').AsInteger;
end;
end;

despues usas un boton para hacer un apllyupdate y un commit.

PDT: si me salio vt :D , te acuerdas :p

vtdeleon
29-08-2005, 18:15:21
Saludos PDT: si me salio vt :D , te acuerdas :pClaro, Que bueno que te resulto
====
Lo que no entiendo es laduda de este hilo:-S, ya que la sentencia que esta puesta hace exactamente lo que pide: Dar la sumatoria de los campos

el_barto
29-08-2005, 20:30:17
Pues es muy probablemente un problema similar al que me paso a mi:

y es que no guarda en la base de datos, por lo menos eso me paso a mi.

Ademas este amigo, no no has dicho mucho de lo que quiere hacer si no da mas detalles ni modo, verdad??? ;)

esimon
29-08-2005, 21:47:01
Gracias muevamente por su preocupación para ayudarme a entender el manejo de la programación delphi.

en una tabla de Detalle con lo siguiente Campos
EN DELPHI 7 Y ACCESS
*Codigo (Autonumerico)
Numero_Documento (Numerico)
Numero_Cuenta (Numerico)
Debito (Moneda)
Credito (Moneda)
TDebito (Moneda)
TCredito (Moneda)

en un DBGrid tengo Numero_Cuenta, Credito y Debito, los cuales son los campos que el DBGrid me deja digitar, el cual me tiene que dejar instroducir diferentes tipos de cuenta, Credito y Debito, lo que quiero hacer es sumar la columna de Credito y el Resultado guardalo en TCredito, igual con el Debito.

para incrementa el DBGrid estoy usando este godio en el evento OnNewRecord de la Tabla Detalle.



if Tbl_DetalleCheque.State = dsInsert then
begin
Tbl_DetalleChequeCodigo_ChequeDetalle.value := Qry_Inserta.fields[0].asInteger + 1;
Qry_Inserta.Close;
end;


por famor coregirme lo que estoy hacinedo mal.

mil gracias

MaSSaKKre
14-09-2005, 20:50:12
Hola, bueno , no se si es lo que tu deseas, en ocasiones leo y entiendo mal :rolleyes:

pero bueno...


Yo tengo una consulta mas o menos del mismo tipo y digo mas o menos porque yo estoy usando dos tablas distintas para opterner un resultado y dicho resultado nunca lo guardo en ninguna tabla ni nada, solo lo visualizo en momento de ejecucion, a mi me sirve asi porque cuando se actualiza uno de los campos utilizados, entonces no tengo que andar actualizando el campo resultante. Para que me entiendas...

Checa mi consulta

SELECT NREG,ART,NOMINFRAC,SALAMIN,((SALAMIN)*(SALARIOMINIMO)) AS DATO FROM "REGINFRAC.DB","SALARIO.DB"

donde el campo SALAMIN (dias de salario minimo) pertenece a la tabla REGINFRAC.DB y el comapo SALARIOMINIMO pertenece a SALARIO.DB, como veras simplemente hago una multiplicación de ambos campos en la consutla ,((SALAMIN)*(SALARIOMINIMO)) AS DATO y lo guardo en una Variable "Virtual" (que se genera en momento de ejecución) llamada DATO.


entonces según mi lógica tu consulta

select sum(credito)as Total_Credito, sum(Debito)as Total_Debito From Detalle


porque estas haciendo una suma total de todos los registros que tenga la columna Credito y la columna debito.

tu consulta deberia ser asi (creo yo)


select ((credito)+(Debito)) as Total From Detalle


ahi estarás haciendo una suma por cada uno de los "clientes" que tengas (suponiendo que son datos de clientes) o mas bien, de cada registro de tu tabla, asi sea 1 o 1000 millones...

espero haberte entendido tu problematia y mas que nada haberte podido ayudar, si no es lo que necesitas entonces entendi mal :p