03/01/2006

Gerar arquivo de texto!!!!!!

preciso gerar um arquivo de texto com aseguinte estrutura:


CCCCCC CODIGO DO ITEM (6 BYTES)
PPPPPP PREÇO (6 BYTES)


montei a seguinte rotina :
--------------------------------------------------------------------------------
var arq: TextFile;
linha: String;
begin

qry_log.Close;
qry_log.SQL.Clear;
qry_log.SQL.Add(´select * from cad_log_prod ´);
qry_log.SQL.Add(´where unid_cod=´´+unidcod+´´ and prod_balanca=´S´ order by prod_cod´);
qry_log.Open;


AssignFile ( arq, ´c:\Dmb\PRECOMGV.TXT´ );
Rewrite ( arq );
qry_log.First;
while not qry_log.Eof do
begin
WriteLn ( arq, qry_log.FieldByName(´prod_cod´).asstring );
WriteLn ( arq, FormatFloat ( ´0000.00´, qry_log.FieldByName ( ´prod_precvenda´ ).AsFloat ) );
WriteLn ( arq );
qry_log.Next;
end;
CloseFile ( arq );

o resultado do arquivo gerardo é o seguinte:
===============================
5
000002

6
000013

8
000001

9
000001

10
000002

========================




OS NUMERO TEM QUE SER PREENCHIDOS COM ZEROS A ESQUERDA E O PREÇO SEM PONTUAÇÃO..... HA : NÃO PODE EXISTIR ESTE ESPAÇO DE LINHAS.


COMO FAÇO?

Desde já agradeço...


Fábio Galvão

Respostas

03/01/2006

Eixox

AssignFile ( arq, ´c:\Dmb\PRECOMGV.TXT´ );
Rewrite ( arq );
qry_log.First;
while not qry_log.Eof do
begin
WriteLn ( arq, [b:87e55eda07]qry_log.FieldByName(´prod_cod´).asstring [/b:87e55eda07]);

Substitua por

WriteLn ( arq, FormatCurr(´000000´,qry_log.FieldByName(´prod_cod´).value);

Não se preocupe se o valor é inteiro, vai fazer isso sem problemas.


WriteLn ( arq, FormatFloat ( ´0000.00´, qry_log.FieldByName ( ´prod_precvenda´ ).AsFloat ) );

[b:87e55eda07]WriteLn ( arq ); [/b:87e55eda07]
Remova essa linha aqui - é ela que acrescenta as linhas em branco que você não quer.

qry_log.Next;
end;
CloseFile ( arq );

Falou Carinha?...


Responder Citar

03/01/2006

Eixox

na linha onde tem o formatcurr eu esqueçi de colocar um parênteses no final
WriteLn ( arq, FormatCurr(´000000´,qry_log.FieldByName(´prod_cod´).value)[b:88b2e063f4])[/b:88b2e063f4];


Responder Citar

03/01/2006

Marcio.theis

Vc deve de remover o segundo writeln, pois senão irá para uma nova linha, deixe;

WriteLn(arq, ´VALOR´);
Write(arq, ´VALOR´);



Responder Citar