Página 1 de 1

Arquivo TXT (corrigindo)

Enviado: 19 Jan 2005 02:03
por Singulani
Alo galera,

Preciso saber porque não estou conseguindo gravar fisicamente meu arquivo TXT após executar uma rotina de filtro como mostro abaixo.
O problema é que tudo funciona noemalmente mas o arquivo não é gravado no HD. Será que vc pode me dar uma ajuda? Veja minha rotina.

Grato
Singulani...

se possível responda para o meu e-mail:

sing@click21.com.br

-----------------------------------------------

/* gerando o nome do arquivo */
cArquivo := "ARQ_01.TXT"


/* criando o arquivo */
nHandle := fcreate ("cArquivo", FC_NORMAL)

dbselectarea ("arq_fun")

? "Aguarde Exportando Cadastro de Funcionários"

while ( CODCLI >= cCliente .and. CODCLI <= cCliente .and. !eof () )

/* montagem do registro */

cLinha := ""
cLinha += arq_fun->CODFUN
cLinha += arq_fun->CODEMP
cLinha += arq_fun->NOMFUN
cLinha += transform(arq_fun->QTDCES, "999999")
cLinha += arq_fun->STAFUN
cLinha += arq_fun->CODMOT
cLinha += arq_fun->NOMMOT
cLinha += chr(13)+chr(10) // para saltar a Linha

// para gravar no arquivo txt
fwrite (nHandle, cLinha, len (cLinha))

dbskip ()

enddo

fclose (nHandle)

Gravar Arquivo TXT

Enviado: 19 Jan 2005 09:07
por Adriano
Caro colega, verifique sua rotina e acho que tem 2 problemas.

1° Problema:
nHandle := fcreate ("cArquivo", FC_NORMAL)

Esta linha irá criar um arquivo com o nome CARQUIVO, o correto seria

nHandle := fcreate (cArquivo, FC_NORMAL)

2° Problema
while ( CODCLI >= cCliente .and. CODCLI <= cCliente .and. !eof () )

Seu programa não está entrando neste loop, por exemplo:
Se a sua variável cCliente tiver o número 100 e o seu arquivo estiver posicionado em um registro com qualquer número diferente de 100 o programa não entrará no loop.
Observer também que a condição ( CODCLI >= cCliente .and. CODCLI <= cCliente ) fará com que apenas o registro que for igual ao conteúdo de cCliente o que seria a mesma coisa de fazer ( CODCLI = cCliente).

Desconsiderando a condição de filtragem que eu não sei exetamente o que você quer, acredito que o que você pretende deveria ficar assim:

while !eof()
if ( CODCLI >= cCliente .and. CODCLI <= cCliente )
/* montagem do registro */
.
.
.
Endif
dbskip()
enddo
fclose (nHandle)

Espero que tenha te ajudado.

Até mais.