Dos formas de devolver una colección con un Data Provider

Documentos relacionados
Cargando los tipos de datos estructurados

Cargando los tipos de datos compuestos

Cargando Tipos de Datos Compuestos (SDT) mediante Data Providers

Tipos de datos estructurados

Tipos de datos compuestos

Data Providers - Más conocimientos

Componentes de pantalla (Extended controls)

Componentes de pantalla (Extended controls)

Fórmulas Locales. Page1. Video filmado con GeneXus X Evolution 2. Veremos ahora qué es una fórmula local.

Introduciremos nuevos conocimientos sobre el uso de los Data Providers.

Hasta el momento hemos visto ejemplos de aplicación de Data Provider que requieren acceder a la base de datos para recuperar información.

Comando for each anidado para listar info agrupada

Diseñando más transacciones

Introducción a procedimientos, listados y comando For each

Diseñando más transacciones

Diseñando más transacciones

Data Provider que carga colección con valores fijos (no extraídos de la base de datos)

Comando For Each simple y For Each anidado para listar info relacionada

Introducción a procedimientos, listados y comando For each

Qué son los subtipos?

Objeto Query - Más conocimientos

Convirtiendo el modelo en una aplicación funcional

Curso GeneXus - Otro ejemplo de uso de Business components

Otro ejemplo de uso de Business Components

Diseñando más transacciones

Transacción base. A partir de GeneXus X Ev3, se incorpora el concepto de transacción base.

Introducción a Smart Devices

Curso GeneXus - Haciendo crecer la aplicación

Introducción a Smart Devices

Comunicación entre objetos

Qué son los subtipos?

Ahora veremos qué sucede cuando el objeto B debe devolver un valor a quien lo llama, al finalizar su ejecución.

Tipos de datos estructurados SDT

Reporting (objeto Query)

Consulta con salida pivot table

Base Tables and Navigation

Tareas multi-instanciadas y mapeo de datos relevantes

Relaciones entre entidades de la realidad

Introducción a Web Panels

Creando una aplicación móvil con GeneXus para trabajar con los Materiales del SAP ERP parte 4

Relaciones entre entidades de la realidad

Cómo listar información relacionada

Agregando funcionalidad con patrones

Actualización de la Base de Datos - For each, delete, new

Orders Searchs Conditions

Actualización de la Base de Datos - For each, delete, new

Cómo visualizar la información detallada de un material (desde el trabajar con materiales del SAP ERP)

Actualización de la Base de Datos - Business Components

Si abrimos una transacción cualquiera en ejecución, por ejemplo Category, vemos en la pantalla los botones de navegación antes de los atributos, y

Diseñando la primera transacción

Introducción a procedimientos y listados. Comando para consultar la base de datos.

Consulta con salida Table

Para eso abrimos el ambiente de desarrollo de Genexus.

Actualización de la Base de Datos - Business Components

Cuando el web panel tiene un grid, entonces para determinar tabla base GeneXus observa lo que se indica arriba.

Formularios dinámicos

Transacción de 2 niveles usada como Business Component y manejo de errores.

Demo: empezando a desarrollar la aplicación en su parte web

Definición de procesos de negocios

Diseñando la primera transacción

Trabajando con documentos

BPM (Business Process Management)

Eventos en Smart Devices

Script Data Selectors: reusing definitions

Una vez completo este paso, es necesario verificar que haya paquetes disponibles para la cantidad de personas que deseen realizar el viaje.

Cómo listar información agrupada

Y cuando en la transacción Flight nombramos a CountryName, sabemos que será inferido a través del atributo AirporId.

Orders, Searches, and Conditions

Cómo enviar un mail automático y ejecución del acceso a la API programado previamente

Definición de reglas

Hasta ahora hemos visto que por cada objeto transacción se crea una tabla por cada nivel, para almacenar sus datos y luego recuperarlos.

El editor de formularios web es el Abstract Layout, en el cual entraremos en detalle en unos momentos.

Controles: Múltiples layouts por fila de un grid

Fórmulas Globales. Page1. Video filmado con GeneXus X Evolution 2

Usando las Apis del GAM

Qué son las fórmulas?

De la determinación de las tablas base, surgen los tres casos de For eachs anidados que ya hemos estudiado antes, y que aquí queremos conceptualizar.

Qué son los subtipos?

Definiendo reglas. En las transacciones, las reglas que deben cumplirse, o los controles que nos solicitan validar, se definen en la sección de Rules.

El modelo conceptual de las aplicaciones móviles

Introducción GAM. La gran mayoría de las aplicaciones modernas necesitan algún esquema de login, autenticación y autorización.

Creando una aplicación móvil con GeneXus para trabajar con los Materiales del SAP ERP parte 2

El listado de navegación nos informa claramente que la tabla base es ATTRACTION, que la recorrida será ordenada por la clave primaria de dicha tabla:

Poblar de datos las tablas desde la propia transacción

Overview GeneXus - Demo: 2.Cómo obtener el ejecutable de la KB y declaración de algunas reglas del negocio.

Para el siguiente trabajo utilizamos IBM Data Studio Version Un ABM completo de una tabla. 1.a) Alta de una sucursal.

