FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour De adt a dbf SOLUCIONADO
Posts: 555
Joined: Wed Jul 31, 2013 01:14 PM
De adt a dbf SOLUCIONADO
Posted: Fri Nov 01, 2024 08:46 PM

Hola amigos:

Quisiera pasar mis archivos adt a dbf.

Hay alguna manera r谩pida?

Gracias

Dario Fernandez

Los resolv铆 exportando el archivo adt a xls y luego lo pase a dbf.

Saludos

Dario Fernandez

Dario Fernandez

FWH 2501, Harbour, MVS2022 Community, MySql & MariaDB, Dbf/Cdx VSCode.

Maldonado - Uruguay
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: De adt a dbf SOLUCIONADO
Posted: Sat Nov 02, 2024 08:39 PM

Dar铆o:

Y no es posible de DBT a DBF directamente?

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: De adt a dbf SOLUCIONADO
Posted: Sat Nov 02, 2024 11:22 PM
Encontre el codigo..
Code (fw): Select all Collapse
STATIC nServer

/*-------------------------------------------------------------------------------------------------*/

FUNCTION Conectar()
聽 聽LOCAL lConectado 聽:= FALSE
聽 聽LOCAL hArchivoIni := NIL
聽 聽LOCAL cError 聽 聽 聽:= ""
聽 聽LOCAL cServidor 聽 := ""
聽 聽LOCAL nServidor 聽 := 0
聽 聽LOCAL bConectar 聽 := {|| lConectado := AdsConnect60( cServidor, nServidor, "Creditos", "Mulan2013", NIL , @hConexion ) }
聽 聽LOCAL bAbrir 聽 聽 聽:= {|| lConectado := Conectar_AbrirTablas() }

聽 聽hArchivoIni := HB_ReadIni( Lower( ".\CREDITOS.INI" ) )

聽 聽IF HB_IsNil( hArchivoIni )
聽 聽 聽 MsgStop( "No se pudo leer el archivo de configuraci贸n CREDITOS.INI, contacte al desarrollador del programa." )
聽 聽 聽 RETURN lConectado
聽 聽ELSE
聽 聽 聽 TRY
聽 聽 聽 聽 聽nConexion := Val( hArchivoIni[ "DATOS", "Tipo" ] )
聽 聽 聽 CATCH
聽 聽 聽 聽 聽nConexion := 0
聽 聽 聽 END
聽 聽 聽 DO CASE
聽 聽 聽 CASE nConexion==1
聽 聽 聽 聽 聽nServer := nServidor := ADS_LOCAL_SERVER
聽 聽 聽 聽 聽cServidor := hArchivoIni[ "DATOS", "Conexion1" ]
聽 聽 聽 CASE nConexion==2
聽 聽 聽 聽 聽nServer := nServidor := ADS_REMOTE_SERVER
聽 聽 聽 聽 聽cServidor := hArchivoIni[ "DATOS", "Conexion2" ]
聽 聽 聽 CASE nConexion==3
聽 聽 聽 聽 聽nServer := nServidor := ADS_AIS_SERVER
聽 聽 聽 聽 聽cServidor := hArchivoIni[ "DATOS", "Conexion3" ]
聽 聽 聽 OTHERWISE
聽 聽 聽 聽 聽MsgStop( "El archivo de conexi贸n esta corrupto, contacte al desarrollador del programa." )
聽 聽 聽 聽 聽RETURN lConectado
聽 聽 聽 ENDCASE
聽 聽ENDIF

聽 聽IF !Empty( cServidor )
聽 聽 聽 MsgRun( "Conectando con el servidor de datos, espere un momento.", "CREDITOS", bConectar )
聽 聽 聽 IF !lConectado
聽 聽 聽 聽 聽AdsGetLastError( @cError )
聽 聽 聽 聽 聽MsgStop( "No se ha podido realizar la conexi贸n al servidor de datos: " + FINL + cError + FINL + cServidor )
聽 聽 聽 ELSE
聽 聽 聽 聽 聽oSesion:cPC_Servidor := RTrim( cServidor )
聽 聽 聽 聽 聽MsgRun( "Abriendo tablas de datos, espere un momento", "CREDITOS", bAbrir )
聽 聽 聽 ENDIF
聽 聽ELSE
聽 聽 聽 MsgStop( "El archivo de conexi贸n esta corrupto, contacte al desarrollador del programa." )
聽 聽ENDIF

RETURN lConectado

/*-------------------------------------------------------------------------------------------------*/

FUNCTION Conectar_AbrirTablas()
聽 聽LOCAL lTablasAbiertas := TRUE
聽 聽LOCAL oError

