Exportar Dados para TXT, Alquem por favor poderia me ajudar

Delphi

12/03/2009

Galera, eu tenho 3 tabelas em uma base de dados com um sitema rodando, e tem uma tabela que possui 26.000 linhas e alguns usuarios precisam dess tabela em Excel, hj eu exibo toda essa tabela no meu grid e exporto para excel lendo linha a linha mas isso é muito demorado, eu gostaria de saber se alguem sabe anlgun modo de fazer essa expertação ou exportar meus dados para um txt que dai fica facil para importar no excel, será que teria um select que faça isso ?


Uso Firebird 2.0 com Ibexpert
Delphi 7


Cleiflavio

Cleiflavio

Curtidas 0

Respostas

Woinch

Woinch

12/03/2009

Que código você está utilizando para montar o arquivo de exportação?


GOSTEI 0
Vitor Alcantara

Vitor Alcantara

12/03/2009

Via TextFile

var
  f: TextFile;
begin
  AssignFile(f,´Nome do seu arquivo.txt´);
  Rewrite(f);
  Write(f,´Insere no arquivo e continua na mesma linha. ´);
  WriteLn(f,´Começa na mesma linha e pula para próxima.´);
  CloseFile(f);
end;

Via StringList;

Var
  lst : TStrings;
begin
  Try
     Lst := TStringList.Create;
     Lst.Add(´Linha1);
     Lst.Add(´Linha2´);
     Lst.SaveToFile(´Nome do seu arquivo.txt´);
  Finally
     Lst.Free;
  end;
end;



GOSTEI 0
Cleiflavio

Cleiflavio

12/03/2009

deixa eu explicar melhor.

Eu tenho que exportar todos meus dados da minha tabela de banco de dados para um txt.

eu tenho uma tabela com 26.000 linhas e não posso ler linha a linha tem que haver um jeito de eu Selecionar a tabela e exportar toda ela para um txt. é isso que eu quero fazer. precisava que isso seria feito pelo Delphi, atraves de um codigo.

Alguem sabe como fazer isso ????

Estou usando Firebird e Ibexpert


GOSTEI 0
Woinch

Woinch

12/03/2009

Desconheço uma maneira de fazer esse processo tão grande de uma maneira que não seja tão demorada, mas você pode tentar otimizá-lo ao máximo. Experimente trazer o resultado do select já concatenado com ´;´ exemplo:

select CAMPO1 || ´;´ || CAMPO2 || ´;´ from TABELA


Após isso, varra todo o resultado e utilize o comando Writeln para gravar direto no arquivo texto sem alocar nada na memória. Se não for rápido o sufuciente, faça um teste também com StringList e para salvar utilize o comando SaveToFile.

Quando tiver terminado se mesmo assim ficar demorado poste o código aqui para que possamos ajudar. Se funcionar, poste também! :D


Espero ter ajudado.


GOSTEI 0
Vitor Alcantara

Vitor Alcantara

12/03/2009

Tem um caso que estou desenvolvendo um PDV que funciona OFF-line e atualiza os dados de tempos em tempos, tanto atualizando os dados do cadastro do servidor como envia as vendas. Estava pensando em utilizar a importação via TXT. Mais desisti e resolvi utilizar a opção save to file do ClientDataSet no modo padrão que é o binário. Cara ficou muito rápido tanto na escrita como na leitura. Será que isso não se encaixaria no seu caso.


GOSTEI 0
Helio Nascimento

Helio Nascimento

12/03/2009

[b:2fac90c314]Vitor Araujo Alcantara[/b:2fac90c314]

Cara estou desenvolvendo algo para uma representação que também será vendas of-line e a noite conecta e descarrega. Voce poderia me passar algo de como voce está implementando. Se quizer me dar mais detalhes via msn pode me adicionar helionas@hotmail.com

Obrigado


GOSTEI 0
Cleiflavio

Cleiflavio

12/03/2009

Woinch

Estou tentando usar a sua, está indo bem mas está trazendo toda a informação em uma unica linha.

Será que teria como vc me passar um select que acertasse isso.
EX:
No select que vc passou = select CAMPO1 || ´;´ || CAMPO2 || ´;´ from TABELA

CONCATENAR ID NOME ENDERECO CIDADE RAFAEL RUA 2 SP ANDERSON RUA 3 RJ

Entedeu isso é só um exemplo está vindo em uma unica linha toda minha informação.

Eu preciso que venha assim :

NOME CIDADE ENDERECO
RAFAEL SP RUA 2
ANDERSON RJ RUA 3

Teria como fazer um selec assim ?


Agradeço se me ajudarem.


GOSTEI 0
Woinch

Woinch

12/03/2009

Mas dessa maneira que lhe passei o select já está vindo assim. Só que ele vai trazer o resultado em diversas linhas. Portanto você precisará fazer um loop para gravar o resultado no arquivo texto. Veja:

select NOME || ´ ´ || CIDADE || ´ ´ || ENDERECO from TABELA


Irá retornar como você mostrou.
PS: Sugiro utilizar um delimitador como ´;´ ou ´|´.

Execute esse select em algum gerenciador de banco de dados para você ver como irá retornar. Agora caso o que você queira fazer seja mostrar em diversas linhas a mesma linha de resultado do select basta usar o caractere do ´enter´. Veja:

select NOME || ´#1310´ || CIDADE || ´1310´ || ENDERECO from TABELA


Irá retornar:

RAFAEL SP RUA 2 ANDERSON RJ RUA 3



GOSTEI 0
POSTAR