Como exportar de um DBGrid para um arquivo .txt
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?
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?
Maluco Tubaina
Curtidas 0
Respostas
Aroldo Zanela
17/12/2003
Colega,
A forma mais simples seria utilizar um objeto TTable apontando para um arquivo ASCII e utilizar o método BatchMove.
A forma mais simples seria utilizar um objeto TTable apontando para um arquivo ASCII e utilizar o método BatchMove.
GOSTEI 0
Maluco Tubaina
17/12/2003
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...
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...
GOSTEI 0
Gilson_our
17/12/2003
Maluco Tubaina: vc já tentou usar uma variável do tipo textfile?
Exemplo:
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.
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.
GOSTEI 0
Maluco Tubaina
17/12/2003
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...
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...
GOSTEI 0
Maluco Tubaina
17/12/2003
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...
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...
GOSTEI 0
Czapelini
17/12/2003
O comando Rewrite apaga todo o conteúdo do arquivo. No lugar de Rewrite use Append(arq), pois este comando que insere linhas...
GOSTEI 0
Gilson_our
17/12/2003
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.
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.
GOSTEI 0
Czapelini
17/12/2003
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!
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!
GOSTEI 0
Gilson_our
17/12/2003
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.
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.
GOSTEI 0
Maluco Tubaina
17/12/2003
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...
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...
GOSTEI 0
Maluco Tubaina
17/12/2003
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...
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...
GOSTEI 0
Gilson_our
17/12/2003
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.
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.
GOSTEI 0