Clarion - Borrado Real de registros físicos TPS

 
Vista:
sin imagen de perfil

Borrado Real de registros físicos TPS

Publicado por JAVIER (11 intervenciones) el 19/03/2015 16:03:02
Hola,
me está pasando una cosa muy curiosa con un único fichero .TPS. Por lo visto es un problema que arrastramos desde hace tiempo, aunque yo lo he descubierto hace poco.

Pasa sobre un único fichero .TPS definido en el Diccionario igual que otros ficheros que tienen muchísimo más mantenimiento que éste en los que no pasa.

El problema es que cuando se realiza el Borrado de un Registro, desde un Form, realizado mediante código Clarion, no forzado por programación mediante un DELETE(..), si no con el valor ThisWindow.Request = DeleteRecord es como si se realizara un Borrado Lógico en lugar de un Borrado Físico. El caso, es que después del borrado el registro ya no aparece en el .TPS ni en la ListBox en la que se visualizaba dentro de nuestra aplicación.

Sin embargo, y es como hemos detectado el problema, si posteriormente volvemos a intentar Incluir un nuevo registro con la misma Clave Única que el borrado, Clarion devuelve un error de "Clave Duplicada".

Lo más curioso, que buscando el registro con la clave a través de un Get, devuelve un ErrorCode() de "Registro no encontrado", pero cuando posteriormente se hace el ADD() para incluirlo, vuelve a indicar "Clave Duplicada", pero ¡¡si no lo había encontrado!!.

Con el Profiling así es como se ve:

GETfilekey(C:\Gesitwin\Files\ACCESOS.TPS,ACS:ACCESOS[0] 1) Error: Registro no encontrado Time Taken: 0.00 secs
ACS:EMPRESA : '01'
ACS:USUARIO : 'NBELLVER'
ACS:PROGRAMA : 'Gestión de transport'
ACS:MODULO : 'RSG00101'
ACS:SECUENCIA : 402
ACS:ACCESO : 'S'
...
ADD(C:\Gesitwin\Files\ACCESOS.TPS 1) Error: Se ha creado una clave duplicada Time Taken: 0.00 secs
ACS:EMPRESA : '01'
ACS:USUARIO : 'NBELLVER'
ACS:PROGRAMA : 'Gestión de transport'
ACS:MODULO : 'RSG00101'
ACS:SECUENCIA : 402
ACS:ACCESO : 'S'
ACS:INCLUIR : 'S'
...

La Clave Única es ACS:USUARIO + ACS:EMPRESA + ACS:PROGRAMA + ACS:SECUENCIA.

De momento la única forma que he encontrado de que los registros borrados sean borrados realmente y dejen de dar por saco es pasándole el TPSFIX al fichero .TPS. Después sí, ya me permite Incluir registros con Claves de registros anteriormente borradas.

Este problema pasa con todos y cada uno de los registros que se borran y sólo en este file.
¿Alguien sabe qué podría hacerse para que cada vez que clarion hace el borrado de un registro con valor "ThisWindow.Request = DeleteRecord" se borre "BIEN" el registro y permita de nuevo la misma clave?
O como "Solución Alternativa", ¿Existe algo equivalente al TPSFIX que pueda ser llamado desde el programa en Clarion en de forma oculta para el usuario tras cada borrado sin que tenga que intervenir éste ni ningún tipo de asistencia técnica?
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 ricardo  pardo
Val: 78
Bronce
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Borrado Real de registros físicos TPS

Publicado por ricardo pardo (214 intervenciones) el 22/03/2015 01:41:54
Hola podrias usar el comando PACK

PACK (remove deleted records)

y tambien revisa en el DCT

los parametros de tabla
Reclaim Deleted Records
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

Borrado Real de registros físicos TPS

Publicado por JAVIER (11 intervenciones) el 23/03/2015 15:16:10
Gracias, parecía buena idea, pero no han funcionado. Lo del PACK parece que no hace nada, lo hace en centésimas de segundo y ni siquiera devuelve Error. Después el file sigue igual, con el mismo problema, sin permitir "claves duplicadas" que ni siquiera existen.
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