Ver Mensaje Individual
  #10  
Antiguo 28-10-2008
Pollo2004 Pollo2004 is offline
Miembro
 
Registrado: sep 2006
Posts: 64
Reputación: 18
Pollo2004 Va por buen camino
Exclamation 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
Código Delphi [-]
unit Factura;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, StdCtrls, DBTables, Mask, DBCtrls, Grids, DBGrids, ExtCtrls,
  Buttons;
type
  TForm5 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    DBLookupComboBox1: TDBLookupComboBox;
    DBText5: TDBText;
    DBEdit1: TDBEdit;
    DBText6: TDBText;
    DSCliente: TDataSource;
    TCliente: TTable;
    DSProd: TDataSource;
    TProd: TTable;
    DSFact: TDataSource;
    TFact: TTable;
    DSDeta: TDataSource;
    TDeta: TTable;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    TClienteIdCliente: TStringField;
    TClienteRazonSocial: TStringField;
    TClienteDireccion: TStringField;
    TClienteLocalidad: TStringField;
    TClienteCodigoPostal: TFloatField;
    TClienteTelefono: TFloatField;
    TClienteCuitCuil: TFloatField;
    TProdCodProducto: TStringField;
    TProdDetalle: TStringField;
    TProdCosto: TCurrencyField;
    TProdPrecioLista: TCurrencyField;
    TProdStock: TFloatField;
    TProdStockMin: TFloatField;
    TFactNumFact: TFloatField;
    TFactTipo: TStringField;
    TFactFecha: TDateField;
    TFactTotal: TCurrencyField;
    TFactIdCliente: TStringField;
    TDetaIditem: TAutoIncField;
    TDetaCodProducto: TStringField;
    TDetaCantidad: TFloatField;
    TDetaNumFactura: TFloatField;
    TDetaPrecioLista: TCurrencyField;
    TDetaDetalle: TStringField;
    TDetaTotal: TCurrencyField;
    SpeedButton1: TSpeedButton;
    BitBtn1: TBitBtn;
    TDetaPrecio: TCurrencyField;
    Label4: TLabel;
    Label5: TLabel;
    TFactSubTot: TCurrencyField;
    TDetaSinIva: TCurrencyField;
    Label6: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure TDetaCalcFields(DataSet: TDataSet);
    procedure DBGrid1Enter(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure TDetaCantidadValidate(Sender: TField);
    procedure BitBtn1Click(Sender: TObject);
    procedure TDetaAfterDelete(DataSet: TDataSet);
 

  
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form5: TForm5;
  NFact: integer;
implementation
{$R *.dfm}
procedure TForm5.FormActivate(Sender: TObject);
begin

  TFact.last;
  Tfact.edit;
  NFact:= TFactNumFact.asinteger;
  NFact:= NFact + 1;
  TFact.append;
  TFactFecha.AsDateTime:= now;
  TfactNumFact.AsInteger:= NFact;
end;
 
procedure TForm5.TDetaCalcFields(DataSet: TDataSet);
begin
  TDetaTotal.ascurrency:= TDetaCantidad.asinteger * TDetaPrecio.ascurrency;
end;
procedure TForm5.DBGrid1Enter(Sender: TObject);
begin
  if TFact.state in dseditmodes then
    TFact.post;
    TDeta.append;
end;
procedure TForm5.SpeedButton1Click(Sender: TObject);
begin
  TDeta.Append;
  TDeta.Post;
  if messagedlg ('LA FACTUA FUE CREADA CON EXITO', mtInformation, mbokCancel,0) = mrok
    then
      form5.close;
end;
 
procedure TForm5.TDetaCantidadValidate(Sender: TField);
begin
if TDetaCantidad.asinteger > TProdStock.asinteger then
    showmessage ('NO HAY SUFICIENTE STOCK PARA ESTE PEDIDO')
    else
      TProd.edit;
      TProdStock.AsInteger:= TProdStock.AsInteger - TDetaCantidad.asinteger;
       TProd.post;
end;
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
  TFact.Cancel;
  TDeta.edit;
  TDeta.Prior;
  TDeta.Delete;
  Form5.Close;
end;
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;
     label6.caption := currtostr(Suma);
end;
 
 
end.

Gracias otra vez por el aguante y las pilas q le ponen!!!
Responder Con Cita