Problemas exportando query para o excel
pessoal, estou com um problema sério
preciso exportar todo o conteúdo de uma tabela(estou usando o SQLServer) para uma planilha excel através da minha aplicação. Até aí tudo certo, consigo exportar os dados normalmente, porém minha tabela contém 16000 registros e todos precisam ser exportados para o excel(o pessoal quer o estoque contábel completo no excel), ai começam os problemas, preciso q tenha uma performance rápida(são 15 campos a serem exportados), mas está levando mais ou menos 15 minutos para exportar rodando direto no servidor(P4 2.6, 512 mem), imaginem rodando nas máquinas pela rede, caos total
alguém tem idéia do q eu possa fazer para melhorar a performance?
obrigado
preciso exportar todo o conteúdo de uma tabela(estou usando o SQLServer) para uma planilha excel através da minha aplicação. Até aí tudo certo, consigo exportar os dados normalmente, porém minha tabela contém 16000 registros e todos precisam ser exportados para o excel(o pessoal quer o estoque contábel completo no excel), ai começam os problemas, preciso q tenha uma performance rápida(são 15 campos a serem exportados), mas está levando mais ou menos 15 minutos para exportar rodando direto no servidor(P4 2.6, 512 mem), imaginem rodando nas máquinas pela rede, caos total
alguém tem idéia do q eu possa fazer para melhorar a performance?
obrigado
0utl@wbr
Curtidas 0
Respostas
0utl@wbr
04/03/2004
sobe
GOSTEI 0
Ivonei
04/03/2004
Como você está fazendo isto?
Eu exporto pela rede, uma tabela do mysql que está no servidor. É super rápido. Estou usando o componente TscExcelExport.
Talvez este componente resolva o seu problema.
T+
Eu exporto pela rede, uma tabela do mysql que está no servidor. É super rápido. Estou usando o componente TscExcelExport.
Talvez este componente resolva o seu problema.
T+
GOSTEI 0
0utl@wbr
04/03/2004
segue o codigo q estou usando
[b:7d0443d472]var
coluna, linha: integer;
excel: variant;
valor: string;
begin
if query1.Active=true then //verifica se a query está aberta
begin
statusbar1.panels[0].text:=´Aguarde... Exportando dados para o Excel...´;
screen.cursor := crSQLWait;
cursor:=crSQLwait;
try
excel:=CreateOleObject(´Excel.Application´);
excel.Workbooks.add(1);
except
Application.MessageBox (´Versão do Ms-Excel´+
´Incompatível´,´Erro´,MB_OK+MB_ICONEXCLAMATION);
end;
query1.First;
try
for linha:=0 to query1.RecordCount-1 do
begin
for coluna:=1 to query1.FieldCount do // eliminei a coluna 0 da relação do Excel
begin
valor:= query1.Fields[coluna-1].AsString;
excel.cells [linha+2,coluna]:=valor;
end;
query1.Next;
end;
for coluna:=1 to query1.FieldCount do // eliminei a coluna 0 da relação do Excel
begin
valor:= query1.Fields[coluna-1].DisplayLabel;
excel.cells[1,coluna]:=valor;
end;
excel.columns.AutoFit; // esta linha é para fazer com que o Excel dimencione as células adequadamente.
excel.visible:=true;
except
Application.MessageBox (´Aconteceu um erro desconhecido durante a conversão´+
´da tabela para o Ms-Excel´,´Erro´,MB_OK+MB_ICONEXCLAMATION);
end;
end;
statusbar1.panels[0].text:=´Completado com sucesso!!!!´;
screen.cursor := crDefault;
cursor:=crDefault;
query1.Close;
end;[/b:7d0443d472]
peguei esse código aqui no fórum mesmo
puxei o componente q vc falou, so q não tem nenhum exemplo de como usá-lo, vc tem algum exemplo para me passar?
obrigado
[b:7d0443d472]var
coluna, linha: integer;
excel: variant;
valor: string;
begin
if query1.Active=true then //verifica se a query está aberta
begin
statusbar1.panels[0].text:=´Aguarde... Exportando dados para o Excel...´;
screen.cursor := crSQLWait;
cursor:=crSQLwait;
try
excel:=CreateOleObject(´Excel.Application´);
excel.Workbooks.add(1);
except
Application.MessageBox (´Versão do Ms-Excel´+
´Incompatível´,´Erro´,MB_OK+MB_ICONEXCLAMATION);
end;
query1.First;
try
for linha:=0 to query1.RecordCount-1 do
begin
for coluna:=1 to query1.FieldCount do // eliminei a coluna 0 da relação do Excel
begin
valor:= query1.Fields[coluna-1].AsString;
excel.cells [linha+2,coluna]:=valor;
end;
query1.Next;
end;
for coluna:=1 to query1.FieldCount do // eliminei a coluna 0 da relação do Excel
begin
valor:= query1.Fields[coluna-1].DisplayLabel;
excel.cells[1,coluna]:=valor;
end;
excel.columns.AutoFit; // esta linha é para fazer com que o Excel dimencione as células adequadamente.
excel.visible:=true;
except
Application.MessageBox (´Aconteceu um erro desconhecido durante a conversão´+
´da tabela para o Ms-Excel´,´Erro´,MB_OK+MB_ICONEXCLAMATION);
end;
end;
statusbar1.panels[0].text:=´Completado com sucesso!!!!´;
screen.cursor := crDefault;
cursor:=crDefault;
query1.Close;
end;[/b:7d0443d472]
peguei esse código aqui no fórum mesmo
puxei o componente q vc falou, so q não tem nenhum exemplo de como usá-lo, vc tem algum exemplo para me passar?
obrigado
GOSTEI 0
Ivonei
04/03/2004
No link abaixo, você baixa o componente e acompanha um exemplo bem amplo do seu uso:
[url]http://www.torry.net/db/access/db_bdeexport/exporte.zip[/url]
Acho que realmente é mais demorado exportar no braço como você fez.
Espero que resolva o seu problema.
[ ]´s
[url]http://www.torry.net/db/access/db_bdeexport/exporte.zip[/url]
Acho que realmente é mais demorado exportar no braço como você fez.
Espero que resolva o seu problema.
[ ]´s
GOSTEI 0
0utl@wbr
04/03/2004
valeu cara, vou testar durante o final de semana e segunda posto aqui o resultado
até logo
até logo
GOSTEI 0
Vagner.oliveira
04/03/2004
se vc baixou o programa coloca ele novamente pois o link acima não funciona +.... valewww
GOSTEI 0