Ticket #1766 (new defect)

Opened 4 years ago

Last modified 4 years ago

Problema al cargar ozas de Sets con estructura

Reported by: lmperez@… Owned by: vdebuen
Priority: highest Milestone: Mantainance
Component: Kernel Version: 3.2
Severity: normal Keywords:
Cc: cocacola@…

Description

Hola TOL, he visto un problema con los archivos ozas que no estoy muy seguro de porqué sucede.

Yo creo un Set como el resultado de una query al que le paso una estructura, y lo guardo con Ois.Store(Set,Ruta) , todo ok hasta aquí.
Sin embargo, si quiero cargar ese oza con Ois.Load(Ruta)[1] desde otro tol distinto, ocurre un problema, y es que tol me crea variables globales con los nombres de los campos de la estructura, y éstas variables valen lo que vale el primer registro de mi query. Os adjunto un ejemplo con una query de clasificación de columnas, contactad conmigo y os paso los datos de conexión si queréis, aunque podéis probarlo desde cualquier tabla que tengáis, el archivo es el "Error como Resultado de una Query.txt"

Como contradicción, si creo el Set a mano dándole estructura a los campos, la lectura funciona correctamente y no me crea variables globales que tomen los valores del primer registro del Set. Entiendo que esto no es consistente con lo anterior, ¿qué diferencia hay entre estructurar un Set de datos y crear un Set a partir de una query y darle estructura?. Os paso un ejemplo en el archivo "OK como Resultado de un Set con estructura.txt"

He visto que un método para resolverlo es forzar en la carga a que el contenido del set sea de ámbito local, así: {Ois.Load(Ruta)[1]}

¿Porqué sucede esto? me parece peligroso, ¿deberíamos cargar todos los Ois.Load entre llaves?

Mi tol es un 3.2 b019

Un saludo y gracias de antemano

Attachments

OK como Resultado de un Set con estructura.txt (4.9 kB) - added by lmperez@… 4 years ago.
Error como Resultado de una Query.txt (2.5 kB) - added by lmperez@… 4 years ago.

Change History

Changed 4 years ago by lmperez@…

Changed 4 years ago by lmperez@…

Changed 4 years ago by vdebuen

Al margen de que pueda haber algún error en la carga de OIS, la recomendación general es no usar

 Set aux = Ois.Load(Ruta)[1]

sino

 Set aux = { Include(Ruta) }

Sólo se debe cargar en el ámbito global si realmente contiene variables globales de la sesión original que queramos que vuelvan a ser globales en la nueva sesión y que sepamos que no existen ni van a existir.

Si no se va acceder por su nombre TOL a ningún objeto cargado no tiene sentido cargarlo en global.

Note: See TracTickets for help on using tickets.