Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2005
Shidalis Shidalis is offline
Miembro
 
Registrado: jul 2005
Posts: 106
Poder: 19
Shidalis Va por buen camino
en que evento del dbgrid puedo hacer un operacion matematica . . .

Hola a todos, me pregunto en que evento del dbgrid puedo hacer un operacion matematica y mostrar el resultado en una columna determinada
Responder Con Cita
  #2  
Antiguo 25-07-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
en teoría lo puedes hacer en cualquier evento
habría que definir en cual de todos es más conveniente, podrías usar el evento OnCellClick.
__________________

Responder Con Cita
  #3  
Antiguo 25-07-2005
Shidalis Shidalis is offline
Miembro
 
Registrado: jul 2005
Posts: 106
Poder: 19
Shidalis Va por buen camino
disculpen si no me explico bien lo que yo quiero hacer es una operacion como por ejemplo del campo cantidad (4) * el campo precio unitario (3) y que el resultado lo coloque en el campo total. Mi pregunta en que evento puedo colocar el codigo porque en el evento OnCellClick no funciona ya he probado cada uno de los eventos pero el resultado no lo muestra en el campo.
Si pueden ayudarme se los agradeceria.
Responder Con Cita
  #4  
Antiguo 25-07-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
lo que necesitas es hacer desde la base de datos

algo así como
Código SQL [-]
select cantidad, precio, (cantidad * precio) as total
from TuTabla

y esa consulta ligarla al dbgrid atraves de TQuery.... de esta manera el dbgrid ya te mostrara lo que quieres
En fin, las palabras claves que deberías buscar son, TQuery y Campos Calculados
__________________


Última edición por ContraVeneno fecha: 25-07-2005 a las 23:59:15.
Responder Con Cita
  #5  
Antiguo 25-07-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa esto....

Cuando quieras mostrar algún Resultado, en este caso la Multiplicación de Cantidad por Precio, te recomiendo que lo hagas antes de accesar al campo Resultante, es decir si capturas la Cantidad en una Celda del dbGrid al Presionar un ENTER ó TAB pasas a la Celda Resultante (si es que lo tienes de esta forma), la operación la pudieras hacer en el OnColExit de la Celda donde capturas la Cantidad. ejemplo:
Código Delphi [-]
procedure Tforma.dbgridColExit(Sender: TObject);
....
//Si estoy posicionado en la Celda Cantidad
if dbGrid.SelectedIndex = 2 then begin
  Importe : = Cantidad * Prec_Unitario;
....
end;

Espero me haya explicado....

Saludos....
Responder Con Cita
  #6  
Antiguo 25-07-2005
Shidalis Shidalis is offline
Miembro
 
Registrado: jul 2005
Posts: 106
Poder: 19
Shidalis Va por buen camino
Muchas Gracias por su ayuda, ya me funciono!!!!!
Responder Con Cita
  #7  
Antiguo 26-07-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Si entendi bien, sugiero ll siguiente.

El evento OnCalcField del dataset se implementa para esto
Código Delphi [-]
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
 begin
   with Table1 do begin
     FieldByName('Total').AsFloat:=FieldByName('Cantidad').Asfloat*FieldByName('Costo').AsFloat;
   end;
 end;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #8  
Antiguo 26-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Cita:
Empezado por vtdeleon
Saludos

Si entendi bien, sugiero ll siguiente.

El evento OnCalcField del dataset se implementa para esto
Código Delphi [-]
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
with Table1 do begin
FieldByName('Total').AsFloat:=FieldByName('Cantidad').Asfloat*FieldByName('Costo').AsFloat;
end;
end;
Por que cuando coloco esta instruccion compilo mi programa y coloco por ejemplo en mi campo cantidad el numero 2, sebloquea totalmente el programa.

Esto me pasa despues de colocar esta instruccion.(Obviamente con los campos que uso)

Gracias
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #9  
Antiguo 26-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Que error te da?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #10  
Antiguo 26-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Ninguno, pero hice una tabla de prueba con los campos: campo1, campo2, campo3, campo4, en donde campo4 es la multiplicacion de los campos3 y campo2

Compilo coloco por ejemplo:

campo1 campo2 campo3 campo4
1 10 80

pero en el campo4 no pasa nada, doy tab paso a la sihuiente columna y ni aun asi pasa nada, pense que solo era colocar esta instruccion pero ya veo que no , entonces que es lo que me hace falta
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #11  
Antiguo 26-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
esta es la instruccion usada:

Código Delphi [-]
 
procedure TForm1.IBDataSet1CalcFields(DataSet: TDataSet);
begin
with IBdataset1 do begin
     FieldByName('campo4').AsInteger:=FieldByName('campo2').AsInteger+FieldByName('campo3').AsInteger;
   end;
end;
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #12  
Antiguo 26-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

No veo nada anormal.:confuced:

Hagamos pruebas
Mostrando los datos de cada campo con un ShowMessage.
Código Delphi [-]
procedure TForm1.IBDataSet1CalcFields(DataSet: TDataSet);
begin
with IBdataset1 do begin
Showmessage(IntToStr(FieldByName('campo2').AsInteger));
Showmessage(IntToStr(FieldByName('campo3').AsInteger));
FieldByName('campo4').AsInteger:=FieldByName('campo2').AsInteger+FieldByName('campo3').AsInteger;
end;
Chequea a ver si contiene datos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #13  
Antiguo 26-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
chanfleeee nunca pasa por hay, por eso nunca calcula nada
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #14  
Antiguo 26-08-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Hola vt mira lo que lei en un foro viejo de trucomania:

Doble click sobre la tabla, y alli te sale el editor de campos.

Haces click con el boton derecho y escoges 'New Field'

Defines el campo y lo pones como tipo Calculado
y seguidamente use el codigo que posteaste en este hilo y funciona bien(por decirlo asi), lo que pasa es que no lo guardaria directamente en el campo4 si no que tendria que asignarlo en un evento del Dataset como por ejemplo beforeinsert. Asi lo hice yo, pero la verdad es que no he podido hacerlo, como tu dices.
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 15:48:11.


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