La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Clarion/1174462-copiar-data-de-foxpro-a-clarion.html

copiar data de foxpro a clarion

copiar data de foxpro a clarion

Publicado por RafaelC (4 intervenciones) el 15/01/2010 21:27:06
Para quien me pueda hechar una mano... tengo un sistema administrativo hecho bajo foxpro y quiero llevarme la tabla de inventario a otro sistemas hecho en clarion, tengo la tabla de clarion en blanco se que hay que importar desde clarion la data de foxpro pero como se haria eso, o hay que escribir un programa de clarion que lea la base de datos de fox y la escriba en la de clarion vacia, no se mucho de programacion en este lenguaje asi que agradesco mucho la ayuda que me puedan brindar, un cordial saludo para todo los foristas.

RE:copiar data de foxpro a clarion

Publicado por Juan (22 intervenciones) el 15/01/2010 21:39:50
Que tal, a ver si te sirve esto, lo que se puede hacer es importar la tabla en clarion, abriendo el diccionario de datos en el menu file-> import table, y por medio de odbc, claro que primero hay que crear el odbc de la tabla de fox pro y ya despues formatear los datos en clarion.... eso es lo que hago solo que mis tablas son de mysql...

espero te sirva de guia saludos!!!

RE:copiar data de foxpro a clarion

Publicado por RafaelC (4 intervenciones) el 16/01/2010 09:00:00
Ok Juan muchas gracias por tu ayuda, pero si tengo el clarion instalado tendria que tener el ODBC de foxpro instalado? y como seria lo de formatear los datos en clarion?

RE:copiar data de foxpro a clarion

Publicado por Joan Vilatimo (69 intervenciones) el 16/01/2010 12:07:36
Hola Rafel segun la version de la tabla FOX puede ser mas facil sin necesitar ODBC
esto depende de la version de la tabla FOX que sea.
Pasos para pasar la tabla de FOX a Clrion:

0 sobre una copia de la tabla FOX en cuestión
1 abres el diccionario de la nuava aplicacion de Clarion
2 importas la tabla FOX con FILE / IMPORT TABLE
3 abres el Browse de la tabla con la lupa
4 generas el Project de modificacion de tabla con FILE / CONVERT FILE
5 en TARGET STRUCTURE elijes la tabla del diccionario a la que van a ir a parar los registros lo demas ya esta bien como esta
6 el OK te generara el project siguente que te pongo de ejemplo
como CONVERT.PRJ
con el codigo CONVERT.CLW
cierras todo y abres el proyecto CONVERT.PRJ
pinchas en External Source File en CONVERT.CLW
este codigo seria como el que debes tener dentro del CONVERT.CLW
modificas AssignRecord ROUTINE como te muestro aqui la rutina para adaptar tus tablas de datos en
AssignRecord ROUTINE
Grabas
Compilas
Ejecutas

aparecera un contador que contara los registros de la tabla
al terminar abres con el diccionario la tabla NUEVA y ya deberia de aparecer tal como se ha modificado la tabla.
ya me diras si te funciona bien.

Saludos Joan V
elcodigo lo verias asi autogenerado por el Clarion:
----------------------------------------------------
PROGRAM

MAP
CheckError(),LONG
END

SourceName STRING(250)
TargetName STRING(250)
Count ULONG

SaintStartUP1 FILE,DRIVER('TOPSPEED'),NAME(SourceName),PRE(IN)
RECORD RECORD
cam1 STRING(20)
cam2 STRING(20)
Porcien DECIMAL(5,2)
cam3 STRING(20)
Exento BYTE
cam4 STRING(20)
END
END
SaintStartUP2 FILE,DRIVER('TOPSPEED'),NAME(TargetName),CREATE,PRE(SSU)
RECORD RECORD
cam1 STRING(20)
cam2 STRING(20)
Porcien DECIMAL(5,2)
cam3 STRING(20)
Exento BYTE
cam4 STRING(20)
END
END
PROGRESS WINDOW('Converting File'),AT(,,107,33),FONT('MS Sans Serif',8),GRAY,CENTER,DOUBLE
STRING('Converting Record #:'),AT(4,13,,)
STRING(@n8),AT(74,12,24,12),USE(Count)
END

