Arquivo TXT (corrigindo)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Singulani
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 13 Ago 2004 12:59

Arquivo TXT (corrigindo)

Mensagem 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)
Adriano
Usuário Nível 1
Usuário Nível 1
Mensagens: 21
Registrado em: 29 Nov 2004 11:04
Localização: Campinas-SP

Gravar Arquivo TXT

Mensagem 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.
Adriano
Responder