聽 聽TRY
聽 聽 聽 Conectar_AbrirTabla( "CONTROL", 聽 聽 聽 聽 聽"CTRL" )
聽 聽 聽 Conectar_AbrirTabla( "USUARIOS", 聽 聽 聽 聽 "USUA" )
聽 聽 聽 Conectar_AbrirTabla( "FERIADOS", 聽 聽 聽 聽 "FERI" )
聽 聽 聽 Conectar_AbrirTabla( "PLAZOS", 聽 聽 聽 聽 聽 "PLAZ" )
聽 聽 聽 Conectar_AbrirTabla( "ZONAS", 聽 聽 聽 聽 聽 聽"ZONA" )
聽 聽 聽 Conectar_AbrirTabla( "CIUDADES", 聽 聽 聽 聽 "CIUD" )
聽 聽 聽 Conectar_AbrirTabla( "GESTORES", 聽 聽 聽 聽 "GEST" )
聽 聽 聽 Conectar_AbrirTabla( "COBRADORES", 聽 聽 聽 "COBR" )
聽 聽 聽 Conectar_AbrirTabla( "RUTAS", 聽 聽 聽 聽 聽 聽"RUTA" )
聽 聽 聽 Conectar_AbrirTabla( "CLIENTES", 聽 聽 聽 聽 "CLIE" )
聽 聽 聽 Conectar_AbrirTabla( "PROGRAMACION", 聽 聽 "PROG" )
聽 聽 聽 Conectar_AbrirTabla( "PROGRAMACION_BAK", "PBAK" )
聽 聽 聽 Conectar_AbrirTabla( "PRESTAMOS", 聽 聽 聽 聽"PRES" )
聽 聽 聽 Conectar_AbrirTabla( "DIFERIDOS", 聽 聽 聽 聽"DIFE" )
聽 聽 聽 Conectar_AbrirTabla( "MOVIMIENTOS", 聽 聽 聽"MOVI" )
聽 聽 聽 Conectar_AbrirTabla( "FLUJOS", 聽 聽 聽 聽 聽 "FLUJ" )
聽 聽 聽 Conectar_AbrirTabla( "MCOBROSXRUTA", 聽 聽 "MCXR" )
聽 聽 聽 Conectar_AbrirTabla( "DCOBROSXRUTA", 聽 聽 "DCXR" )
聽 聽 聽 Conectar_AbrirTabla( "CAJA", 聽 聽 聽 聽 聽 聽 "CAJA" )
聽 聽 聽 Conectar_AbrirTabla( "COBROXDIA", 聽 聽 聽 聽"CXDI" )
聽 聽 聽 Conectar_AbrirTabla( "COBROXDIAC", 聽 聽 聽 "CXDC" )
聽 聽 聽 Conectar_AbrirTabla( "COBROXDIAT", 聽 聽 聽 "CXDT" )

聽 聽 聽 Conectar_ConfigurarTablas()

聽 聽 聽 DBSelectArea( 0 )

聽 聽CATCH oError
聽 聽 聽 lTablasAbiertas := FALSE
聽 聽 聽 ShowError( oError )
聽 聽END

聽 聽//Adt2Dbf()

RETURN lTablasAbiertas

/*-------------------------------------------------------------------------------------------------*/

PROCEDURE Conectar_AbrirTabla( cTabla, cAlias )

聽 聽USE ( cTabla ) NEW ALIAS ( cAlias ) SHARED

聽 聽IF nServer == ADS_AIS_SERVER
聽 聽 聽 AdsCacheRecords( 100 )
聽 聽ENDIF

RETURN

/*-------------------------------------------------------------------------------------------------*/

PROC Adt2Dbf()

聽 聽SELECT CTRL
聽 聽Mig("control")
聽 聽SELECT USUA
聽 聽Mig("usuarios")
聽 聽SELECT FERI
聽 聽Mig("feriados")
聽 聽SELECT PLAZ
聽 聽Mig("plazos")
聽 聽SELECT ZONA
聽 聽Mig("zonas")
聽 聽SELECT CIUD
聽 聽Mig("ciudades")
聽 聽SELECT GEST
聽 聽Mig("gestores")
聽 聽SELECT COBR
聽 聽Mig("cobradores")
聽 聽SELECT RUTA
聽 聽Mig("rutas")
聽 聽SELECT CLIE
聽 聽Mig("clientes")
聽 聽SELECT PROG
聽 聽Mig("programacion")
聽 聽SELECT PBAK
聽 聽Mig("programacion_bak")
聽 聽SELECT PRES
聽 聽Mig("prestamos")
聽 聽SELECT DIFE
聽 聽Mig("diferidos")
聽 聽SELECT MOVI
聽 聽Mig("movimientos")
聽 聽SELECT FLUJ
聽 聽Mig("flujos")
聽 聽SELECT MCXR
聽 聽Mig("mcobrosxruta")
聽 聽SELECT DCXR
聽 聽Mig("dcobrosxruta")
聽 聽SELECT CAJA
聽 聽Mig("caja")
聽 聽SELECT CXDI
聽 聽Mig("cobroxdia")
聽 聽SELECT CXDC
聽 聽Mig("cobroxdiac")
聽 聽SELECT CXDT
聽 聽Mig("cobroxdiat")