Overview GeneXus - Demo: 3. Se agregan transacciones para registrar Clientes y Productos al sistema de facturación.

Demo: empezando a desarrollar la aplicación en su parte móvil

Overview final. Vimos que a partir de los objetos de tipo Transacción definidos en la base de conocimiento se construía el modelo de datos

Modificación de dato relevante, evento timer y calendarios

Identificando atributos disponibles

Demo: Starting to Develop the Web Application

Consulta con salida Chart (Parte I)

Objeto Data Provider

Acceso a bases de datos externas

Transcripción:

Dos formas de devolver una colección con un Data Provider Los Data Provider son objetos versátiles que con un lenguaje declarativo nos facilitan la carga de estructuras, tanto ítems simples como colecciones de ítems. Como vimos en un video anterior, cuando queríamos que un Data Provider nos cargue una colección de elementos, lo que hacíamos era definir una variable basada en un tipo de datos estructurado que sea colección y luego arrastrar esa variable al source del data provider, Page1

con lo cual el output del mismo se configuraba automáticamente para cargar ese tipo de datos. En este video vamos a concentrarnos en la posibilidad que dispone un Data Provider para devolver una colección de elementos cuando el dato estructurado no es una colección. La agencia de viajes nos había solicitado un reporte que muestre un ranking de los países con más atracciones turísticas. Nuestro ejemplo implica crear una colección de países, donde cada elemento es de un tipo de dato estructurado que almacena los datos de un solo país. Para comenzar vamos a crear un tipo de datos estructurado de nombre SDTCountry, con un ítem Id, otro Name y otro Quantity en el que almacenaremos la cantidad de atracciones turísticas del país. A este tipo de datos no lo marcamos como colección, con lo cual será capaz de almacenar los datos de un único país. Luego, en el objeto procedimiento que implementa el ranking, definimos una variable CountriesCollection del tipo SDTCountry y la marcamos como colección. Page2

Para obtener los datos de todos los países para confeccionar el ranking, creamos un objeto data provider de nombre DataProviderCountries. Luego arrastramos el SDTCountry al source del data provider. Vemos que se creó automáticamente un código que refleja la estructura del SDTCountry. Sin embargo, no encontramos ningún grupo repetitivo, ya que no hay un grupo definido por llaves que esté dentro de otro, por lo que esta definición escrita en el source sólo será capaz de cargar los datos de un país. Pero nosotros queremos cargar los datos de todos los países Afortunadamente el Data Provider nos resuelve este problema, construyendo la colección por nosotros. Para eso vamos a las propiedades del Data Provider y en el grupo Output, ponemos la propiedad Collection en el valor True. Page3

Observemos que cuando arrastramos el SDTCountry al source del data provider, la propiedad Output se configuró automáticamente con el nombre del SDT, que sabemos que almacena un único elemento. Pero al asignar la propiedad Collection en True, le estamos indicando al Data Provider que queremos que nos devuelva una colección de elementos del tipo del SDTCountry. También observamos que apareció la propiedad Collection Name y que se asignó automáticamente un nombre para la colección. Para completar la definición, vamos a escribir de dónde queremos que el Data Provider obtenga los datos, que en nuestro caso es de la transacción de países. Así que asignarmos a la derecha de las asignaciones los atributos CountryId para el Id y CountryName para el Name. Luego a Quantity le asignamos una fórmula Count que contará la cantidad de atracciones del país. Nuestro data provider queda así pronto para ser ejecutado. Si damos botón derecho sobre la solapa del nombre del Data Provider y elegimos View Navigation, vemos que GeneXus especifica al objeto y nos muestra el reporte de navegación. En el mismo observamos que el mismo recorrerá la tabla Country para obtener los datos de los países, que es lo que pretendíamos. Volvamos al procedimiento CountriesRanking y definamos lo necesario para cargar el contenido de la variable colección CountriesCollection. Page4

En primer lugar agregamos la variable &CountriesCollection al source y le asignamos el DataProviderCountries. Al invocarse el data provider, el mismo recorrerá todos los registros de la tabla Country y devolverá cargada una colección donde cada elemento es del tipo SDTCountry. Esta colección quedará almacenada en la variable colección &CountriesCollection, que definimos también como colección de elementos del mismo tipo. Observemos que la sintaxis con que se invoca al data provider no cambia, sólo que la variable que recibe el resultado del data provider en vez de estar basada en un SDT que ya es colección, está basada en un SDT simple, y a la variable la hacemos colección marcando el check box. De aquí en más el ejemplo es idéntico al del video Loading Compound DataTypes Using DataProviders. Resumiendo, vemos que tenemos dos formas de que un Data Provider nos devuelva una colección de elementos: definiendo un tipo de datos estructurado del tipo colección y al arrastrarlo al source del data provider automáticamente se configura el mismo para retornar una colección de ese tipo, o bien definiendo un tipo de datos estructurado que no sea una colección y luego mediante las propiedades del data provider podemos configurar que el mismo data provider nos arme la colección. Page5

En siguientes videos veremos otros usos del objeto Data Provider. Page6