Executar uma Queryes concorrentes no delphi
Boa tarde,
Estou com um problema que é o seguinte:
Tenho uma procedure em banco que gerar vários registros de livro fiscal, esta procedure eu executo via um componente de strored procedure porém preciso ao mesmo tempo executar uma outra query com um select em uma tabela que eu incremento dentro desta procedure gravando o progresso do meu processo, desta forma eu queri poder apresentar um GAUGE progressivo com estes resultados mostrando ao meu usuário o status do processo.
Meu problema é, se eu executar em aplicações diferentes funciona, porém dentro da mesma aplicação a outra query so é executada após o componente detectar o final da execução da procedure.
já tentei fazer 2 Threads e executá-las deparadamente porem acontece o mesmo, só executa após o execSql ser finalizado.
Alguém ai sabe me dizer como eu isolo este componente para que ao acessar a propriedade execSql ele não trave a aplicação?
Grato.
Estou com um problema que é o seguinte:
Tenho uma procedure em banco que gerar vários registros de livro fiscal, esta procedure eu executo via um componente de strored procedure porém preciso ao mesmo tempo executar uma outra query com um select em uma tabela que eu incremento dentro desta procedure gravando o progresso do meu processo, desta forma eu queri poder apresentar um GAUGE progressivo com estes resultados mostrando ao meu usuário o status do processo.
Meu problema é, se eu executar em aplicações diferentes funciona, porém dentro da mesma aplicação a outra query so é executada após o componente detectar o final da execução da procedure.
já tentei fazer 2 Threads e executá-las deparadamente porem acontece o mesmo, só executa após o execSql ser finalizado.
Alguém ai sabe me dizer como eu isolo este componente para que ao acessar a propriedade execSql ele não trave a aplicação?
Grato.
Claudney Sessa..
Curtidas 0
Respostas
Alex Constâncio
13/05/2013
Olá
Por falta de detalhes, estou assumindo que você está usando BDE. Para ter execuções concorrentes em BDE, você precisa que em cada thread exista um TSession e um TDatabase próprios e ligar estes o teu dataset. Se cada thread tiver um contexto totalmente isolado da outra (daí a necessidade de ter tanto o TSession quanto o TDatabase), será como se fossem duas instâncias separados do aplicativo e uma consulta não vai interferir na outra.
Alex
Por falta de detalhes, estou assumindo que você está usando BDE. Para ter execuções concorrentes em BDE, você precisa que em cada thread exista um TSession e um TDatabase próprios e ligar estes o teu dataset. Se cada thread tiver um contexto totalmente isolado da outra (daí a necessidade de ter tanto o TSession quanto o TDatabase), será como se fossem duas instâncias separados do aplicativo e uma consulta não vai interferir na outra.
Alex
GOSTEI 0
Claudney Sessa..
13/05/2013
Opa, eu eu estou sim utilizando BDE, na minha aplicação 3 camadas com DataSnap foi simples, pois deixo tudo isto em um procedimento no meu servidor de aplicação, já via BDE realmente tive este problema.
Irei fazer os testes aqui com a sua dica, e desde já fico muito grato por sua ajuda.
Vlw
GOSTEI 0