De adt a dbf SOLUCIONADO

De adt a dbf SOLUCIONADO

Postby D.Fernandez » Fri Nov 01, 2024 8: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 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
D.Fernandez
 
Posts: 472
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay

Re: De adt a dbf SOLUCIONADO

Postby Armando » Sat Nov 02, 2024 8: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
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: De adt a dbf SOLUCIONADO

Postby carlos vargas » Sat Nov 02, 2024 11:22 pm

Encontre el codigo..
Code: Select all  Expand view  RUN

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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: De adt a dbf SOLUCIONADO

Postby D.Fernandez » Thu Nov 14, 2024 4: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 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
D.Fernandez
 
Posts: 472
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay

Re: De adt a dbf SOLUCIONADO

Postby carlos vargas » Sat Nov 16, 2024 6: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: Select all  Expand view  RUN

...
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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: De adt a dbf SOLUCIONADO

Postby D.Fernandez » Sat Nov 16, 2024 11:35 pm

Hola Carlos, aqui lo muestro.

Gracias...
https://imgur.com/h0YbsZk
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
D.Fernandez
 
Posts: 472
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 45 guests