anonymous Log in
Search
Recents:
v3.0
java-l
Optimización de character o varchar
08/05/19 20:50

davElsanto

Replies: 6

Muy buen día compañeros.
 
Espero me sepa explicar bien. Primeramente vengo de java puro y en este tiempo he estado usando Genexus por algunos meses. En concreto la versión 15 de Genexus.
 
Necesito crear la siguiente estructura
 
Padre
   Hijo1
   Hijo2
   ...
   HijoN
FinPadre
 
Donde tanto Padre he HijoN tienen sus propiedades.
 
Para lo cual en java usaba las clases String y StringBuilder
 
Donde prácticamente en todos los "Hijos" se construyen en un StringBuilder y después simplemente concatenado con el String "Padre".
 
El problema que tengo al momento es que existen momentos donde el tamaño que declaro a una variable no es el indicado con lo cual este se genera mal la estructura que necesito.
 
Padre
   Hijo1
   Hijo2
   ...
   HijoN (incompleto)
 
Y la estructura no se termina pues ya ocupé el tamaño máximo.
 
Con lo mismo me llamo la atención el tipo de dato Blob sin embargo este es usado en transacciones y web panels (Link). Sin embargo esto debe estar expuesto como un Web Service.

Esperando su ayuda me despido. 
Se agradece cualquier tipo de ayuda.
Muchas Gracias.
 
 
 
Replies

davElsanto

08/05/19 22:05
No importa la relación 1 a N, si no más bien la creación de la extructura.
 
Gracias por la respuesta
 
----- Mensaje original -----

Edgar Salgado

08/05/19 22:52
Yo haría una transacción de dos niveles NiverPadre .................... Primer nivel de Padre PadreId ................... Este atributo debe ser clave en la tabla Resto de los atrubutos del NivelPadre NivelHijo .......... Segundo nivel de padre (hijo) HijoId ........... Este atributo debe ser clave en la tabla Resto de los atrubutos del NivelHijo Esto crea dos tablas una NivelPadre y otra NivelHijo Es resto no entendí mucho que queres concatenar

Google

08/05/19 23:21
Hola, Porque no escribes la sentencia sql de creación De tablas para que podamos decirte como se Resuelve con genexus.. Saludos Enviado desde mi iPhone El 8 may. 2019, a la(s) 18:05, David Santos

davElsanto

09/05/19 14:16
Listo el ejemplo en si sería de la siguiente forma:
 
declaro una variable result tipo character(999999), nombre tipo character(50), edad tipo character(2).
 
dentro de un procedimiento realizo lo siguiente:
 
&result = '<Padre prop="a">' + chr(13)
for each TableName //recorremos los registros de la tabla
   &nombre = trim(nombre)
   &edad = trim(str(edad))
   &result = '<Hijo nombre=' + '"' + &nombre + '"' + ' edad=' + '"' + &edad + '"' + '/>' +chr(13) //acá puedes desbordar la variable
endfor
&result += '</Padre>'
&result = trim(&result)
 
suponiendo existe un solo registro en la tabla el valor sería el siguiente:
 
<Padre prop="a">
   <Hijo nombre='Juan' edad='28' />
</Padre>
 
sin embargo cuando tengo muchos registros el resultado puede ser el siguiente:
 
 
<Padre prop="a">
   <Hijo nombre='Juan' edad='28' />
   <Hijo nombre='pablo' edad='28' />
...
   <Hijo nombre='Pedro' ed
 
Pues ya tomo todos los caracteres asignados.
 
----- Mensaje original -----

Google

09/05/19 14:57
Hola David, Lo que estas necesitando es un SDT Recursivo. Te paso la definicion de uno. Saludos, El jue., 9 may. 2019 a las 10:17, David Santos ()

davElsanto

09/05/19 15:17
Muchas gracias si estaba pensando en un sdt pero no había revisado un ejemplo, pues en el curso de gx15 no se explica muy a fondo.
 
 
----- Mensaje original -----


Back to java-l