En algunas situaciones, puede ser necesario importar datos desde un archivo JSON a un Nested Resport que se encuentre dentro de un Datawindow en PowerBuilder. Por ejemplo cuando recibimos los datos de una API.
Esta tarea es, a día de hoy, tremendamente complicada, y requiere aplicar algunos trucos y técnicas avanzadas para que funcione correctamente.
En este artículo te muestro una solución completa y funcional que permite importar datos en formato JSON y mostrar el contenido del nested correctamente en todas las páginas del DataWindow, tanto en tiempo de desarrollo (IDE) como en la versión compilada del ejecutable.
Paso a paso de la solución:
-
Crear un DataStore auxiliar.
A este DataStore le asignamermos el mismo DataObject que tenga el Datawindow del Nested Report y se usará para importar temporalmente los datos JSON. -
Obtener la Data Original del Datawindow
Guarda la data actual del objeto para poder restaurarla luego: -
Importar el JSON en el DataStore auxiliar
UtilizaImportJson()
para cargar los datos del JSON. -
Extraer de nuevo la Data
Después de importar el JSON, se obtiene de nuevo la Data del DataWindow que incluye los datos importados: -
Exportar considerando el entorno (IDE o ejecutable)
Al trabajar con sintaxis de objetos, es importante detectar si estás en tiempo de desarrollo o en tiempo de ejecución compilado para manejar correctamente las rutas de las librerías (.pbl
). Si estamos con el IDE usaremos LibraryExport y en la verisón compilada tendremos que crear el archivo componiendo la cabecera de exportación y la sintaxy del datawinwow. -
Combinar sintaxis con la Data e importar objeto
Se usa la nueva sintaxis generada para reemplazar temporalmente el objeto del DataWindow en la librería. Así se logra "inyectar" los datos directamente. -
Importar el JSON en el DataWindow base.
Con el objeto del Nested modificado, ahora importamos los datos al Datawindow principal. -
Usar el truco de
Processing = 5
y la funciónGetChild()
Este paso permite remplazar los argumentos del retrieve que se usan en el Nested Report por sus valores:9. Restaurar la sintaxis original del objeto
Una vez finalizado el proceso, restauramos el objeto original para no dejar la librería alterada.
✨ Mi "PowerServer": Porque las malas prácticas a veces molan. ✨
Y recuerda:
En PowerBuilder, los límites solo están en nuestra imaginación. 🚀
Comentarios
Publicar un comentario