Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2005
aurbano aurbano is offline
Miembro
 
Registrado: abr 2004
Posts: 20
Poder: 0
aurbano Va por buen camino
Problema con dbgrid.

Marcos muchas gracias por tu ayuda, pero ya lo intente. Tienes un email para enniarte el codigo fuente para ver si me puedes ayudar y me indiques en donde falle..


Gracias.
Responder Con Cita
  #2  
Antiguo 30-09-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

Cita:
1 pero no los guarda bien ya que un registro reemplaza otro:
....
table2.insert;
table2.fieldbyname(`serial´):= dbgrid1.fields[0].asinteger;
//////asi con cada uno de los registros.
table2.post
Estás seguro de que es el verdadero código que tienes, ya que esto, al compilar, da error. Seguro que sí
__________________
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
  #3  
Antiguo 30-09-2005
Alfonso Jurado Alfonso Jurado is offline
Registrado
 
Registrado: sep 2005
Ubicación: Granada
Posts: 6
Poder: 0
Alfonso Jurado Va por buen camino
Hazlo de tabla a tabla

Por qué no pruebas a hacer esto (supongo que son todos los registros de tabl2):
Código Delphi [-]
While not(table2.eof) do begin
 table2.insert;
 table2.fieldvalues['serial']:= table1.fieldvalues['serial'];.
 table2.post;
 table1.next;
end;
Responder Con Cita
  #4  
Antiguo 30-09-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
Existe un pequeño error en el codigo de Alfonso en While, deberia ser:
Código Delphi [-]
While not(table1.eof) do begin
 table2.insert;
 table2.fieldvalues['serial']:= table1.fieldvalues['serial'];.
 table2.post;
 table1.next;
end;

También, recomiendo(asi lo hago) usar mejor FieldByName().As...., porque este tiene definido el tipo de 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
  #5  
Antiguo 30-09-2005
aurbano aurbano is offline
Miembro
 
Registrado: abr 2004
Posts: 20
Poder: 0
aurbano Va por buen camino
Problema con Dbgrid.

Okay voy a utilizar el codigo de vtdeleon a ver si funciona.

Gracias luego le aviso.
Responder Con Cita
  #6  
Antiguo 01-10-2005
aurbano aurbano is offline
Miembro
 
Registrado: abr 2004
Posts: 20
Poder: 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
  #7  
Antiguo 01-10-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

El código se me hace un poco difícil de leer.

En que parte del código te da el error.

Usa las etiquetas [delphi] [ /delphi]por favor.
__________________
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
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 16:20:33.


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