Ver Mensaje Individual
  #8  
Antiguo 01-10-2005
aurbano aurbano is offline
Miembro
 
Registrado: abr 2004
Posts: 20
Reputación: 0
aurbano Va por buen camino
key violation

Me da ahora un error que se llama key violation. Como puedo solventar este error.


el codigo que utilizo es este:

Código Delphi [-]
unit Unit8;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, DB, DBTables,
   RoundButton, Mask, DBCtrls;
 
 type
   TForm8 = class(TForm)
     Table1: TTable;
     DataSource1: TDataSource;
     DBGrid1: TDBGrid;
     Label1: TLabel;
     Panel1: TPanel;
     Label2: TLabel;
     Label3: TLabel;
     Label4: TLabel;
     Label5: TLabel;
     RoundButton2: TRoundButton;
     RoundButton1: TRoundButton;
     Label6: TLabel;
     Label7: TLabel;
     Label8: TLabel;
     Label9: TLabel;
     Label10: TLabel;
     DBEdit1: TDBEdit;
     DBEdit2: TDBEdit;
     DBEdit3: TDBEdit;
     DBEdit4: TDBEdit;
     DBEdit5: TDBEdit;
     Table2: TTable;
     DataSource2: TDataSource;
     DBEdit6: TDBEdit;
     Label11: TLabel;
     procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
     procedure RoundButton2Click(Sender: TObject);
     procedure RoundButton1Click(Sender: TObject);
     procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form8: TForm8;
 
 implementation
 
 uses
   Unit2, unit9;
 
 {$R *.dfm}
 
 procedure TForm8.DBGrid1KeyPress(Sender: TObject; var Key: Char);
 begin
   If Key = #13 then
   begin
     Table1.Edit;
     if Dbgrid1.Fields[0].Value<>Null then
     begin
       Form2.Table1.IndexFieldNames:='Ser_PRO';
       if Form2.Table1.FindKey([Dbgrid1.Fields[0]])=True then
       begin
         Dbgrid1.Fields[2].AsString:=Form2.Table1.FieldbyName('des_PRO').AsString;
         Dbgrid1.Fields[5].Ascurrency:= Dbgrid1.Fields[4].Ascurrency * (14/100)* Dbgrid1.Fields[3].Asfloat;
         Dbgrid1.Fields[6].Ascurrency:= Dbgrid1.Fields[3].Asfloat * Dbgrid1.Fields[4].Ascurrency
           + Dbgrid1.Fields[5].Ascurrency;
         Dbgrid1.Fields[0].FocusControl;
         Table1.First;
         Label3.Caption := '0';
         Table1.First;
         while Table1.Eof = false do
         Begin
           Label3.Caption := FloatToStr(Table1.FieldByName('costo/total').AsFloat + StrToFloat(Label3.Caption));
           Label5.Caption := floattostr(table1.fieldbyname('IVA').ascurrency+ StrToFloat(Label5.Caption));
           table1.edit;
           TABLE1.POST;
           TABLE1.NEXT;
         end;
       end
       else
         ShowMessage('Producto no encontrado');
       Dbgrid1.Fields[0].FocusControl;
     end;
   end;
 end;
 
 procedure TForm8.RoundButton2Click(Sender: TObject);
 begin
   table1.edit;
   TABLE1.first;
   while table1.eof = false do
     table1.Delete;
   label3.caption:= '0';
   label5.Caption:= '0';
   dbgrid1.Fields[0].FocusControl;
 end;
 
 procedure TForm8.RoundButton1Click(Sender: TObject);
 begin
   table1.first;
   while table1.Eof=false do
   begin
     form2.Table1.FindKey([table1.fieldbyname('serial').asinteger]);
     form2.Table1.edit;
     form2.Table1.fieldbyname('exi_PRO').asfloat := form2.Table1.fieldbyname('exi_pro').asfloat
       + dbgrid1.Fields[3].asfloat;
     form2.Table1.FieldByName('iva_PRO').ascurrency:= form2.Table1.fieldbyname('prv_pro').AsCurrency * (14/100);
     form2.Table1.fieldbyname('prV_PRO').AsCurrency:= dbgrid1.Fields[4].ascurrency * (40/100)
       + dbgrid1.Fields[4].ascurrency;
     form2.Table1.Post;
     /// REGISTRO EN LA TABLA DE COMPRAS
     TABLE2.INSERT;
     table2.fieldbyname('fec_COM').asdatetime := date;
     table2.fieldbyname('ser_COM').asinteger := dbgrid1.Fields[0].AsInteger;
     table2.fieldbyname('Nro_fac').Asstring := dbgrid1.Fields[1].Asstring;
     table2.fieldbyname('Des_com').asstring := dbgrid1.Fields[2].Asstring;
     table2.fieldbyname('Can_com').asfloat := dbgrid1.Fields[3].Asfloat;
     table2.fieldbyname('Cun_com').ascurrency := dbgrid1.Fields[4].Ascurrency;
     table2.fieldbyname('IVA_com').ascurrency := dbgrid1.Fields[5].Ascurrency;
     table2.fieldbyname('Cot_com').ascurrency := dbgrid1.Fields[6].Ascurrency;
     table2.fieldbyname('RIF_com').asstring := dbedit1.Field.AsString;
     table2.fieldbyname('nom_com').asstring := dbedit2.Field.AsString;
     table2.fieldbyname('nit_com').asinteger := dbedit3.Field.Asinteger;
     table2.fieldbyname('dir_com').asstring := dbedit4.field.AsString;
     table2.fieldbyname('tel_com').asstring := dbedit5.Field.AsString;
     table2.post;
     table1.Next;
   end;
 END;
 
 procedure TForm8.DBEdit1KeyPress(Sender: TObject; var Key: Char);
 begin
   If Key = #13 then
   begin
     TABLE1.EDIT;
     if dbedit1.Field.Value<>Null then
     begin
       Form9.Table1.IndexFieldNames:='rif_prv';
       if Form9.Table1.FindKey([Dbedit1.Field])=TRUE then
       begin
         Dbedit2.Field.AsString:=Form9.Table1.FieldbyName('nom_prv').AsString;
         Dbedit3.Field.Asinteger:=Form9.Table1.FieldbyName('Nit_prv').Asinteger;
         Dbedit4.Field.Asstring:=Form9.Table1.FieldbyName('Dir_prv').asstring;
         Dbedit5.Field.AsString:=Form9.Table1.FieldbyName('tel_prv').AsString;
         Dbedit1.Field.FocusControl;
       end;
     end;
   end;
 end;
 
 end.

Última edición por dec fecha: 01-10-2005 a las 22:20:43. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita