Fórum OleException quot;objeto não conectado ao servidorquot; #340842
24/04/2007
0
O problema é o seguinte: minha aplicação gera relatórios em planilhas Excel, usando TExcelApplication e seus amigos da paleta Servers.
Como as consultas SQL e o preenchimento da planilha em si são demorados, a aplicação ficava ´congelada´ até que o status da operação mudasse, chamando o famoso Application.ProcessMessages, para então congelar novamente.
Então resolvi criar uma Thread separada para fazer as consultas e o preenchimento da planilha. Desta forma, a aplicação não congela e eu ainda ganho a possibilidade de interromper o processo de forma elegante, sem apelar para o ctrl + alt + del.
Criei a Thread, usei num programinha de teste e funcionou. Então fui usá-la no programa principal. Aparentemente estava tudo certo, até que me deparei com a mensagem de erro aí do título do tópico!
Debugando, descobri que ela acontecia no momento em que a aplicação tentava preencher a planilha Excel.
Alguém sabe o que pode ser isso?
Programaker
Curtir tópico
+ 0Posts
24/04/2007
Cd.wagner.sena
Outra coisa, vc esta tentando exportar quantos dados para o excel? numero de linhas?
Gostei + 0
24/04/2007
Programaker
Quanto à quantidade de dados, eles usam os resultados de várias consultas para preencher a planilha e o layout delas nem sempre é simples, apenas em forma de tabela. Este relatório que threadifiquei primeiro pode variar de 1 a 30-e-poucas linhas, usando entre 8 e 9 consultas, de acordo com o filtro informado.
Os outros são ainda mais complexos, tem um que usa 46 consultas diferentes. Mas isso nunca foi problema, até eu colocar o multithreading na jogada.
Gostei + 0
25/04/2007
Programaker
Desse jeito, tendo que sincronizar com a main-thread da VCL, o sentido de ter uma thread separada se perde, porque eu queria justamente que a aplicação continuasse respondendo durante o processo de emissão.
Será que multithreading usando essas automações OLE é inviável? :(
Gostei + 0
25/04/2007
Massuda
CoInitialize(nil);
CoUninitialize;
Gostei + 0
25/04/2007
Programaker
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)