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
public
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!!!