Clipper/FiveWin - Modificar estructura de tabla

 
Vista:
Imágen de perfil de Alejandro
Val: 4
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Modificar estructura de tabla

Publicado por Alejandro (30 intervenciones) el 11/03/2016 02:17:12
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Tengo error con campos fecha al importar de un .TXT a .DBF.
Me di cuenta que si lo importo como Caracter en lugar de Date y luego modifico el campo a Date queda bien pero no se como programar eso.
Además quiero cambiar el nombre de otro campo para que coincida con otros DBFs y hacer append from

¿Como puedo modificar la estructura de un DBF?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de SuperIndio
Val: 12
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Modificar estructura de tabla

Publicado por SuperIndio (24 intervenciones) el 17/03/2016 17:16:27
Bueno si pondrias un poco de codigo o mas detalles seria mas facil ayudarte
pero desde ya te diria que con usar las funciones DtoC() o CtoD() podes
pasar los tipos de datos entre CARACTER a DATE o viceversa, respecto
a cambiar el nombre de la columna de una tabla


1
2
3
4
5
6
7
8
9
10
11
12
13
USE ( cNameXBase ) EXCLUSIVE
 
aStruct := ( cNameXBase )->(DBSTRUCT())
CLOSE ( cNameXBase )
 
FRENAME( cNameXBase, cTempXBase )
 
AADD( aStruct, { 'NuevoCampo', 'C', 10, 0 } )
 
DBCREATE( cNameXBase, aStruct )
USE ( cNameXBase )
 
APPEND FROM ( cTempXBase )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 4
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Modificar estructura de tabla

Publicado por Alejandro (30 intervenciones) el 18/03/2016 00:48:15
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Gracias por responder. Inspeccione tu código, es para agregar un nuevo campo, yo busco cambiar el nombre de uno existente sin perder los datos. Por ejemplo
UNO.DBF con campos A y B
DOS.DBF con campos A y C

1
2
Use uno.dbf
append from dos.dbf
Solo agrega los registros del campo A y lo que busco es renombrar el campo C a B para hacer append from y adicione los registros de los 2 campos

Mi otro problema es el campo Fecha de tipo Date no se importa correctamente por no tener el formato AAAAMMDD sino DD/MM/AAAA
1
2
Set Date Format To 'DD/MM/AAAA'
Append From Registros.txt Delimited With Tab
Fue lo que intente y no me funciono, pero si el campo Fecha es Character y luego de importar los registros, lo modifico a Date con Foxproln me quedan bien.

Espero haberme aclarado y no confundirlos mas jejeje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 4
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Modificar estructura de tabla

Publicado por Alejandro (30 intervenciones) el 18/03/2016 02:06:10
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Tu código me da una idea pero no se si es correcto o tardado al trabajar con grandes cantidades de registros

Crear una nueva base de datos DOS.TMP con el campo B, aquí se recorre la base de datos para pasar de DOS.DBF a DOS.TMP
Hacer dbeval() para poner lo de C en B , se recorre nuevamente la base de datos
Entonces si hacer el append from de DOS.TMP, nuevamente se recorre la base de datos


Para la fecha algo similar
Creo una nueva base de datos .TMP con campo FechaTmp tipo Date, Se recorre la base de datos para pasar de la original a la temporal
Hacer un dbeval() para convertir la Fecha Character a Date guadandolo en FechaTmp, se recorre la base de datos por segunda vez
Reemplazar la base de datos original con campo Fecha cambiado a tipo date, se recorre la base de datos para pasar del temporal a la original
Hacer otro dbeval() para pasar la FechaTmp a Fecha, se recorre nuevamente la base de datos
Reemplazar la base de datos temporal con la original quitando el campo FechaTmp, se recorre por ultima vez la base de datos
Eliminar la base de datos original y renombrar la temporal a la original
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar