Clarion - Crear in Procedimiento con una tabla *.tps

 
Vista:
sin imagen de perfil

Crear in Procedimiento con una tabla *.tps

Publicado por Jose Reyes (3 intervenciones) el 12/11/2009 02:20:51
Buenas amigos, soy realmente nuevo con el Clarion 6(Nunca habia trabajado en el hasta hoy, pero no se preocupen, aprendo rapido)

Les planteo mi situacion, tengo un programa hecho en venezuela llamado Saint StarUp y este viene con las tablas hechas con formato .tps, yo necesito hacer unos cambios en los registros, directamente quiero corregir unos datos de la tabla de productos, pero no un registro sino un lote, por lo que irme de uno en uno seria muy engorroso y tomaria mucho tiempo, por lo que me gustaria hacer un procedimiento que al ejecutarse haga los cambios necesarios en la tabla. Ejemplo:
1- resulta que en el sistema viejo para los productos exentos no los marcaban como exentos, sino que colocaban en %impuesto = 0
2- Yo deseo hacer un procedimiento que busque en la tabla todos lo registros que en %impuesto sea 0 y marque la opcion exento, es decir coloque 1 pues es un campo binario

Es por ese motivo que solicito ayuda de ustedes, atentamente su amigo José Reyes
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

RE:Crear in Procedimiento con una tabla *.tps

Publicado por Joan (69 intervenciones) el 12/11/2009 09:19:33
Hola Jose Reyes
0 sobre una copia de la tabla en cuestión
1 abres clarion un diccionario nuevo
2 importas el fichero con FILE / IMPORT TABLE
3 abres el Browse de la tabla
4 generas el Project de modificacion de tabla FILE / CONVERT FILE
5 en TARGET STRUCTURE elijes la tabla del diccionario 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 como te muestro aqui la rutina
AssignRecord ROUTINE
Grabas
Compilas
Ejecutas

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

Saludos Joan V
----------------------------------------------------
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
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
sin imagen de perfil

RE:Crear in Procedimiento con una tabla *.tps

Publicado por Jose Reyes (3 intervenciones) el 12/11/2009 14:41:41
amigo Joan V, muchas pero muchas gracias, eso era exactamente lo que necesitaba, solo tuve que hacer lo que tu me dijeste y listo, estaba hecho.
Joan disculpa el abuso, pero sabes de algun manual en español para aprender clarion, pues me gustaria conocer esta herramienta, me ha parecido muy generosa, pues yo estoy acostubrado a trabajar en Visual Basic y con VIsual Fox, donde los proyectos son manuales, pero por lo que he visto, sabiendo usar esta herramienta es mucho el tiempo que se puede ahorrar y puedo hacer igual aplicaciones para satisfacer tanto mis necesidades como las de los clientes.
Si tienes algo, te lo agradecere, aunque ya estoy en deuda. Muchas gracias desde Maracaibo, Edo. Zulia, Venezuela
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

RE:Crear in Procedimiento con una tabla *.tps

Publicado por Joan  (69 intervenciones) el 12/11/2009 15:59:35
Hola de nuevo Jose Reyes
dime un email y me pongo en contacto contigo

Saludos Joan Vilatimo
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
sin imagen de perfil

RE:Crear in Procedimiento con una tabla *.tps

Publicado por Jose Reyes (3 intervenciones) el 12/11/2009 16:37:20
Gracias nuevamente Joan, este es mi correo [email protected], estamos a tu orden y mil gracias de antemano
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

RE:Crear in Procedimiento con una tabla *.tps

Publicado por Joan (69 intervenciones) el 12/11/2009 18:16:57
Y te envie un email
como bien sabes en programacion no hay una unica manera de hacer las cosas las aportaciones decada uno son importantes para ver otras formas de hacer as cosas de distintas maneras

Saludos Jose Reyes.
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