É possível criar txt que tenha linha com + de 500 caracteres

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

JADSON C SILVA
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 05 Out 2012 22:32
Localização: JOÃO PESSOA PB

É possível criar txt que tenha linha com + de 500 caracteres

Mensagem por JADSON C SILVA »

Tenho um programador que criou um programa para minha empresa em clipper. Hoje preciso que ele gere um arquivo txt de uma empresa de contabilidade. Ele disse que não consegue e alega que “o arquivo tem muitos campos e no total tem 1789 colunas. Quando uso sdf do clipper para transformar os registros a linguagem do clipper nao suporta um tamanho grande so aceita 255. Ja tentei separar por campos mas tem alguns campos que tem mais 300 de tamanho. Este e o problema que nao consigo transformar em txt os registros”.
Vocês podem nos indicar um modo de fazer esse arquivo txt???
um abraço
agradeço a ajuda
Editado pela última vez por Pablo César em 06 Out 2012 00:06, em um total de 1 vez.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

É possível criar txt que tenha linha com + de 500 caracteres

Mensagem por Pablo César »

Seja bem vindo ao fórum !

Bom respondendo a sua pergunta no título: SIM é possível sim, mas não em Clipper com SDF.
JADSON C SILVA escreveu:Tenho um programador que criou um programa para minha empresa em clipper.
Você quis dizer: Tenho um programador na minha empresa que criou um programa em clipper. rs

Vamos por parte... disse Jack o estripador... rs
Hoje preciso que ele gere um arquivo txt de uma empresa de contabilidade. Ele disse que não consegue e alega que “o arquivo tem muitos campos e no total tem 1789 colunas.
Se ao que se refere o seu programador, sobre 1789 colunas (sendo 1789 campos), pergunto precisa gerar com todos esses campos ?
Quando uso sdf do clipper para transformar os registros a linguagem do clipper nao suporta um tamanho grande so aceita 255. Ja tentei separar por campos mas tem alguns campos que tem mais 300 de tamanho. Este e o problema que nao consigo transformar em txt os registros”.
Teria que fazer testes diretamente com o seu banco de dados. Mas a principio, pode ser feito um aplicativo aparte para gerar este arquivo txt. E terá que ser em Harbour (outra ferramenta de programação em 32 bits). Ou fazer uma tentativa de gerar esse arquivo utilizando funções de baixo nível (FOPEN/FWRITE/FCLOSE) e não o SDF do Clipper.

Sugiro que faça uma cópia que contenha apenas de 2 a 4 registros (por exemplo), compacte o arquivo dbf e anexe a sua próxima mensagem aqui no tópico.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

É possível criar txt que tenha linha com + de 500 caracteres

Mensagem por Jairo Maia »

Olá Jadson,

Se a idéia e gerar um SDF, você pode fazer assim:

Código: Selecionar todos

Function Main()
Local i, cps, registro, prilin := .T.

 Use seu_arquivo

 Set Device To Printer
 Set Printer To "Arquivo.SDF"

 While !Eof()
  registro := ''
  For i = 1 To Fcou()
   cps := Field( i )
   If ValType( &cps. ) = "C"
    registro += &cps.
   ElseIf ValType( &cps. ) = "D"
    registro += DToC( &cps. )
   ElseIf ValType( &cps. ) = "N"
    registro += Str( &cps. )
   ElseIf ValType( &cps. ) = "L"
    registro += If( &cps., ".T.", ".F." )
   Endi
  Next
  If prilin
   prilin := .F.
   @ 0, 0 Say registro
  Else
   @ PRow() + 1, 0 Say registro
  Endi
  Skip
 Endd

 Set Printer To
 Set Device To Screen

Return Nil
Já se você precisa de um TXT com separadores, ou para abrir no Excel, é só dizer que com pequena alteração neste exemplo é possível.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

É possível criar txt que tenha linha com + de 500 caracteres

Mensagem por Eolo »

Sim, é possível, usando FCREATE, FWRITE (funções de baixo nível do Clipper).

Um exemplo rápido, se precisar mais detalhes, avise.

Código: Selecionar todos

arq="c:\texto.txt"
arqh=fcreate(arq,0) // cria um arquivo texto
if !arqh>0 // confere se o arquivo foi criado
  ?"Erro ao criar arquivo txt"
  quit
endi
use meudbf new excl // abre o dbf, seja qual for

txt:=campo1+" "+campo2 // considerando dois campos texto
txt_t:=fwrite(arqh,txt)
if !txt_t=len(txt) // confere se a gravação deu certo
  ?"Erro ao gravar arquivo"
  quit
endi

txt:=dtoc(campo3) // campo DATA, convertido pra texto
txt_t:=fwrite(arqh,txt)
if !txt_t=len(txt)
  ?"Erro ao gravar arquivo"
  quit
endi

* repete pra quantos campos houver, com as conversões que precisar

* quando quiser quebra de linha, inclui o que segue:

txt:=chr(13)+chr(10)
txt_t:=fwrite(arqh,txt)
if !txt_t=len(txt)
  ?"Erro ao gravar arquivo"
  quit
endi

quit

* aqui, se nao deu algum erro durante a gravação, 
* vai estar criado o arquivo c:\texto.txt
* com qualquer tamanho, sem quaisquer restrições
Parece complicado, mas é muito simples. Ah, esquece o SDF.
Com estas funções de baixo nível, vc pode ter linhas com trocentos caracteres, não importando o tamanho do DBF.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

É possível criar txt que tenha linha com + de 500 caracteres

Mensagem por Imatech »

Ola !

Caso tenha afinidade com a linguagem SQL, poderá usar: Database Desktop ( Delphi ), FoxPro ou o DBF Commander; criando assim Scrip Sql para utilizar em qquer outro formato de dados...

Sucesso...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Responder