Ver Mensaje Individual
  #20  
Antiguo 23-08-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 23
gluglu Va por buen camino
Acabo de generar este código, con Firebird 2.1 y componentes IBX, y me funciona perfectamente, sin problema alguno :

Código Delphi [-]
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, IBCustomDataSet, IBDatabase, StdCtrls;
 
type

  THilo = class(TThread)
  private
    Hilo_DataBase: TIBDatabase;
    Hilo_Transact: TIBTransaction;
    Hilo_Tabla:    TIBDataSet;
    procedure ActualizaMemo;
  public
    CadenaMostrar: string;
  protected
    procedure Execute; override;
  end;
 
  TForm1 = class(TForm)
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBDataSet1: TIBDataSet;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Num_Hilo : Integer;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Hilo1: THilo;
  Hilo2: THilo;
 
implementation
{$R *.dfm}
 
procedure THilo.Execute;
var
  i, j : Integer;
  Aux_Date, Aux_Date2   : TDateTime;
  Aux_Valid    : Boolean;
  Count_Categ  : Integer;
  Count_SubCat : Integer;
begin
 
  Hilo_Database := TIBDatabase.Create(nil);
  Hilo_Database.DatabaseName := 'MiBasedeDatos';
  Hilo_Database.LoginPrompt  := False;
  Hilo_Database.Params.Clear;
  Hilo_Database.Params.Add( 'user_name=SYSDBA' );
  Hilo_Database.Params.Add( 'lc_ctype=ISO8859_1' );
  Hilo_Database.Params.Add( 'password=masterkey' );
  Hilo_Database.SQLDialect   := 3;
  Hilo_Database.Connected    := True;
 
  Hilo_Transact := TIBTransaction.Create(nil);
  Hilo_Transact.DefaultDataBase := Hilo_DataBase;
  Hilo_Transact.DefaultAction   := TARollback;
  Hilo_Transact.Params.Clear;
  Hilo_Transact.Params.Add( 'read_committed' );
  Hilo_Transact.Params.Add( 'rec_version' );
  Hilo_Transact.Params.Add( 'nowait' );
  Hilo_Transact.StartTransaction;
 
  Hilo_Tabla := TIBDataSet.Create(nil);
  Hilo_Tabla.Transaction := Hilo_Transact;
  Hilo_Tabla.SelectSQL.Clear;
  Hilo_Tabla.SelectSQL.Add( 'Select NOMBRE, APELLIDO from CLIENTES' );
  Hilo_Tabla.Prepare;
  Hilo_Tabla.Open;
 
  while not Hilo_Tabla.Eof do begin
    CadenaMostrar := Hilo_Tabla.Fields[0].AsString + ' ' +
                     Hilo_Tabla.Fields[1].AsString;
    Synchronize(ActualizaMemo);
    Sleep(1000);
    Hilo_Tabla.Next;
  end;
 
   Cadenamostrar := 'Fin de Fichero';
   Synchronize(ActualizaMemo);
 
end;
 
procedure THilo.ActualizaMemo;
begin
  Form1.Memo1.Lines.Add(CadenaMostrar);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
  if Num_Hilo = 1 then begin
    Hilo1 := THilo.Create( True );
    Hilo1.FreeOnTerminate := False;
    Hilo1.Resume;
    Num_Hilo := 2;
  end;
 
  if Num_Hilo = 2 then begin
    Hilo2 := THilo.Create( True );
    Hilo2.FreeOnTerminate := False;
    Hilo2.Resume;
  end;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Num_Hilo := 1;
end;
 
end.
__________________
Piensa siempre en positivo !
Responder Con Cita