聽 聽RddSetDefault( "ads" )

RETURN

/*-------------------------------------------------------------------------------------------------*/

PROC Mig(cTabla)
聽 聽LOCAL cOldAlias := Alias()
聽 聽LOCAL xT,xT1
聽 聽LOCAL aTab
聽 聽LOCAL n,o,i

聽 聽aTab := DBStruct()

聽 聽FOR x:=1 TO Len( aTab )
聽 聽 聽 IF aTab[ x, 2 ]="D"
聽 聽 聽 聽 聽aTab[ x, 3 ]=8
聽 聽 聽 ENDIF
聽 聽NEXT

聽 聽DbCreate( "d:\dbc\" + (cTabla), aTab, "DBFCDX", .T. )

聽 聽USE ( "d:\dbc\" + (cTabla) ) ALIAS TEMP VIA "dbfcdx"

// 聽 SELECT (cAlias)
//
// 聽 n:=1
// 聽 DO WHILE .T.
// 聽 聽 聽IF Empty( OrdName(n) )
// 聽 聽 聽 聽 EXIT
// 聽 聽 聽ENDIF
// 聽 聽 聽TRY
// 聽 聽 聽 聽 TEMP->( OrdCondSet((cAlias)->( OrdFor(n)),,.t.,,,, nil, nil, nil, nil,, nil, .F., .F., .F., .F.))
// 聽 聽 聽 聽 TEMP->( dbGoTop() )
// 聽 聽 聽 聽 TEMP->( ordCreate(,(cAlias)->( OrdName(n) ), (cAlias)->( OrdKey(n) ), &("{||"+(cAlias)->( OrdKey(n) )+"}") ))
// 聽 聽 聽CATCH o
// 聽 聽 聽 聽 SELECT (cAlias)
// 聽 聽 聽 聽 ?cTabla,(cAlias)->( OrdName(n) ), (cAlias)->( ordKey(n) )
// 聽 聽 聽END
// 聽 聽 聽++n
// 聽 ENDDO

聽 聽SELECT ( cOldAlias )

聽 聽WaitOn("Procesando: " + cTabla )

聽 聽i:=0
聽 聽GO TOP
聽 聽DO WHILE !Eof()
聽 聽 聽 TEMP->( DBAppend() )
聽 聽 聽 FOR x:=1 TO FCount()
聽 聽 聽 聽 聽xT := FieldGet( x )
聽 聽 聽 聽 聽TEMP->( FieldPut( x, xT ) )
聽 聽 聽 NEXT
聽 聽 聽 SKIP
聽 聽 聽 IF Mod( ++i, 100 )=0
聽 聽 聽 聽 聽SysRefresh()
聽 聽 聽 ENDIF
聽 聽ENDDO

聽 聽WaitOff()

聽 聽TEMP->( DBCloseArea() )

聽 聽SELECT (cOldAlias)

RETURN
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 555
Joined: Wed Jul 31, 2013 01:14 PM
Re: De adt a dbf SOLUCIONADO
Posted: Thu Nov 14, 2024 04:44 PM

Hola Carlos, Excelente.

Funcion贸, casi todo. Menos una tabla .adt que tiene campos memo.

Igualmente me sirvio, muy bueno.

Gracias, gracias.

Saludos

Ruben Dario Fernandez.

Dario Fernandez

FWH 2501, Harbour, MVS2022 Community, MySql & MariaDB, Dbf/Cdx VSCode.

Maldonado - Uruguay
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: De adt a dbf SOLUCIONADO
Posted: Sat Nov 16, 2024 06:20 PM
Verifica el tipo de esa columna en la tabla adt.
Esto hice para aplicar fix en caso de tipo de dato fecha que es un poco diferente en adt (el ltama帽o era de 4bits en lugar de 8 como en los dbf), has lo mismo, muestra el
Tipo y tama帽o, y corrige...
Code (fw): Select all Collapse
...
aTab := DBStruct()

Fwdbg aTab

聽 聽FOR x:=1 TO Len( aTab )
聽 聽 聽 IF aTab[ x, 2 ]="D"
聽 聽 聽 聽 聽aTab[ x, 3 ]=8
聽 聽 聽 ENDIF
聽 聽NEXT
...
Muestra la lista de la estructura por fa...
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 555
Joined: Wed Jul 31, 2013 01:14 PM
Re: De adt a dbf SOLUCIONADO
Posted: Sat Nov 16, 2024 11:35 PM
Hola Carlos, aqui lo muestro.

Gracias...
https://imgur.com/h0YbsZk
Dario Fernandez

FWH 2501, Harbour, MVS2022 Community, MySql & MariaDB, Dbf/Cdx VSCode.

Maldonado - Uruguay

Continue the discussion