Página 1 de 1

Como criar, abrir, escrever e fechar txt em baixo nível?

Enviado: 28 Mai 2008 09:26
por labaroazul
Bom dia, amigos! :xau

Preciso exportar para arquivo texto dados como os abaixo:

PEDIDO CLIENTE VALOR FATURAS
33 010 1333,31 30/45/60
45 577 5743,20 30/45/60/75
(...)

Só que são muitos registros. Ouvi dizer que se eu criar o arquivo, abrir, escrever e fechar em baixo nível essa operação é bastante rápida. Como faço isso? (#-)

Re: Como criar, abrir, escrever e fechar txt em baixo nível?

Enviado: 28 Mai 2008 10:03
por ANDRIL
Ola, veja se te ajuda.

Código: Selecionar todos

 *-cria e abre o arq vazio
 tnovo="NOVOARQ.TXT"
 hand2=fcreate("&tnovo",0)

 *- aqui grava o cabecalho
 fwrite(hand2,"PEDIDO CLIENTE VALOR FATURAS"+chr(13)+chr(10))

 n=1
 *- aqui coloquei ate 10, se for registros use !eof()
 do while n<=10

        *--aqui vc coloca os dados dos registros
        fwrite(hand2," ped"+padl(n,2,"0")+"  cli"+padl(n,2,"0")+;
        "  val"+padl(n,2,"0")+" Fat"+padl(n,2,"0")+chr(13)+chr(10))
        n++
 enddo

 *- aqui fecha o arquivo criado, nao se esqueca desta linha
 fclose(hand2)
Ate+,

Re: Como criar, abrir, escrever e fechar txt em baixo nível?

Enviado: 28 Mai 2008 10:21
por Pablo César
1. Esse arquivo texto tem que ter esse padrão com espaços entre os campos. Você poderia nos dizer o por quê ?
2. Você menciona que são muitos os registros para fazer de forma convencional. Pergunto: quantos registros são aos que você se refere.
3. Fazer do modo convencional, é a forma mais rápida que existe, mas claro os dados não são separados por espaços. Daí então é questão de usar o COPY TO .... SDF
4. Na verdade você quer aprender a usar as funções de baixo nível. Sugiro você obter algum livro sobre tais funções, pesquisar na internet (aqui no fórum tem vários exemplos), tentar fazer um programinha simples utilizando-se do NG (Norton Guide) para ver a sintase de cada função. Comece com FOPEN, FCLOSE, FCREATE, FERROR, FREAD, FWRITE.

Re: Como criar, abrir, escrever e fechar txt em baixo nível?

Enviado: 28 Mai 2008 12:13
por labaroazul
1 - Este arquivo tem de ter espaços entre os valores porque, assim, os campos ficam "no jeito" para serem importados por outro computador onde já tem um programa para importação seguindo esse layout, Pablo César. Mas não se preocupe: ao passar cada registro, completarei os campos com espaços em branco no esquema REPLICATE(" ",<NUMERO>). Creio que vai dar certo.

2 - Atualmente são 51.280 registros e isso pode aumentar consideravelmente no mês que vem, pois é prudente passar todos os registros já existentes mais os novos.

3 - O programa de importação já usa um comando parecido. Se não me engano é o Copy from ... SDF. Acho que sei mais ou menos como funciona.

4 - Com mais calma, depois, vou "escarafunchar" o NG.

Valeu, gente! :{

Ah! Gostei dessa figurinha cabeluda! (#-) :-Y