CODE
SourceName = 'C:\CarpetaSaint\SaintSta.TPS'
TargetName = 'CONV0001'

OPEN(SaintStartUP1)
IF CheckError() THEN RETURN.
SET(SaintStartUP1)
CREATE(SaintStartUP2)
IF CheckError() THEN RETURN.
OPEN(SaintStartUP2)
IF CheckError() THEN RETURN.

STREAM(SaintStartUP1)
STREAM(SaintStartUP2)

OPEN(Progress)

LOOP
NEXT(SaintStartUP1)
IF ErrorCode() = 33 THEN BREAK.
DO AssignRecord
APPEND(SaintStartUP2)
IF CheckError() THEN RETURN.
Count += 1
DISPLAY(?Count)
END

FLUSH(SaintStartUP1)
FLUSH(SaintStartUP2)

BUILD(SaintStartUP2)
IF CheckError() THEN RETURN.
CLOSE(SaintStartUP1)
CLOSE(SaintStartUP2)

COPY(SaintStartUP2,'C:\!9\SaintSta.TPS')
REMOVE(SaintStartUP2)

AssignRecord ROUTINE
CLEAR(SSU:Record)
SSU:CAM1 = IN:CAM1
SSU:CAM2 = IN:CAM2
SSU:PORCIEN = IN:PORCIEN
SSU:CAM3 = IN:CAM3

IF IN:PORCIEN = 0 THEN ! Se testa si %impuesto=0 LINEA NUEVA
SSU:EXENTO = 1 ! Se pone EXENTO a 1 LINEA MODIFICADA
ELSE ! Si %impuesto<>0 LINEA NUEVA
SSU:EXENTO = 0 ! Se pone EXENTO a 0 LINEA NUEVA
END !IF ! Final del IF LINEA NUEVA

SSU:CAM4 = IN:CAM4

CheckError FUNCTION
CODE
IF ERRORCODE() THEN
IF ERRORCODE() = 90 THEN
IF MESSAGE('Error: '& FILEERROR()) THEN
RETURN ERRORCODE()
END
ELSE
IF MESSAGE('Error: '& ERROR()) THEN
RETURN ERRORCODE()
END
END
END
RETURN 0

RE:copiar data de foxpro a clarion

Publicado por RafaelC (4 intervenciones) el 17/01/2010 07:14:38
Gracias Joan voy a probar y te comento, muchisimas gracias por el dato. Saludos

RE:copiar data de foxpro a clarion

Publicado por Daniel R (8 intervenciones) el 31/01/2010 08:25:08
Que tal Rafael, puedes probar con solo importar la tabla de foxpro al diccionario de clarion, y la lees tal cual en tu app, si tienes demasiados indices sobre esa tabla, crea una tabla igual a la de foxpro en tu diccionario, y todos los indices de la tabla foxpro, los pones como llaves en tu tabla .tps, luego, creas un proceso con take record e igualas campo por campo y listo, tienes tu tabla .tps con todos las llaves,

tablafox.campo1=tablatps.campo1
add()
espero te sea de utilidad slds
Daniel

RE:copiar data de foxpro a clarion

Publicado por RafaelC (4 intervenciones) el 17/02/2010 05:42:29
Estimado Joan probe tu solucion y funciona de maravilla, no habia tenido chance hasta ahora me importo todo como yo lo queria, me imagino que esto se puede aplicar a otros tipos de tablas, bueno pana de verdad muy agradecido por tu aporte, un muy cordial saludo.

Y muchas gracias para los foristas que pudieron aportar una solucion.