Página 1 de 1
Gerar um arquivo TXT.
Enviado: 19 Jun 2007 16:15
por Maurício Elias
Olá pessoal.
Alguém saberia me dizer como consigo gerar um arquivo TXT a partir de um DBF qualquer, sem ser pelo SDF ?
Acontece que, o SDF, gera cada linha do TXT com os espaços em branco a direita, e eu preciso que o arquivo fique sem esses espaços, o mais enxuto possível.
Ouví dizer q dá prá fazer usando as fçs de baixo nível (FCreate, FOpen, ...) mas eu ñ sei como...
Abraços.
_______
Maurício
Enviado: 19 Jun 2007 18:49
por sygecom
Tche, uma maneira automatica eu não sei....mas se vc fizer uma leitura do DBF e usar o SET PRINTER TO TEXTO.TXT ele vai gerar o TXT da maneira que vc quiser.....
Abraços
Leonardo Machado
Enviado: 19 Jun 2007 19:04
por Maligno
Agora que você falou, me dei conta de que devo ter usado esse tipo de exportação pelo Clipper uma ou no máximo duas vezes na vida.
Além da alternativa que o Leonardo já deu, usando a impressão para um arquivo, usar as funções de baixo nível do Clipper é igualmente simples. Você só precisa criar o arquivo destino e, dentro de um looping, criar uma string para o registro apontado, gravando-a neste arquivo. Ao final, basta fechá-lo. Exemplo (não testei):
Código: Selecionar todos
function Export()
local cStr
local cFile := "c:\teste.txt"
local nHandle
if (nFHandle := FCreate(cFile)) > 0
use origem // se for indexar, abra o índice
while !EoF()
// Formando a string com todos os campos
cStr := ""
for i := 1 to FCount()
cStr += if(i=1, "", ",")
xVar := FieldGet(1)
// A conversão será feita conforme o campo
if ValType(xVar) = "N" ; cStr += LTrim(Str(xVar,18,2))
elseif ValType(xVar) = "D" ; cStr += DtoS(xVar)
elseif ValType(xVar) = "L" ; cStr += if(xVar,"1","0")
elseif ValType(xVar) = "M" ; cStr += "<MEMO>"
end
FWrite(nHandle,cStr+Chr(13)+Chr(10))
next
skip
end
close
else
// Erro na criação do arquivo
end
Gerar um arquivo TXT opção DELIMETERS
Enviado: 20 Jun 2007 08:30
por Pablo César
Maurício Elias escreveu:gerar um arquivo TXT a partir de um DBF qualquer, sem ser pelo SDF ? Acontece que, o SDF, gera cada linha do TXT com os espaços em branco a direita, e eu preciso que o arquivo fique sem esses espaços, o mais enxuto possível.
Só para complementar, Mauricio. Não sei sea sua necessidade é importar os dados para outro DBF novamente, porque o
COPY TO com opção
DELIMITERS você irá gerar o arquivo entre aspas separados por vírgulas e os campos que não são do tipo caracter não são utilizados a vírgulas, isto é mantém o padrão conforme o tipo do campo para posterior IMPORTAÇÃO (podendo ser através do APPEND FROM). A utilização do COPY TO com opção DELIMITERS também cria o arquivo de forma exuta (sem os espaços em brancos), porém com vírgulas quando caracter.