RE:Manejo de archivos TXT
Este ejemplo de un proceso que lee un fichero de etiquetas txt de las que no interesa las 6 primeras lineas y si elegimos las lineas 7,8,9,10 que las salvamos a un Clientes.TPS
espero sirva de ejemplo de pasar de txt a tps.
Saludos Joan.
PROGRAM
MAP
CheckError(),LONG
END
SourceName STRING(260)
TargetName STRING(260)
Count ULONG
CALABRIA FILE,DRIVER('ASCII'),NAME(SourceName),PRE(IN)
RECORD RECORD
Line STRING(255)
END
END
Clientes FILE,DRIVER('TOPSPEED'),NAME(TargetName),CREATE,PRE(CLI)
PKClientes KEY(+CLI:ID_Cliente),OPT,NOCASE,PRIMARY
AKNombre KEY(+CLI:Nombre),DUP,OPT,NOCASE
AKCP KEY(+CLI:CP,+CLI:Nombre,+CLI:ID_Cliente),DUP,OPT,NOCASE
RECORD RECORD
ID_Cliente LONG
Nombre STRING(40)
Domicilio STRING(50)
CP STRING(40)
PROVINCIA STRING(40)
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 = 'CALABRIA.TXT'
TargetName = 'Clientes.tps'
OPEN(CALABRIA)
IF CheckError() THEN RETURN.
SET(CALABRIA)
CREATE(Clientes)
IF CheckError() THEN RETURN.
OPEN(Clientes)
IF CheckError() THEN RETURN.
STREAM(CALABRIA)
STREAM(Clientes)
OPEN(Progress)
NEXT(CALABRIA)
Count = 1
LOOP
NEXT(CALABRIA)
IF ErrorCode() = 33 THEN BREAK.
DO AssignRecord
APPEND(Clientes)
IF CheckError() THEN RETURN.
Count += 1
! if Count>200 Then BREAK.
DISPLAY(?Count)
END
FLUSH(CALABRIA)
FLUSH(Clientes)
BUILD(Clientes)
IF CheckError() THEN RETURN.
CLOSE(CALABRIA)
CLOSE(Clientes)
AssignRecord ROUTINE
CLEAR(CLI:Record)
NEXT(CALABRIA)
NEXT(CALABRIA)
NEXT(CALABRIA)
NEXT(CALABRIA)
NEXT(CALABRIA)
NEXT(CALABRIA)
CLI:ID_CLIENTE =Count
NEXT(CALABRIA)
CLI:NOMBRE = CLIP(LEFT(IN:LINE))
NEXT(CALABRIA)
CLI:DOMICILIO = CLIP(LEFT(IN:LINE))
NEXT(CALABRIA)
CLI:CP = CLIP(LEFT(IN:LINE))
NEXT(CALABRIA)
CLI:PROVINCIA = SUB(CLIP(LEFT(IN:LINE)),1,LEN(CLIP(LEFT(IN:LINE)))-4)
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