Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2007
Avatar de Goyo
Goyo Goyo is offline
Miembro
 
Registrado: feb 2006
Posts: 89
Poder: 19
Goyo Va por buen camino
Cool como mejorar este codigo... sumando campos

buenas tardes amigos foristas....

estoy realizando un sistemita en el que capturo algunas cantidades, y a la vez estas se autosumen (en un campo "TOTAL") cada vez que cambio de Dbedit... aqui esta el codigo para que lo chequen, para mi es demasiado y creo que al compilar mi programa se tarda un poco, tal vez sea por este codigo:

Código Delphi [-]
procedure TCardexForm1.DBEdit3Exit(Sender: TObject);
begin
 try
// dm.TbEmpleados.Edit;
 dm.TbEmpleadosSueldoMensual.AsFloat := dm.TbEmpleados.FieldByName('Sueldo Base').AsFloat + dm.TbEmpleados.FieldByName('Gastos Exentos').AsFloat + dm.TbEmpleados.FieldByName('Prev. Social Mult').AsFloat + dm.TbEmpleados.FieldByName('Quinquenios').AsFloat + dm.TbEmpleados.FieldByName('Serv. Extraordinarios').AsFloat + dm.TbEmpleados.FieldByName('ssvc').AsFloat + dm.TbEmpleados.FieldByName('ayuda de transporte').AsFloat + dm.TbEmpleados.FieldByName('Capac y Desarrollo').AsFloat + dm.TbEmpleados.FieldByName('Compensacionespecial').AsFloat + dm.TbEmpleados.FieldByName('Compensacion').AsFloat + dm.TbEmpleados.FieldByName('Despensa').AsFloat;
  Except
end;
end;

no se si exista alguna otra forma de mejorar este codigo, o cambiarlo totalmente, lo que hago es que al introducir una cantidad en un DBEdit (son varios), se vaya autosumando en otro DBEditx (Suma total de los campos), tengo varios DBEdit y en su propiedad DataField (campos de mi tabla de acuerdo al campo a introducir) y en la propiedad DataSource: DM.DsEmpleados "Tbempleados" que es mi tabla de Paradox...
de esta forma si hace lo que quiero de ir autosumando los campos en el Campo: SueldoMensual...

espero me ayuden, de momento mil gracias y un saludo
Responder Con Cita
  #2  
Antiguo 18-05-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si el código lo relacionas, no con el DbEdit, sino en el evento OnChange de los campos implicados, te funcionará en cualquier momento y desde cualquier lugar, por ejemplo te dará lo mimso que estas en una pantalla con DbEdits, que en una rejilla pues nada más introducir datos se producirá el cálculo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 18-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Da la impresión de que estás guardando la suma de ciertos campos en otro campo. Este último campo es lo que se llama un campo calculado, y normalmente no tiene caso guardarlo en la base. Pienso que el rendimiento podría mejorar si renuncias a guardar el dato. Siempre puedes usar un LookupField para mostrar el resultado.

// Saludos
Responder Con Cita
  #4  
Antiguo 19-05-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.409
Poder: 22
fjcg02 Va camino a la fama
Prueba como dice marcoszorrilla en el evento onchange, y utiliza los valores campo.Oldvalue y campo.value, es decir, el valor antes de cambiar y el nuevo valor.

Es decir, presentas el total en un campo, y cada vez que cambias un dbedit, le restas el valor del campo que cambias y le sumas el nuevo valor

Código Delphi [-]
procedure TCardexForm1.DBEdit3OnChanget(Sender: TObject);
begin
 try
   dm.TbEmpleadosSueldoMensual.AsFloat :=dm.TbEmpleadosSueldoMensual.AsFloat 
                                                        -(Sender as TDBEdit).Field.OldValue 
                                                         +(Sender as TDBEdit).Field.Value
 Except
 end;
end;
Asocias la misma funcion a todos los DBEdits, y a correr.


Suerte y saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que significa este codigo? D-MO PHP 14 23-01-2006 10:08:21
No me gusta este Codigo, Me ayudan?! marceloalegre Varios 5 28-10-2005 01:27:27
Como mejorar la velocidad en este caso.... Alfredo Varios 4 02-09-2005 22:45:11
error sumando campos weke SQL 2 02-06-2004 14:52:33
Por que no funciona este codigo en XP? kia Varios 3 15-10-2003 21:39:33


La franja horaria es GMT +2. Ahora son las 11:22:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi