Ver Mensaje Individual
  #3  
Antiguo 12-01-2007
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 96
Reputación: 21
TrUnkS Va por buen camino
Yo lo hice de la siguiente manera: Supongamos que tienes en el DBGrid los siguientes campos de tu tabla detalles: CANTIDAD, DETALLE, PRECIO UNITARIO, TOTAL en este mismo orden, y quieres que la suma de todos los totales pasen a un label. En el evento OnKeyPress del DBGrid pones

Código Delphi [-]
if Key = #13 then  //  Si se pulsa la tecla ENTER en el Grid
  begin
   if DBGrid1.Fields[0].Value = Null then
    DBGrid1.Fields[0].AsFloat := 1; // CANTIDAD
   if DBGrid1.Fields[2].Value = Null then
    DBGrid1.Fields[2].AsFloat := 0; // PRECIO UNITARIO
   DBGrid1.Fields[3].AsFloat := DBGrid1.Fields[0].AsFloat * DBGrid1.Fields[2].AsFloat; // TOTAL
   LabelSumaTotal.Caption:='0'; // 
   TDetalles.First; // primer registro tabla Detalles
   While TDetalles.Eof=False do
    begin
     DBGrid1.Fields[3].AsFloat := DBGrid1.Fields[0].AsFloat * DBGrid1.Fields[2].AsFloat;
     LabelSumaTotal.Caption:=FloatToStr(DBGrid1.Fields[3].AsFloat + StrToFloat(LabelSumaTotal.Caption));
     LabelImpuesto.Caption:=FloatToStr(StrToFloat(LabelSumaTotal.Caption) * 0.19);  // 0.19 es el impuesto
     LabelTotal:=FloatToStr(StrToFloat(Label1SumaTotal.Caption) + StrToFloat(LabelImpuesto.Caption));
     TDetalles.Next; // siguiente registro tabla Detalles
    end;
   DBGrid1.Fields[1].FocusControl; // El cursor se posiciona en columna Detalles de la tabla Detalles
  end;

Con esto cuando el usuario vaya ingresando datos sabras a cada instante los totales. Saludos

Última edición por TrUnkS fecha: 12-01-2007 a las 17:10:22.
Responder Con Cita