Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #17  
Antiguo 22-08-2011
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 62
Poder: 24
Jack Va por buen camino
Post Gracias por responder

Cris cambie todo el código al metodo execute del hilo.
Gracias por la puntualización del método create del thread, seguro que me servirá para futuras ocasiones.
Ahora se me ha quedado como te indico abajo, pero además he cambiado los componentes de la conexión a los zeos creo que es la versión 6 y además he cambiado de firebird a mssql y tampoco me funciona. No se que pasa, estaría conformado si no se pudiera hacer en ningún caso pero es que he leído que hay algunos programadores que consiguen realizar justamente lo que yo necesito. Me encuentro un poco frustrado llevo muchos días con este problema y no le veo la punta por ningún lado.
Ahí te pongo el nuevo código a ver si me dais alguna pista.
He puesto un timer y dos conexiones con nombre diferente para asegurarme que los componentes son diferentes y se ejecutan los dos a la vez.
El método vermensaje me indica justa en que linea se para el código , en este caso devuelve un error de dirección de memoria.
Muchas gracias de antemano.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Button2011, IBDataBase, IBCustomDataSet, ExtCtrls,
  ZConnection, Db, ZAbstractRODataset, ZAbstractDataset, ZDataset;


type
  THilo = class(TThread)
    private
           DataBase: TZConnection;
           Tabla: TZQuery;
           DataBase1: TZConnection;
           Tabla1: TZQuery;
           procedure ActualizaMemo;
           procedure PonTag;
           procedure VerMensaje;
    public
          CadenaMostrar: string;
    constructor Create( Suspendido: Boolean );
    procedure Execute; override;
  end;



type
  THPrueba = class(TForm)
    Button20111: TButton2011;
    Memo1: TMemo;
    Timer1: TTimer;
    ZConnection1: TZConnection;
    ZQuery1: TZQuery;
    procedure Button20111Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  HPrueba: THPrueba;

implementation

{$R *.DFM}

procedure THilo.Execute;
begin
     // Aqui no tengo mu claro lo que tengo que poner
     while Self.Terminated = False do begin
           if HPrueba.Tag = 0 then begin
              Synchronize( PonTag );
           DataBase := TZConnection.Create( nil );
           DataBase.Protocol := 'mssql';
           DataBase.DataBase := 'BASE2011QO';
           DataBase.HostName := 'NUEVOJACK\SQLEXPRESS';
           DataBase.LoginPrompt := False;
           DataBase.Password := '';
           DataBase.User := '';
           DataBase.Connected := True;
           //
           Tabla := TZQuery.Create( nil );
           Tabla.Connection := DataBase;
           Tabla.SQL.Clear;
           Tabla.SQL.Add( 'select * from Articulo' );
           Tabla.Active := True;
           while not Tabla.Eof do begin
                 CadenaMostrar := Tabla.Fields[ 0 ].AsString + ' ' +
                                          Tabla.Fields[ 1 ].AsString;
                 Synchronize( ActualizaMemo );
                 sleep( 1000 );
                 Tabla.Next;
           end;
           end
           else begin
           Cadenamostrar := 'ooooooo';
           Synchronize( ActualizaMemo );
           DataBase1 := TZConnection.Create( nil );
           DataBase1.Protocol := 'mssql';
           DataBase1.DataBase := 'BASE2011QO';
           DataBase1.HostName := 'NUEVOJACK\SQLEXPRESS';
           DataBase1.LoginPrompt := False;
           DataBase1.Password := '';
           DataBase1.User := '';
           DataBase1.Connected := True;    // Aqui se cuelga

           Synchronize( Vermensaje );
           //
           Tabla1 := TZQuery.Create( nil );
           Tabla1.Connection := DataBase;
           Tabla1.SQL.Clear;
           Tabla1.SQL.Add( 'select * from Articulo' );
           Tabla1.Active := True;
           while not Tabla1.Eof do begin
                 CadenaMostrar := Tabla1.Fields[ 0 ].AsString + ' ' +
                                  Tabla1.Fields[ 1 ].AsString;
                 Synchronize( ActualizaMemo );
                 sleep( 1000 );
                 Tabla1.Next;
           end;
           end;
     end;
end;


constructor THilo.Create( Suspendido: Boolean );
begin
     inherited Create( True );
     // Quizas tuviera que crear un objeto TList con un database, transaction y tabla
     // para cada ejecución del hilo
end;

procedure THilo.ActualizaMemo;
begin
     HPrueba.Memo1.Lines.Add( CadenaMostrar );
end;

procedure THilo.PonTag;
begin
     HPrueba.Tag := 1;
end;

procedure THilo.VerMensaje;
begin
     showmessage( 'pp' );
end;




procedure THPrueba.Button20111Click(Sender: TObject);
          var Hilo: THilo;
begin
     Hilo := THilo.Create( True );
     Hilo.FreeOnTerminate := False;
     Hilo.Resume;
     Timer1.Enabled := True;
end;

procedure THPrueba.Timer1Timer(Sender: TObject);
begin
     Button20111Click( Self );
     Timer1.Enabled := False;

end;

end.

Última edición por Casimiro Noteví fecha: 22-08-2011 a las 18:50:10. Razón: Poner etiquetas [delphi] [/delphi]
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
threads en dbExpress pborges36 Conexión con bases de datos 5 21-12-2010 16:18:47
Firebird AND Threads Abel Garcia Firebird e Interbase 21 19-03-2008 05:07:21
uso de threads JULIPO API de Windows 2 25-07-2007 16:09:06
Bloqueo Ibx Firebird AND threads Abel Garcia Firebird e Interbase 3 26-02-2007 14:02:27


La franja horaria es GMT +2. Ahora son las 19:45:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi