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
Gerar um arquivo TXT.
Moderador: Moderadores
-
Maurício Elias
- Usuário Nível 3

- Mensagens: 304
- Registrado em: 12 Mai 2005 08:48
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):
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[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Gerar um arquivo TXT opção DELIMETERS
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.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.
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.
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.

