Obs-> Andei usando um programa de um colega que faz essa transferência, mas não funcionou !!!
Josmar
Moderador: Moderadores


Código: Selecionar todos
REQUEST DBFCDX
USE CLIENTES NEW VIA "DBFNTX"
COPY TO arqnovo1 VIA "DBFCDX"
USE arqnovo1 NEW VIA "DBFCDX"
APPEND FROM CLIENTES VIA "DBFNTX"
USE FORNECED NEW VIA "DBFNTX"
COPY TO arqnovo2 VIA "DBFCDX"
USE arqnovo2 NEW VIA "DBFCDX"
APPEND FROM FORNECED VIA "DBFNTX"
CLOSE ALL
RETU
Código: Selecionar todos
/*
DBT2FPT.PRG - Conversor de campo do tipo Memo
Autor : Loren Scott / SuccessWare 90, Inc.
Traduzido: Pablo Cesar - Forum PCTOLEDO
Este eh um exemplo demostrando como converter arquivos do Clipper .DBTs
para o do tipo compativel FoxPro .FPTs utilizando o Clipper 5.2 e RDD DBFCDX.
Compilar: CLIPPER dbt2fpt /n/w
Link : BLINKER FI dbt2fpt LIB dbfcdx,clipper
---------------------------------------------------------------------
*/
#include "RDDSYS.CH"
REQUEST DBFCDX
FUNC DBT2FPT( cOldFile, cNewFile )
LOCAL aFile := {}
// Ter certeza que foram passados os parametros corretos
IF PCOUNT() < 2
?
? "SINTAXE: DBT2FPT <arquivo_original> <arquivo_novo>"
?
? "onde:"
? " <arquivo_original> = Nome do arquivo contendo campo memo a ser convertido"
?
? " <arquivo_novo> = Novo arquivo a ser criado"
?
Return(1)
ENDIF
cOldFile := Upper( AllTrim( cOldFile ))
cNewFile := Upper( AllTrim( cNewFile ))
IF "." $ cOldFile
cOldFile := Left( cOldFile, at( ".", cOldFile )-1 )
ENDIF
IF "." $ cNewFile
cNewFile := Left( cNewFile, at( ".", cNewFile )-1 )
ENDIF
// Mostra mensagem
? "DBT2FPT - Conversor de arquivo Memo"
?
// Verifica disponibilidade do arquivo original
IF !File( cOldFile + ".DBF" )
? "Nao foi encontrado o arquivo " + cOldFile + "!"
?
Return(2)
ENDIF
// Abrindo o arquivo original (usando DBFNTX)
USE (cOldFile) VIA "DBFNTX"
// Abrindo RDD DBFCDX para criacao do novo dbf+fpt
RDDSetDefault("DBFCDX")
// Mostra em tela que o processo ja comecou
? "Convertendo..."
// Agora irah copiar para o novo arquivo
COPY TO (cNewFile) FOR ShowDot()
// Veja, ja foi feito !
?? " Conversao realizado com sucesso !"
?
// Fecha e limpa da memoria tudo antes de sair
CLOSE ALL
// Compara o tamanho dos arquivos
aFile := Directory( cOldFile + ".DBT" )
? PadR( "Arquivo original " + cOldFile + ".DBT Tamanho",41 ) + ": " + Str( aFile[1,2] ) + " bytes"
aFile := Directory( cNewFile + ".FPT" )
? PadR( "Novo arquivo " + cNewFile + ".FPT Tamanho",41 ) + ": " + Str( aFile[1,2] ) + " bytes"
?
Return(0)
FUNC ShowDot()
?? "."
Return (.T.)

Código: Selecionar todos
USE CLIENTES NEW VIA "DBFNTX"
COPY TO arqnovo1 VIA "DBFCDX"
USE arqnovo1 NEW VIA "DBFCDX"
APPEND FROM CLIENTES VIA "DBFNTX"
Código: Selecionar todos
USE CLIENTES NEW VIA "DBFNTX"
COPY STRU TO arqnovo1 VIA "DBFCDX"
USE arqnovo1 NEW VIA "DBFCDX"
APPEND FROM CLIENTES VIA "DBFNTX"

Código: Selecionar todos
REQUEST DBFCDX
USE CLIENTES NEW VIA "DBFCDX"
COPY STRU TO ARQUIVO1 VIA "DBFCDX"
USE ARQUIVO1 NEW VIA "DBFCDX"
APPEND FROM CLIENTES VIA "DBFNTX"



Código: Selecionar todos
procedure main
tOrigem=space(8)
tDestino=space(8)
Request dbfcdx
do while .t.
Clea
@ 08,08 TO 14,35
@ 10,10 say "Origem..:" get tOrigem pict "@!" valid .not. empty(Torigem)
@ 12,10 say "Destino :" get tDestino pict "@!" valid .not. empty(tdestino)
read
if lastkey()=27
close all
retu
Endif
If Tdestino=Torigem
Alert("Mesmo Nome ...")
loop
Endif
SDestino=Alltrim(TDestino)+".dbf"
Sorigem=Alltrim(Torigem)+".dbf"
If .not. file(Sorigem)
Alert("Arq.origem Nao Encontrado")
loop
Endif
If file(Sdestino)
Alert("Arq.destino ja existe")
loop
Endif
Torigem=Alltrim(Torigem)
Tdestino=Alltrim(Tdestino)
*--- copia de estrutura
Use (Torigem) new via "dbfntx"
// a linha abaixo deu erro na compilacao
// Copy Structure to (Tdestino) via "dbfcdx"
// e foi substituída pelas 2 a seguir
Rddsetdefault("dbfcdx")
Copy Structure to (Tdestino)
*------- copia de registros ------
Use (Tdestino) new via "dbfcdx"
Append from (Torigem) via "dbfntx"
Close All
enddo
retu
Código: Selecionar todos
Append from (Torigem) via "dbfntx"
Código: Selecionar todos
Error Dbcmd/1005 Argument error:DBUSEAREA

Eu também tentei usar o parâmetro VIA no comando COPY STRUCTURE, mas não aceitou. Tentei compilar com Clipper 5.2, 5.3 e com [x]Harbour e nenhum deles aceitaram este parâmetro.lugab escreveu:// a linha abaixo deu erro na compilacao
// Copy Structure to (Tdestino) via "dbfcdx"
Código: Selecionar todos
procedure main
tOrigem=space(8)
tDestino=space(8)
Request dbfcdx
do while .t.
Clea
@ 08,08 TO 14,35
@ 10,10 say "Origem..:" get tOrigem pict "@!" valid .not. empty(Torigem)
@ 12,10 say "Destino :" get tDestino pict "@!" valid .not. empty(tdestino)
read
if lastkey()=27
close all
retu
Endif
If Tdestino=Torigem
Alert("Mesmo Nome ...")
loop
Endif
SDestino=Alltrim(TDestino)+".dbf"
Sorigem=Alltrim(Torigem)+".dbf"
If .not. file(Sorigem)
Alert("Arq.origem Nao Encontrado")
loop
Endif
If file(Sdestino)
Alert("Arq.destino ja existe")
loop
Endif
Torigem=Alltrim(Torigem)
Tdestino=Alltrim(Tdestino)
*--- copia de estrutura e registros ---*
Use (Torigem) new via "dbfntx"
Copy to (Tdestino) via "dbfcdx"
Close All
enddo
retu

