Ver Mensaje Individual
  #13  
Antiguo 17-04-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me ha extrañado mucho lo de los problemas comentados con el componente "Table" y yo no recuerdo que fuese tan malo, aunque la última vez que lo usé hace tantos años que ni me acuerdo, así que he hecho una prueba muy simple, apenas he tardado 5 minutos en escribir el proyecto y grabarlo en video.

Solamente quería comprobarme a mí mismo y de paso recordar cómo iba, porque no me gusta contar algo que esté equivocado, quería estar seguro, así que esto es lo que he hecho:

He abierto una vieja máquina virtual con windows XP y delphi 2007, he creado un nuevo proyecto.
De la pestaña Interbase (son los componentes IBX) he añadido un ibdatabase, un ibtransaction y un ibTable.
Lo he conectado a una base de datos firebird 2.5 de una gestión contable que hice hace unos años.
He puesto un dbgrid, un dbnavigator y unos botones para conectar y otro para hacer una búsqueda.
No hay nada de código SQL, ni Query, ni nada de nada, solamente el componente "table".

He añadido (con ibexpert) a una de las tablas 110.000 registros que más los que tenía, suman un total 110.053 registros.
Son poquitos, pero para hacer una prueba creo que valen, y el test lo he grabado en video.

Botón conectar es instantáneo, desconectar igualmente, vuelta a conectar al instante.
Voy al final de la tabla, casi instantáneo. Voy de nuevo al principio, instantáneo.
En el registro 100.000 la descripción es "HOLA", le doy a buscar, que usa un simple locate y se puede ver que es instantáneo.
Avanzo hacia arriba (retrocedo) un poco y edito un registro cambiando su descripción también por "HOLA", es instantáneo, la edición de cualquier registro no tarda absolutamente nada.
Voy de nuevo al principio y le doy a buscar, encuentra el registro editado también instantáneamente.
Desconectar y salir.

Aquí está el video de prueba.
Y aquí está el código fuente, nada de SQL, ni nada de nada.
Código Delphi [-]
unit Unit6;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, IBCustomDataSet, IBTable, IBDatabase, ExtCtrls,
  DBCtrls, StdCtrls;

type
  TForm6 = class(TForm)
    IB1: TIBDatabase;
    TR1: TIBTransaction;
    ibtbl1: TIBTable;
    ds1: TDataSource;
    dbgrd1: TDBGrid;
    dbnvgr1: TDBNavigator;
    pn1: TPanel;
    bt2: TButton;
    bt1: TButton;
    ed1: TEdit;
    bt3: TButton;
    procedure bt1Click(Sender: TObject);
    procedure bt2Click(Sender: TObject);
    procedure bt3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.bt1Click(Sender: TObject);
begin
  ib1.Connected := not(ib1.Connected);
  tr1.Active := ib1.Connected;
  ibtbl1.Active := ib1.Connected;
  ds1.Enabled := ib1.Connected;
  if not(ib1.Connected) then
    bt1.Caption := 'Conectar'
  else
    bt1.Caption := 'Desconectar';
end;

procedure TForm6.bt2Click(Sender: TObject);
begin
  close;
end;

procedure TForm6.bt3Click(Sender: TObject);
begin
  ibtbl1.Locate('NOMBREPROVINCIA',ed1.Text,[]);
end;

end.
Responder Con Cita