Rotina exemplo p/Criar arquivo.TXT

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Bom dia,

Gostaria de uma ajuda dos amigos se possível!

tenho um arquivo de rolagem chamado NFE.DBF c/um campo apenas, chamado de CAMPO1 - (tipo Caracter - tamanho= 250)

Gostaria de criar um arquivo.TXT deste arquivo NFE.DBF numa rotina avulsa.

Alguém poderia me auxiliar? mas tinha que ser um exemplo meio completo porque nunca fiz na unha uma rotina assim para criar um arquivo.txt

Grato a todos

Altemir
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por gvc »

Código: Selecionar todos

set alternate to arq_nfe
set alternate on

nfe->(dbgotop())
while !nfe->(eof())
   ?? nfe->campo1
   ?
   nfe->(dbskip())
end

set alternate off
set alternate to
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Obrigado GVC.... vou testar!
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Olá GVC,
Antes de tudo, mais uma vez gostaria de agradecer.
Mas como não manjo muito bem para fazer na unha,
se fosse possível complementar este exemplo?
mesmo que neste exemplo dado já é o óbvio pra ti, mas pra mim ainda não é.

grato

Altemir
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por gvc »

Acho que vc deveria explicar melhor o que esta querendo fazer.
O bloco que foi colocado acima cria o arquivo e manda os dados para o arquivo.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por ANDRIL »

Como GVC postou, esta é a maneira detalhada de se criar o arquivo em questão.
Como seu arquivo só tem um unico campo, nem tem sentido tudo isso basta
usar

Código: Selecionar todos

use SEUDBF
COPY TO seutxt.txt SDF
Crie funcoes quando precisa extrair partes especificas de dentro do texto, ou alterar as ordens dos campos nos relatorios em relacao ao arquivo DBF, ou seja, algo que realmente nao possa ser feito com um comando NATIVO.

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Prezado GVC,

Voce entendeu exatamente o que eu quero fazer com o seu exemplo.
Eu criei uma rotina avulsa exatamente com seu exemplo, sem tirar nem por
mas parece que não criou o .TXT mas deve ter sido algum erro meu e vou rever
o teste que fiz e tão logo vou responder aqui.
Mais uma vez muito obrigado pela dedicação com que está me ajudando c/esse exemplo.

E também quero agradecer ao Andril pela dica e que também irei testar.

Um grande abraço a todos

Altemir
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Bom dia, GVC e Andril...

No teste do GVC ele chega a criar o arquivo.TXT, mas cria vazio porque dá um erro:

"VARIAVEL/FUNÇÃO: NFE"
"ALIAS INDEFINIDO" --> O ALIAS (arquivo) especificado não está associado a nenhuma área de trabalho ativa!

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

No teste do Andril o arquivo.TXT criou, mas termina com um caracter tipo um quadradinho.
se fosse possível saber como ele cria esse arquivo sem esse quadradinho, ficaria beleza.

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

termino saudando a boa vontade dos amigos GVC e Andril em me ajudar.

dando certo qualquer um desses testes, vou querer abusar mais um pouquinho pra incrementar esse teste na minha rotina avulsa que preciso fazer.

Um abraço a todos

Altemir
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por gvc »

Código: Selecionar todos

***
***
***

cls

use nfe

set deleted on
set default to

set printer to c:\nfe.txt
set device to print

_linha := 0

nfe->(dbgotop())
while !nfe->(eof())
   @ _linha++,00 say nfe->campo1
   nfe->(dbskip())
end

@ _linha++,00 say ''

set device to screen
set printer to

return
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Ao GVC!

Simplesmente ficou perfeito!

ESte fórum está de parabéns por ter usuários como o GVC e o Andril

Vou tentar adequar esse exemplo à minha rotina final, que certamente terei alguma dificuldade, mas vou me aproveitar mais uma vez da boa vontade dos amigos.

Um abraço a todos

Altemir
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Bom dia aos amigos do Forum e agradecer principalmente ao GVC e ao Andril
que me auxiliaram c/seus exemplos.
O exemplo final onde gera o TXT sem aquele caracter na ultima linha que o GVC deu ficou
exatamente como eu precisava.
Tentei colocar este exemplo na minha rotina, mas infelizmente não consegui.
Gostaria de saber se eu poderia enviar a minha rotina para os amigos darem uma olhada
e ver se conseguem colocar este exemplo dentro dela? Criei os fontes e o executável bem simplificado
onde explico como eu gostaria que ficasse.
se alguém quiser me dar mais uma ajuda final, eu ficaria muito grato.

meu email: altemir.costa@ig.com.br
Nota de Moderação:
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: (de acordo a sua ultima citação) 
 
Enviar por email, resolver através de meios privados são práticas não aceitas aqui no fórum. Desestimulamos este tipo de procedimento, já que o objetivo do fórum é para servir como fonte centralizadora de informações, onde os usuários possam compartilhar de forma pública e não exclusiva. Favor ler a Regra Geral do Fórum (itens 10,11,12 e 13).
Obrigado a todos e a esse forum!

Altemir
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por gvc »

Pode mandar.
gvcortez@uol.com.br
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por gvc »

[altemir]
Achei melhor postar a solução aqui para ajudar outros colegas que possam precisar do exemplo.

Código: Selecionar todos

cls

set delete    on
set date      british
set epoch     to 1920

select 2 
use nfe index nfe1 // str(nota, 6) + seq

select 1
use nnfe index nnfe1 // str(nota, 6)

_nf := 0

while .T.
   
   @ 05,05 say 'N.F.' get _nf picture '999999' valid !empty(_nf)
   read
   
   if lastkey() = 27
      exit
   end
   
   x_nf := str(_nf, 6)
   
   if !nnfe->(dbseek(x_nf))
      alert('N.F. nao encontrada!!!')
      loop
   end
   
   if !nfe->(dbseek(x_nf))
      alert('Dados da N.F. nao encontrada!!!')
      loop
   end
  
   setprc(0, 0)
   
   xarq := 'nf' + strzero(_nf, 6) + '.txt'
   
   set printer to (xarq)
   set device to print
   
   _linha := 0

   @ _linha++,00 say nnfe->nota
   
   while !nfe->(eof()) .and. nfe->nota = _nf
      @ _linha++,00 say alltrim(nfe->campo1)
      nfe->(dbskip())
   end

   @ _linha++,00 say ''

   set device to screen
   set printer to
   
end

dbcloseall()

return
Espero ter ajudado. Boa sorte.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Altemir
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 29 Jun 2010 19:34
Localização: Porto Alegre-RS

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por Altemir »

Valeu GVC, está perfeito.

Quero mais uma vez te agradecer pela dedicação e empenho em ajudar.

Estou testando esta rotina, mas vi que ele está criando na primeira linha o nº da nota, e nesse caso não poderia ter esse nº de nota na 1ª linha.

Caso ainda queira dar mais uma mãozinha ...

Dentro do possível, se desse pra teclar tipo um <F8> e ver quais são as notas do arquivo que faltam gerar o TXT, ai fecharia c/chave de ouro.

Grato e um abraço

Altemir
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Rotina exemplo p/Criar arquivo.TXT

Mensagem por gvc »

Para não imprimir o número da NF vc só precisa apagar a linha 45.

Eu não conheço direito a estrutura do arquivo NNFE, mas se vc puder mudar a estrutura do mesmo para conter um campo para indicar que o arquivo texto correspondente já foi montado, seria a forma de controlar isso.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Responder