Página 1 de 1
É possível criar txt que tenha linha com + de 500 caracteres
Enviado: 05 Out 2012 22:48
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
É possível criar txt que tenha linha com + de 500 caracteres
Enviado: 06 Out 2012 00:15
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.
É possível criar txt que tenha linha com + de 500 caracteres
Enviado: 06 Out 2012 00:36
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.
É possível criar txt que tenha linha com + de 500 caracteres
Enviado: 06 Out 2012 00:46
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.
É possível criar txt que tenha linha com + de 500 caracteres
Enviado: 06 Out 2012 02:13
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...