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)
Arquivo TXT (corrigindo)
Moderador: Moderadores
Gravar Arquivo TXT
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.
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
