Fórum Gravar um arquivo TXT com formatação #214506
16/02/2004
0
Ola galera, alguem poderia me dar uma ajuda com gravação em TXT!
É que estou terminando um sistema e a ultima coisa que ele terá que fazer é pegar os dados de uma tabela e grava-los em um arquivo TXT num formato especifico para que este arquivo txt possa ser importado por outro sistema que não foi eu que fez.
Preciso ir lendo todos os dados da tabela num intervalo de um mês e ir gravando assim:
00000048320031120031112100
onde:
000000483 --> valor do campo matricula (tem que preencher com zeros a esquerda ate ter tamanho 9)
200311200311 --> ano e mes (passados duas vezes)
12 --> codigo que indica o tipo de valor, se o nome do campo for ´hora_extra´, passa um numero se for ´adicional_noturno´ passa outro codigo, por exemplo
100 --> a quantidade de horas referente ao tipo de campo, seria o conteudo do campo ´hora_extra´ por exemplo.
Espero que esteja claro, preciso urgente de uma força com isso, agradeço toda a ajuda que receber dos colegas do forum!
Podem mandar para meu email pessoal:
antonio@link13.com.br ou palacio01@bol.com.br
Obrigado.
É que estou terminando um sistema e a ultima coisa que ele terá que fazer é pegar os dados de uma tabela e grava-los em um arquivo TXT num formato especifico para que este arquivo txt possa ser importado por outro sistema que não foi eu que fez.
Preciso ir lendo todos os dados da tabela num intervalo de um mês e ir gravando assim:
00000048320031120031112100
onde:
000000483 --> valor do campo matricula (tem que preencher com zeros a esquerda ate ter tamanho 9)
200311200311 --> ano e mes (passados duas vezes)
12 --> codigo que indica o tipo de valor, se o nome do campo for ´hora_extra´, passa um numero se for ´adicional_noturno´ passa outro codigo, por exemplo
100 --> a quantidade de horas referente ao tipo de campo, seria o conteudo do campo ´hora_extra´ por exemplo.
Espero que esteja claro, preciso urgente de uma força com isso, agradeço toda a ajuda que receber dos colegas do forum!
Podem mandar para meu email pessoal:
antonio@link13.com.br ou palacio01@bol.com.br
Obrigado.
Ldsirene
Curtir tópico
+ 0
Responder
Posts
16/02/2004
Paulo_amorim
Olá
Eu suponho que os campos MATRICULA, DATA(se nao for o corrente), CODIGO e QTD DE HORAS sejam de uma tabela...
supondo que seja assim, o select
´SELECT matricula, data, cod, qtd FROM tabela WHERE data = :data´
traz os seus dados do mes.
Feito isso, pode-se fazer o codigo:
Eu suponho que os campos MATRICULA, DATA(se nao for o corrente), CODIGO e QTD DE HORAS sejam de uma tabela...
supondo que seja assim, o select
´SELECT matricula, data, cod, qtd FROM tabela WHERE data = :data´
traz os seus dados do mes.
Feito isso, pode-se fazer o codigo:
var s: String;
dia,mes,ano: Word;
file : TextFile;
(...)
with Query1 do
begin
Open;
AssignFile( file, <diretorio que voce quer gravar> );
try
while not EOF do
begin
s := FormatFloat(´000000000´, FieldByName(´MATRICULA´).AsFloat);
{ se for a data corrente, pegue Now }
DecodeDate(FieldByName(´DATA´).AsDateTime, ano, mes, dia);
s := s + IntToStr(ano) + IntToStr(mes) + IntToStr(ano) + IntToStr(mes);
s := s + FieldByName(´COD´).AsString + FieldByName(´QTD´).AsString;
Rewrite(file);
Writeln(file, s);
finally
CloseFile(file);
end;
Responder
Gostei + 0
16/02/2004
Adilsond
Modificando um pouco a resposta do Paulo:
var F: TextFile; S: String; begin AssignFile(F,´C:\Diretorio\Arquivo.txt´); Rewrite(F); try with Query1 do begin Open; try while not EOF do begin S := Format(´¬.9d´,[FieldByName(´MATRICULA´).AsInteger]); S := S + FormatDateTime(´YYYYMM´,FieldByName(´DATA´).AsDate); S := S + FormatDateTime(´YYYYMM´,FieldByName(´DATA´).AsDate); S := Format(´¬.2d´,[FieldByName(´CODIGO´).AsInteger]); S := Format(´¬.3d´,[FieldByName(´QUANTIDADE´).AsInteger]); Writeln(F, S); end; finally Close; end; end; finally CloseFile(F); end; end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)