PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Bpl + Thread + Query #522043

05/06/2015

0

Senhores,
Boa Tarde!

Estou com uma duvida e gostaria de saber qual seria a opinião de vocês.
Estou desenvolvendo um software MDI, sendo que cada formulário está em uma BPL até então tudo ok, porém eu tenho um TDataModule com algumas funções gerais e também, nele, o trio (TDatabase, TTransaction e TIBQuery) porém cada vez que for realizar uma consulta ao banco eu crio um thread do TIBQuery em cada módulo BPL e faço a consulta ali mesmo na thread e a amostragem dos dados dados no form eu implemento no Thread.Execute com o método Syncronize...

Porém a duvida, é uma solução viável? pois como estou usando MDI não posso trancar o usuário numa tela de pesquisa usando uma tabela pesada.
Gostaria de saber opniões.

Exemplo de Código:


Constructor TThreadExecSQL.create(Const SQLText: String);
 Begin
  inherited Create(False);
  TModuleGroup.Query01.Close;
  TModuleGroup.Query01.SQL.Add(SQLText);
  TModuleGroup.Transaction.Active:= True;
 End;

Procedure TThreadExecSQL.Execute;
 Begin
  Self.Priority := tpNormal;
  TModuleGroup.Query01.Open;
  TModuleGroup.Query01.FetchAll;


....
//segue a mostragem dos dados com um While (TModuleGroup.Query01.Eof = False) Do


Atualmente estou usando este modo, porém há um problema que ao exibir (Form.Show) o formulário contido no módulo 2 vezes há um certo problema que, por exemplo... se o usuário abrir uma pesquisa SQL na primeira tela aberta e efetuar uma pesquisa na 2 tela do mesmo módulo esta consulta somente é executada cancelando a primeira consulta do primeiro formulário aberto.

Já tentei adicionar o TIBQuery no formulario e apartir dele abrir as consultas mas persiste o problema...

Gostaria de saber como posso trabalhar de forma independente entre os módulos sendo o form contido no mesmo aberto mais de uma vez...
Já tentei abrir usando threads e não funcionou..continua apresentando a mesma coisa..

Agradeço desde já...
Pablo Mesquita

Pablo Mesquita

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar