RE:copiar data de foxpro a clarion
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