Como exportar de um DBGrid para um arquivo .txt

17/12/2003

3

E aí, Blz?

Estou usando um DbGrid para exibir os dados de uma tabela feita no paradox 7 (uso delphi 5!) e gostaria de exportar esses dados contidos na tabela para um arquivo .txt, lembrando q não uso SQL nem nenhum componente um pouco mais complexo para acessar o BD,pois fiz um código bem simples e funcional... porém essa parte de exportação eu não faço nem idéia de como é feito...

ów, e agora? quem poderá me ajudar?


Responder

Posts

17/12/2003

Aroldo Zanela

Colega,

A forma mais simples seria utilizar um objeto TTable apontando para um arquivo ASCII e utilizar o método BatchMove.


Responder

22/12/2003

Maluco Tubaina

Legal, porém eu só entendi até a parte de puxar o TTable, mas agora essa parte de apontar pro arquivo ASCII e BatchMove eu desconheço, aliás, a única vez que usei ASCII foi pra fazer uns codigozinhos em assemble usando a tabela hexadecimal (ou ASCII) como base!
se possível, teria como vc me explicar melhor o funcionamento desse procedimento (apontar pro ASCII e BatchMove)???


grato pela atenção e pela paciência...


Responder

23/12/2003

Gilson_our

Maluco Tubaina: vc já tentou usar uma variável do tipo textfile?
Exemplo:

procedure Button1.Click(Sender: TObject);
var arquivo:textfile;
begin
rewrite(arquivo,´C:\tabela.txt´); //Cria o arquivo;
writeln(arquivo, ´CAMPO1   - CAMPO2 - CAMPO3 - CAMPO4 - CAMPO5´);
DataModule1.tabela.first;
while not DataModule1.tabela.eof do begin
append(arquivo);
writeln(arquivo,DataModule1.tabela.fieldbyname(´CAMPO1´).asstring+´ - ´+
DataModule1.tabela.fieldbyname(´CAMPO2´).asstring+´ - ´+
DataModule1.tabela.fieldbyname(´CAMPO3´).asstring+´ - ´+
DataModule1.tabela.fieldbyname(´CAMPO4´).asstring+´ - ´+
DataModule1.tabela.fieldbyname(´CAMPO5´).asstring);
DataModule1.tabela.next;
end;
closefile(arquivo);
end;


Bom, ai vc vai colocando quantos campos da tabela vc quer exportar para o txt e também pode-se mudar o delimitador se quiser.


Responder

07/01/2004

Maluco Tubaina

valeu pela dica, mas ainda estou com problemas, gostaria de saber com o que está relacionado ´DataModule1´, por acaso é com algum componente TTable?
Não sei por que, mas quando uso este codigo q vc me passou o campo da tabela é escrito no nome do arquivo, e não dentro dele, tipo assim:
o campo ´nome do funcionario´ aparece no lugar do nome do arquivo (ex: ´fulano de tal.txt´), ao invés de aparecer na lista que era para estar gravada dentro do arquivo, por que está acontecendo isto?


grato pela atenção e pela paciência...


Responder

07/01/2004

Maluco Tubaina

Consegui fazer rodar o código, era eu q tava comendo bronha mesmo!!!
porém só estou conseguindo colocar a última linha da tabela, e não toda ela, q é pra ser o correto...
abaixo segue o código q estou usando, gostaria de saber como faço para poder colocar uma linha da tabela embaixo de outra e montar ent~~ao uma lista...

while not Db_geral.eof do
begin
ReWrite (Arq);
WriteLn (Arq, Db_Geral.fieldbyname(´Chapa´).asstring+
´ - ´ + Db_Geral.FieldByName (´Nome do Funcionario´).asstring+
´ - ´ + Db_Geral.FieldByName (´H.E. 50¬´).asstring+
´ - ´ + Db_Geral.FieldByName (´H.E. 60¬´).asstring+
´ - ´ + Db_Geral.FieldByName (´H.E. 100¬´).asstring+
´ - ´ + Db_Geral.FieldByName (´Faltas´).asstring+
´ - ´ + Db_Geral.FieldByName (´Ass. Odonto.´).asstring+
´ - ´ + Db_Geral.FieldByName (´Ass. Médica´).asstring+
´ - ´ + Db_Geral.FieldByName (´Vale Transp.´).asstring);
Db_Geral.Next;
end;
closefile(arq);

Grato pela atenção e pela paciencia...


Responder

08/01/2004

Czapelini

O comando Rewrite apaga todo o conteúdo do arquivo. No lugar de Rewrite use Append(arq), pois este comando que insere linhas...


Responder

08/01/2004

Gilson_our

Posicione primeiro a tabela no primeiro registro
Db_geral.first;
ai depois vem o while not Db_geral.eof do begin
append(Arq); //e não rewrite como disse o czapelini

Testei aqui e deu certo, só não consigo ordenar os campos pegando o maior valor do campo e deixando os outros registros desse campo com o mesmo tamanho, isso no arquivo txt.
Mas todas as linhas aparecem uma embaixo da outra.


Responder

08/01/2004

Czapelini

Caro Gilson_our

Leia novamente o que eu escrevi.... :shock:

[b:0b7153aeae]O comando Rewrite apaga todo o conteúdo do arquivo. No lugar de Rewrite use Append(arq), pois este comando que insere linhas...[/b:0b7153aeae]

Sem ressentimentos, mas o que escrevi está certo, assim como o que vc escreveu.

Abraços!


Responder

08/01/2004

Gilson_our

czapelini: eu entendi o que vc disse, esse mal entendido foi causado por uma falha de pontuação minha, na hora eu nem tinha percebido, onde eu tinha escrito //e não rewrite como disse o czapelini, faltou uma vírgula, ou seja, //e não rewrite, como disse o czapelini.
Certo?
Abraços

Mas voltando ao Delphi, se alguem souber como exportar as linhas de uma tabela de maneira organizada para um txt, assim como no DBGrid, poste aqui.


Responder

13/01/2004

Maluco Tubaina

E aí, Blz?
Gostaria de agradecer as dicas e aproveitar pra fazer mais uma pergunta:
o arquivo texto que estou gerando deve conter uma padronização no estilo de um indice, tipo assim, ´nome do funcionario´ ´espaço vazio´ ´chapa do func´, usando um esquema parecido com a tabulação e colunas do Word, alguém faz idéia de como posso fazer isso?



grato pela atenção e pela paciência...


Responder

13/01/2004

Maluco Tubaina

Aproveitando o assunto...

A exportação do db_Grid para o .txt está ok, porém o correto é ter tipo de um cabeçalho (Ex: Empresa XXX, Folha de Pagto mes 01/04) e nas linhas inferiores os dados da tabela...
O problema é que pra cada linha da tabela é gerado um novo cabeçalho, ou seja, aparece ´Empresa XXX, Folha de Pagto mes 01/04´, na outra linha os dados do funcionario nº1, na 3º linha aparece de novo ´Empresa XXX, Folha de Pagto mes 01/04´ e na 4º linha os dados do funcionario nº2...
como eu devo fazer para tentar tirar o cabeçalho do loop do código???


grato pela atenção e pela paciência...


Responder

14/01/2004

Gilson_our

Para tirar o cabeçalho do loop do código, escreva:
writeln(Arq, ´Empresa XXX - Folha de Pagto mes 01/04´);
antes do código Db_geral.first;
while not Db_geral.eof do begin

Sobre fazer tabulação e colunas do Word no arquivo txt eu não sei.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira