Arquivo TXT - Tabulado
Bom dia a todos
Caros, preciso criar um arquivo TXT baseado em uma tabela access, (PRODUTOS), Conexão e Criar o arquivo eu sei fazer o que não estou conseguindo é gerar no formato especifico: Meu código:assignFile(arq,'\PRODUTOS_AR.txt');
rewrite(arq);
tabela.open;
tabela.first;
while not tabela.eof do begin
write (arq, tabela.fieldByName('p_iditg').asString);
write (arq, tabela.fieldByName('p_cod').asString);
write (arq, tabela.fieldByName('p_des').asString);
writeLn(arq);
tabela.next;
end;
closeFile(arq);
Layout do arquivo:Campo TIPO TAM Posição Comentários
----- ---- ---- --------- ---------------------------------------------------------
P_IDITG C 15 1 a 15 Código de integração [Código de integração]
P_ID C 10 16 a 25 Código interno do produto [Código Interno]
P_COD C 14 26 a 39 Código de venda do produto [Código de Venda]
P_DES C 60 40 a 99 Descrição [Descrição]
P_UND C 2 100 a 101 Unidade [Unidade]
Alguem poderia me ajudar,
Grande abraço a todos
Caros, preciso criar um arquivo TXT baseado em uma tabela access, (PRODUTOS), Conexão e Criar o arquivo eu sei fazer o que não estou conseguindo é gerar no formato especifico: Meu código:assignFile(arq,'\PRODUTOS_AR.txt');
rewrite(arq);
tabela.open;
tabela.first;
while not tabela.eof do begin
write (arq, tabela.fieldByName('p_iditg').asString);
write (arq, tabela.fieldByName('p_cod').asString);
write (arq, tabela.fieldByName('p_des').asString);
writeLn(arq);
tabela.next;
end;
closeFile(arq);
Layout do arquivo:Campo TIPO TAM Posição Comentários
----- ---- ---- --------- ---------------------------------------------------------
P_IDITG C 15 1 a 15 Código de integração [Código de integração]
P_ID C 10 16 a 25 Código interno do produto [Código Interno]
P_COD C 14 26 a 39 Código de venda do produto [Código de Venda]
P_DES C 60 40 a 99 Descrição [Descrição]
P_UND C 2 100 a 101 Unidade [Unidade]
Alguem poderia me ajudar,
Grande abraço a todos
Arildo Augusto
Curtidas 0
Respostas
Villatore Ltda
21/05/2010
Bom acho que vai te ajudar vc pode preencher com espaços ex:
função
espero ter ajudado
assignFile(arq,'\PRODUTOS_AR.txt');
rewrite(arq);
tabela.open;
tabela.first;
while not tabela.eof do begin
write (arq, PreencheBrancosDireita(tabela.fieldByName('p_iditg').asString,15));
write (arq, PreencheBrancosDireita(tabela.fieldByName('p_cod').asString,10));
write (arq, PreencheBrancosDireita(tabela.fieldByName('p_des').asString,14));
...
writeLn(arq);
tabela.next;
end;
closeFile(arq);
função
{Prenche, à direita, com espaco até o tamanho total "N"}
Function PreencheBrancosDireita(Varia :ShortString; N : Byte) : ShortString;
begin
if N > Length(Varia) Then
begin
PreencheDireita := Varia + Copies (' ', N - Length(Varia));
end
else
begin
PreencheDireita := Copy (Varia, 1, N);
end;
end;
espero ter ajudado
GOSTEI 0
Villatore Ltda
21/05/2010
Bom acho que vai te ajudar vc pode preencher com espaços ex:
função
espero ter ajudado
assignFile(arq,'\PRODUTOS_AR.txt');
rewrite(arq);
tabela.open;
tabela.first;
while not tabela.eof do begin
write (arq, PreencheBrancosDireita(tabela.fieldByName('p_iditg').asString,15));
write (arq, PreencheBrancosDireita(tabela.fieldByName('p_cod').asString,10));
write (arq, PreencheBrancosDireita(tabela.fieldByName('p_des').asString,14));
...
writeLn(arq);
tabela.next;
end;
closeFile(arq);
função
{Prenche, à direita, com espaco até o tamanho total "N"}
Function PreencheBrancosDireita(Varia :ShortString; N : Byte) : ShortString;
begin
if N > Length(Varia) Then
begin
PreencheDireita := Varia + Copies (' ', N - Length(Varia));
end
else
begin
PreencheDireita := Copy (Varia, 1, N);
end;
end;
espero ter ajudado
corrigindo
função
{Prenche, à direita, com espaco até o tamanho total "N"}
Function PreencheBrancosDireita(Varia :ShortString; N : Byte) : ShortString;
begin
if N > Length(Varia) Then
begin
PreencheBrancosDireita:= Varia + Copies (' ', N - Length(Varia));
end
else
begin
PreencheBrancosDireita:= Copy (Varia, 1, N);
end;
end;
GOSTEI 0
Arildo Augusto
21/05/2010
Pessoal
Me desculpem, esqueci de citar que no arquivo txt gerado, alguns campos precisam ser preenchidos com zeros a esquerda, conforme exemplo abaixo:
0000000009280 00000000009280TUBO PRETO 11/2X6 DIN 2440 PC
0000000000100 00000000000100CONDUITE POLIETILENO 3/4"9 MT
0000000001000 00000000001000DISJUNTOR BIP 50A L&C PC
0000000001001 00000000001001EMENDA U PERFURADA 150X100 PC
Me desculpem, esqueci de citar que no arquivo txt gerado, alguns campos precisam ser preenchidos com zeros a esquerda, conforme exemplo abaixo:
0000000009280 00000000009280TUBO PRETO 11/2X6 DIN 2440 PC
0000000000100 00000000000100CONDUITE POLIETILENO 3/4"9 MT
0000000001000 00000000001000DISJUNTOR BIP 50A L&C PC
0000000001001 00000000001001EMENDA U PERFURADA 150X100 PC
GOSTEI 0
Wilson Junior
21/05/2010
De uma olhada neste link https://www.devmedia.com.br/post-16040-Preenche-uma-string-com-uma-quantidade-de-caracteres-podendo-alinhar-a-esqueda-ou-direita.html
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Villatore Ltda
21/05/2010
Pessoal
Me desculpem, esqueci de citar que no arquivo txt gerado, alguns campos precisam ser preenchidos com zeros a esquerda, conforme exemplo abaixo:
0000000009280 00000000009280TUBO PRETO 11/2X6 DIN 2440 PC
0000000000100 00000000000100CONDUITE POLIETILENO 3/4"9 MT
0000000001000 00000000001000DISJUNTOR BIP 50A L&C PC
0000000001001 00000000001001EMENDA U PERFURADA 150X100 PC
Me desculpem, esqueci de citar que no arquivo txt gerado, alguns campos precisam ser preenchidos com zeros a esquerda, conforme exemplo abaixo:
0000000009280 00000000009280TUBO PRETO 11/2X6 DIN 2440 PC
0000000000100 00000000000100CONDUITE POLIETILENO 3/4"9 MT
0000000001000 00000000001000DISJUNTOR BIP 50A L&C PC
0000000001001 00000000001001EMENDA U PERFURADA 150X100 PC
mesma coisa amigo
Function PreencheZeroEsquerda(Varia :ShortString; N : Byte) : ShortString;
begin
if N > Length(Varia) Then
begin
PreencheZeroEsquerda := Copies ('0', N - Length(Varia)) + Varia;
end
else
begin
PreencheZeroEsquerda := Copy (Varia, Length(Varia) - N + 1, N);
end;
end;
GOSTEI 0
Arildo Augusto
21/05/2010
Pessoal
Infelizmente não esta gerando como deveria, vejam abaixo o layout e um exemplo de como precisa ficar o arquivo gerado: Da forma como me passaram eu não entendi, como saber em que posição de coluna estou escrevendo no TXT?
Layout do arquivo:
Campo TIPO TAM Posição Comentários
----- ---- ---- --------- ---------------------------------------------------------
P_IDITG C 15 1 a 15 Código de integração [Código de integração]
P_ID C 10 16 a 25 Código interno do produto [Código Interno]
P_DES C 60 40 a 99 Descrição [Descrição]
P_UND C 2 100 a 101 Unidade [Unidade]
Exemplo de como deverá ficar o arquivo gerado
0000000009280 00000000009280 TUBO PRETO 11/2X6 DIN 2440 PC
0000000000100 00000000000100 CONDUITE POLIETILENO 3/4"9 MT
0000000001000 00000000001000 DISJUNTOR BIP 50A L&C PC
0000000001001 00000000001001 EMENDA U PERFURADA 150X100 PC
Ou seja: no TXT o código deve ficar entre as posições 1 até 15, como o código é 9280, devemos preencher antes com zeros ja que o campo na tabela possui 15 caracteresA Descrição ficaria entre a posição 40 até 99 porem não precisa ser preenchida com zeros apenas espaços no final ja que o campo da tabela possui 60 caracteres
Espero ter esclarecido
Layout do arquivo:
Campo TIPO TAM Posição Comentários
----- ---- ---- --------- ---------------------------------------------------------
P_IDITG C 15 1 a 15 Código de integração [Código de integração]
P_ID C 10 16 a 25 Código interno do produto [Código Interno]
P_DES C 60 40 a 99 Descrição [Descrição]
P_UND C 2 100 a 101 Unidade [Unidade]
Exemplo de como deverá ficar o arquivo gerado
0000000009280 00000000009280 TUBO PRETO 11/2X6 DIN 2440 PC
0000000000100 00000000000100 CONDUITE POLIETILENO 3/4"9 MT
0000000001000 00000000001000 DISJUNTOR BIP 50A L&C PC
0000000001001 00000000001001 EMENDA U PERFURADA 150X100 PC
Ou seja: no TXT o código deve ficar entre as posições 1 até 15, como o código é 9280, devemos preencher antes com zeros ja que o campo na tabela possui 15 caracteresA Descrição ficaria entre a posição 40 até 99 porem não precisa ser preenchida com zeros apenas espaços no final ja que o campo da tabela possui 60 caracteres
Espero ter esclarecido
GOSTEI 0
Wilson Junior
21/05/2010
Utilizando os procediementos do link que passei no posto anterior
Qualçquer coisa é só perguntar.
Espero ter colaborado.
write (arq, ColocaTextoDir(tabela.FieldByName('p_iditg').AsString,
15, '0') ); // 1 a 15
write
(arq, ColocaTextoDir(tabela.FieldByName('p_cod').AsString,
10, '0')); // 16 a 25
write
(arq, ColocaTextoEsq('', 14, ' ') ); // 26 a 39
write (arq, ColocaTextoEsq(tabela.fieldByName('p_des').AsString,
60, ' ') ); //40 a 99
Qualçquer coisa é só perguntar.
Espero ter colaborado.
GOSTEI 0
Arildo Augusto
21/05/2010
"Paulista"
Se eu te falar que ficou 11 ao invés de 10 voce acredita?, entaum,, ficou muito bom, funcionou direitinho Muito Obrigado caro colegaMuito obrigado mesmo,
Agradeço a todos que tentaram me ajudar
Fiquem com DEUS
Se eu te falar que ficou 11 ao invés de 10 voce acredita?, entaum,, ficou muito bom, funcionou direitinho Muito Obrigado caro colegaMuito obrigado mesmo,
Agradeço a todos que tentaram me ajudar
Fiquem com DEUS
GOSTEI 0