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.


Ldsirene

Ldsirene

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:

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar