Data Providers - Más conocimientos
|
|
- Adrián Martin Revuelta
- hace 5 años
- Vistas:
Transcripción
1 Data Providers - Más conocimientos Introduciremos nuevos conocimientos sobre el uso de los Data Providers. Para ello propondremos una implementación práctica en nuestra aplicación. Supongamos que la agencia de viajes decide que todos los clientes que han contratado más de 3 excursiones, recibirán una tarjeta especial de tipo Full Services, que les permitirá disfrutar de todos los servicios en forma gratuita. Y en caso de haber contratado 3 o menos excursiones, recibirán la tarjeta de tipo Partial Services. Contamos entonces con la transacción Customer que permite registrar para cada cliente sus datos junto con la lista de excursiones realizadas: Y la transacción ServiceCard que permite definir las tarjetas: Page1
2 Cada tarjeta tiene un identificador que se autonumera, un cliente y hemos definido el atributo ServiceCardType basado en el dominio enumerado Type, que admite solamente los valores Full o Partial. Hemos definido también el web panel WPCards, que simplemente ofrece un botón que disparará el proceso automático de generación y visualización de nuevas tarjetas. Qué deberá suceder al presionar el botón? Para todos aquellos clientes que aún no tengan tarjeta emitida, se les deberá crear una tarjeta del tipo que corresponda, teniendo en cuenta la cantidad de excursiones que han contratado. Propondremos una solución usando un Data Provider que cargue y devuelva la colección de tarjetas a ser generada, y luego recorreremos la colección y grabaremos las tarjetas en la base de datos. Y cómo hacemos esto? En primer lugar, configuramos la transacción ServiceCard como Business Component para grabar las tarjetas haciendo uso del concepto de Business Component. Después, creamos un objeto de tipo Data Provider de nombre DPCards y arrastramos la transacción ServiceCard sobre el source de ese Data Provider. Qué estamos viendo? Una sintaxis idéntica a la que se genera cuando arrastramos un tipo de datos estructurado sobre el source de un Data Provider y con esta práctica vemos que también podemos arrastrar una transacción que ha sido declarada como Business Component. Page2
3 En este caso particular, no hemos definido un SDT en la base de conocimiento, pero la sintaxis nos permite deducir que se cargará una estructura en memoria con ítems de igual nombre y tipo que los atributos de la transacción ServiceCard. Recordemos que estos no son atributos: sino los ítems de la estructura que se cargará en memoria. Bien. Hasta ahora la idea entonces, es que se cargarán en memoria tarjetas. Pero a partir de dónde y con qué condiciones y particularidades? Necesitamos recorrer la tabla CUSTOMER, filtrar los clientes que aún no tienen una tarjeta emitida y para ellos agregar una tarjeta en la colección. La tabla base de un Data Provider, es decir la tabla que navegará, se determina por los atributos que referenciemos del lado derecho de los signos de asignación. Al ítem CustomerId, es claro que le vamos a asignar el atributo CustomerId. Al ítem ServiceCardId no le necesitamos asignar ningún valor específico, porque recordemos que esta estructura fue arrastrada de 1 transacción BC.. y por lo tanto este ítem está basado en el atributo ServiceCardId, que pertenece al dominio Id y su propiedad autonumber está configurada en Yes. Ahora veamos que a ServiceCardType le podemos asignar el valor que retorne una fórmula condicional, es decir que la fórmula devolverá el tipo Full o Partial de acuerdo a la cantidad de excursiones que ha contratado el cliente: Observemos cuales son los atributos que figuran del lado derecho de los signos de asignación. Solamente CustomerId, porque los atributos que están dentro de la fórmula, no se tienen en cuenta para la determinación de esta tabla base sino que determinan la tabla a ser navegada por la fórmula. Page3
4 Así que la tabla navegada por el Data Provider es CUSTOMER. Pero no queremos navegar todos los clientes y para cada uno cargar una tarjeta, sino que queremos recorrer solamente aquellos clientes que aún no tienen tarjeta. Los Data Providers permiten en su sintaxis, que les incluyamos todas las cláusulas permitidas en For each, así que agregaremos esta cláusula Where : De esta forma entonces logramos navegar todos los clientes cuya cantidad de tarjetas es 0, o sea, que no tienen tarjetas. Pero observemos un poco más esta cláusula Where: Dado que el único atributo referenciado está dentro de una fórmula, entonces no participa en la determinación de la tabla base del Data Provider. De haberse evaluado directamente, entonces si hubiera participado. Bien. Observemos el Data Provider, y veamos que podemos simplificarlo un poco más. Cuando un ítem en la estructura de un Data Provider se carga con un atributo de igual nombre, entonces podemos abreviar la declaración de esta forma: Ahora analicemos la salida, el output, del Data Provider: Al haber arrastrado la transacción ServiceCard, automáticamente, la propiedad Output quedó asociada a ella. Y la propiedad Collection? La estructura que estamos cargando no representa una colección. Solamente representa una instancia en memoria, con la estructura de 1 registro de la tabla asociada a la transacción ServiceCard. Page4
5 Sin embargo nosotros necesitamos obtener una colección de tarjetas generadas, entonces configuramos la propiedad Collection con valor True e indicamos un nombre para la colección que devolverá cargada este Data Provider: Volvamos ahora al web panel para invocar al Data Provider. En el evento Enter asociado al botón, declaramos una variable &ServiceCardCollection que GeneXus automáticamente define como una colección de ServiceCard al tener el término Collection en su nombre. El evento Enter entonces queda simplemente así: Event Enter &ServiceCardCollection=DPCards() End Event Vayamos ahora al form del web panel, e insertemos la variable &ServiceCard. Por tratarse de una variable colección, automáticamente GeneXus entiende que debe mostrar el contenido en un grid. Ahora bien, esto alcanza para que las tarjetas devueltas por el Data Provider efectivamente se graben en la tabla SERVICECARD asociada a la transacción ServiceCard? No. Por ahora las tarjetas están cargadas en memoria y hemos mostrado el contenido de la colección. Page5
6 Cuando estudiamos la utilización de transacciones como BC, vimos que para grabar debemos usar el método Save y luego ejecutar el comando Commit. Así que nos está faltando recorrer la colección devuelta por el Data Provider y proceder a grabar cada elemento de la colección como registro en la tabla física. Y posteriormente a la grabación de todas las tarjetas, vamos a declarar el comando Commit. Para recorrer entonces la colección de tarjetas devuelta por el Data Provider, contamos con el comando For elemento in Colección. Esta variable &onecard debe ser definida. Representa a cada elemento que se va iterando de la colección. Vamos a definirla: Ahora volvamos al evento para completar el código que recorre la colección: Event Enter &ServiceCardCollection= DPCards() For &onecard in &ServiceCardCollection &onecard.save() Endfor Commit End Event Ahora sí el desarrollo de lo solicitado está completo. Presionemos F5 para ver el comportamiento. Ejecutamos el web panel. Presionamos el botón. Y vemos en la grilla la lista de tarjetas que se generaron. Page6
7 Vamos ahora a ejecutar la transacción Service Card para verificar que las tarjetas han sido realmente grabadas como registros. Ahora bien. Puede surgirnos la pregunta: Qué sucederá si volvemos a presionar el botón Generate Cards en el web panel? Se volverán a crear las tarjetas para los mismos clientes? No, porque en el Data Provider filtramos que solamente queríamos navegar aquellos clientes sin tarjeta. Vamos a comprobarlo: Presionamos otra vez el botón, y vemos que no se generaron tarjetas esta vez. Para finalizar, vale mencionar que hay otras soluciones para resolver este mismo requerimiento en GeneXus. En esta implementación hemos usado el concepto de Business Component para actualizar la base de datos, aprovechando los beneficios que los mismos nos proveen y hemos combinado su uso con el hecho de cargar previamente una estructura colección en memoria con los datos a grabar. El uso de un Data Provider para esto, es muy sencillo y nos ahorra escribir código explícito. Page7
Introduciremos nuevos conocimientos sobre el uso de los Data Providers.
Introduciremos nuevos conocimientos sobre el uso de los Data Providers. Recordemos que el objetivo de un Data Provider es devolver cargada una estructura de datos en memoria (que puede ser colección o
Más detallesCurso GeneXus - Otro ejemplo de uso de Business components
Curso GeneXus - Otro ejemplo de uso de Business components Vamos a ver a continuación un ejemplo práctico de uso de Business Components. Page1 Comencemos planteando el siguiente escenario: Todo cliente
Más detallesOtro ejemplo de uso de Business Components
Otro ejemplo de uso de Business Components Vamos a ver a continuación un ejemplo práctico de uso de Business Components. Comencemos planteando el siguiente escenario: Page1 Todo cliente de la agencia de
Más detallesCargando los tipos de datos estructurados
Cargando los tipos de datos estructurados En más de una oportunidad, necesitamos almacenar en memoria una lista de elementos que tienen el mismo tipo de información pero distintos valores guardados. Por
Más detallesCargando los tipos de datos compuestos
Cargando los tipos de datos compuestos En más de una oportunidad, necesitamos almacenar en memoria una lista de elementos que tienen el mismo tipo de información pero distintos valores guardados. Por ejemplo,
Más detallesCargando Tipos de Datos Compuestos (SDT) mediante Data Providers
Cargando Tipos de Datos Compuestos (SDT) mediante Data Providers En más de una oportunidad necesitamos almacenar en memoria una lista de elementos. Por ejemplo, la agencia de viajes puede necesitar realizar
Más detallesDos formas de devolver una colección con un Data Provider
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
Más detallesTransacción de 2 niveles usada como Business Component y manejo de errores.
Transacción de 2 niveles usada como Business Component y manejo de errores. Ya hemos visto anteriormente el concepto general de Business Component y su aplicación en una transacción de un solo nivel. Veamos
Más detallesActualización de la Base de Datos - Business Components
Actualización de la Base de Datos - Business Components Hasta el momento hemos visto que las transacciones permiten a los usuarios, ingresar, modificar y eliminar datos, en las tablas de la base de datos
Más detallesData Provider que carga colección con valores fijos (no extraídos de la base de datos)
Data Provider que carga colección con valores fijos (no extraídos de la base de datos) Hasta el momento hemos visto ejemplos de uso de Data Providers, que han accedido siempre a la base de datos para recuperar
Más detallesTipos de datos compuestos
Tipos de datos compuestos Hasta ahora hemos empleado siempre tipos de datos simples. Hemos definido atributos y dominios de tipo Numeric, de tipo Character y también contamos con otros tipos de datos simples
Más detallesTransacción base. A partir de GeneXus X Ev3, se incorpora el concepto de transacción base.
Transacción base A partir de GeneXus X Ev3, se incorpora el concepto de transacción base. Esto brinda la posibilidad de indicar explícitamente el nombre de la transacción cuya tabla física asociada se
Más detallesYa hemos visto anteriormente el concepto general de Business Component y su aplicación en una transacción de un solo nivel.
Ya hemos visto anteriormente el concepto general de Business Component y su aplicación en una transacción de un solo nivel. Veamos ahora qué sucede cuando nos enfrentamos a la declaración de una transacción
Más detallesActualización de la Base de Datos - Business Components
Actualización de la Base de Datos - Business Components Hasta el momento hemos visto que las transacciones permiten a los usuarios, ingresar, modificar y eliminar datos, en las tablas de la base de datos
Más detallesTipos de datos estructurados
Tipos de datos estructurados Hasta ahora hemos empleado siempre tipos de datos simples. Hemos definido atributos y dominios de tipo Numeric, de tipo Character y también contamos con otros tipos de datos
Más detallesIntroducción a Web Panels
Introducción a Web Panels El web panel es el objeto más flexible que provee GeneXus. Como ya habíamos indicado, es básicamente una página web que nos permite resolver variadas funcionalidades, como solicitarle
Más detallesFórmulas Locales. Page1. Video filmado con GeneXus X Evolution 2. Veremos ahora qué es una fórmula local.
Fórmulas Locales Veremos ahora qué es una fórmula local. Una fórmula local es una fórmula que declaramos como instrucción puntual, dentro de determinado código, como ser en el source de un procedimiento,
Más detallesComando For Each simple y For Each anidado para listar info relacionada
Comando For Each simple y For Each anidado para listar info relacionada En otro video hemos visto cómo definir un procedimiento, el cual contenía en su source un único comando For each, que accedía a los
Más detallesScript Data Selectors: reusing definitions
Script Data Selectors: reusing definitions Supongamos que hemos agregado a la transacción Customer el atributo CustomerStatus, para poder representar uno de los tres estados (activo, en espera o cerrado)
Más detallesReglas en transacciones - Más conocimientos
Reglas en transacciones - Más conocimientos En un video anterior hemos visto que en las transacciones, los controles que nos solicitan los usuarios o que debemos validar, se definen en la sección de RULES.
Más detallesHasta el momento hemos visto ejemplos de aplicación de Data Provider que requieren acceder a la base de datos para recuperar información.
Hasta el momento hemos visto ejemplos de aplicación de Data Provider que requieren acceder a la base de datos para recuperar información. Pero también es posible utilizar un Data Provider que devuelva
Más detallesComando for each anidado para listar info agrupada
Comando for each anidado para listar info agrupada Volvamos ahora a la sección Source del procedimiento Una cosa que nos había quedado pendiente es que queríamos que las atracciones salgan ordenadas en
Más detallesActualización de la Base de Datos - For each, delete, new
Actualización de la Base de Datos - For each, delete, new Hasta el momento, para actualizar los datos de la base de datos, hemos empleado las transacciones en sus 2 formas de uso: Ejecutando su pantalla
Más detallesComunicación entre objetos
Comunicación entre objetos En situaciones anteriores nos hemos encontrado con la necesidad de llamar a un objeto, desde otro. Por ejemplo en el evento Enter del web panel EnterPercentage2, estamos llamando
Más detallesCómo listar información relacionada
Cómo listar información relacionada En el video anterior habíamos visto cómo definir un procedimiento que contenía en su Source un único comando For each, que accedía a los datos de una tabla base (y su
Más detallesPoblar de datos las tablas desde la propia transacción
Poblar de datos las tablas desde la propia transacción Cuando creamos una transacción, por defecto GeneXus creará tablas asociadas para almacenar la información que ingresamos a través de su pantalla.
Más detallesAgregando funcionalidad con patrones
Agregando funcionalidad con patrones Los patrones nos permiten potenciar nuestra aplicación, agregando nuevas funcionalidades en forma muy sencilla! Al aplicar un patrón, GeneXus crea por nosotros todos
Más detallesActualización de la Base de Datos - For each, delete, new
Actualización de la Base de Datos - For each, delete, new Hasta el momento, para actualizar los datos de la base de datos, hemos empleado las transacciones en sus 2 formas de uso: Ejecutando su pantalla
Más detallesAhora veremos qué sucede cuando el objeto B debe devolver un valor a quien lo llama, al finalizar su ejecución.
Comunicación entre objetos: cuando el objeto invocado devuelve un valor En el video anterior vimos cómo declarar en un objeto parámetros para permitirle recibir datos de otro objeto y tomar las acciones
Más detallesObjeto Query - Más conocimientos
Objeto Query - Más conocimientos Hemos visto anteriormente las generalidades del objeto Query, los componentes de su estructura y la forma de verlo en ejecución a través del uso del control Query Viewer.
Más detallesComponentes de pantalla (Extended controls)
Componentes de pantalla (Extended controls) Además de los controles comunes que tenemos disponibles en la toolbox, GeneXus nos permite crear nuestros propios controles o usar controles creados por otras
Más detallesComponentes de pantalla (Extended controls)
Componentes de pantalla (Extended controls) Además de los controles comunes que tenemos disponibles en la toolbox GeneXus nos permite crear nuestros propios controles o usar controles creados por otros,
Más detallesCláusula Unique. La cláusula Unique permite mencionar atributos cuyos valores no deben salir duplicados en el resultado de la consulta.
Cláusula Unique En ocasiones necesitamos definir ciertas consultas, que requieren navegar determinada tabla, pero necesitamos que si un mismo atributo tiene almacenado el mismo valor para varios registros,
Más detallesQué son los subtipos?
Qué son los subtipos? Hasta ahora hemos visto que GeneXus establece relaciones entre transacciones -y entre tablas- basándose en los nombres de atributos que encuentra iguales. Por ejemplo, en la transacción
Más detallesIntroducción a procedimientos, listados y comando For each
Introducción a procedimientos, listados y comando For each Pasemos a conocer los objetos de tipo Procedimiento, que podemos definir en una base de conocimiento GeneXus Este tipo de objeto nos permite definir
Más detallesQué son los subtipos?
Qué son los subtipos? Hasta ahora hemos visto que GeneXus establece relaciones entre transacciones -y entre tablas- básandose en los nombres de atributos que encuentra iguales. Por ejemplo, en la transacción
Más detallesIntroducción a Smart Devices
Introducción a Smart Devices Hasta el momento hemos construido todos los requerimientos solicitados por la agencia de viajes en lo relativo a la aplicación web a ser utilizada por los usuarios de la propia
Más detallesIntroducción a Smart Devices
Introducción a Smart Devices Hasta el momento hemos construido todos los requerimientos solicitados por la agencia de viajes en lo relativo a la aplicación web a ser utilizada por los usuarios de la propia
Más detallesExamen "Analista GX X"
Examen "Analista GX X" Sobre las preguntas de múltiple opción: - Hay una sola opción correcta. - Los puntos de cada pregunta aparecen al principio de la pregunta. - Asuma que todas las preguntas están
Más detallesFórmulas Globales. Page1. Video filmado con GeneXus X Evolution 2
Fórmulas Globales Muchas veces necesitamos que la aplicación efectúe un cálculo, que involucra valores de determinados atributos, constantes, y/o funciones. Para estos casos, GeneXus nos provee las Fórmulas
Más detallesUsando las Apis del GAM
Usando las Apis del GAM Recordemos que las APIs son funciones, que en este caso en el que se ha habilitado el GAM en una base de conocimiento, hacen posible la comunicación con la base de datos del GAM,
Más detallesEventos en Smart Devices
Eventos en Smart Devices Tenemos eventos cuyo código se ejecuta en el servidor y eventos cuyo código se ejecuta en el cliente (es decir, en el dispositivo). Queremos abordar ahora el tipo de acciones que
Más detallesBehavior: Caching. Video filmado con GeneXus X Evolution 3
Behavior: Caching En este video veremos cómo habilitar o deshabilitar el caché de los datos navegados en el dispositivo, teniendo en cuenta aplicaciones de arquitectura online. Existen varios escenarios
Más detallesIntroducción a procedimientos y listados. Comando para consultar la base de datos.
Introducción a procedimientos y listados. Comando para consultar la base de datos. Pasemos a conocer los objetos de tipo Procedimiento que podemos definir en una base de conocimiento GeneXus Este tipo
Más detallesIntroducción a procedimientos, listados y comando For each
Introducción a procedimientos, listados y comando For each Pasemos a conocer a los objetos de tipo Procedimiento, que podemos definir en una base de conocimiento GeneXus. Este tipo de objeto nos permite
Más detallesAcceso a bases de datos externas
Acceso a bases de datos externas Muchas veces necesitamos acceder a bases de datos externas desde nuestras aplicaciones GeneXus. Por ejemplo, podemos necesitar cargar datos en tablas de nuestra base de
Más detallesMomentos de disparo de reglas en transacciones
Momentos de disparo de reglas en transacciones Cuando vimos las reglas que podemos escribir en las transacciones, dijimos que no era necesario especificar cuándo debe ejecutarse cada una de ellas, ya que
Más detallesConsulta con salida pivot table
Consulta con salida pivot table Para comenzar recordemos que la base de conocimiento TravelAgency permite gestionar la actividad de una agencia de viajes... y para la misma ya hemos creado la metadata,
Más detallesWeb panel y tabla base
Web panel y tabla base En este video analizaremos en detalle algunas ideas que en videos anteriores apenas hemos sobrevolado. Por ejemplo, a qué se le llama tabla base de un web panel? Todo web panel tiene
Más detallesBase Tables and Navigation
Base Tables and Navigation Por su importancia, repasemos lo que hacen las tablas base y las navegaciones de los objetos GeneXus para Smart Devices. Aquí vemos un ejemplo, donde desde un Panel for Smart
Más detallesDefinición de reglas
Definición de reglas Además de todos los controles automáticos que GeneXus incluye en las aplicaciones que genera, hay ciertos controles específicos que los usuarios desean efectuar. En las transacciones,
Más detallesDefiniendo reglas. En las transacciones, las reglas que deben cumplirse, o los controles que nos solicitan validar, se definen en la sección de Rules.
Definiendo reglas Además de todos los controles automáticos que GeneXus incluye en las aplicaciones que genera, hay ciertos controles específicos que los usuarios nos piden validar. En las transacciones,
Más detallesDiseñando más transacciones
Diseñando más transacciones Pasemos a crear una transacción de países: la llamamos Country Page1 Definimos aquí un atributo identificador de país CountryId Y vemos que Genexus le asignó el dominio Id y
Más detallesDiseñando más transacciones
Diseñando más transacciones Pasemos a crear una transacción de países: la llamamos Country Page1 Definimos aquí un atributo identificador de país CountryId Page2 Y vemos que Genexus le asignó el dominio
Más detallesTipos de datos estructurados SDT
Tipos de datos estructurados SDT 226 SDT: Introducción Lenguajes de programación manejan: Tipos de datos simples (Numeric, Character, etc.) Tipos de datos compuestos. Ejemplo de Tipos de datos compuestos
Más detallesReporting (objeto Query)
Reporting (objeto Query) En muchas ocasiones necesitamos realizar consultas a la base de datos para analizar la información y poder tomar decisiones. Podemos necesitar agrupar la información por uno o
Más detallesBEHAVIOUR : INVOCATION BETWEEN OBJECTS
BEHAVIOUR : INVOCATION BETWEEN OBJECTS En este video nos detendremos en las opciones que tenemos al invocar desde un objeto a otro con interfaz. Veremos que podemos hacer la invocación, especificando en
Más detallesRelaciones entre entidades de la realidad
Page1 Relaciones entre entidades de la realidad En varios ejemplos de nuestra agencia de viajes, encontramos que los actores de la realidad se relacionan entre sí de distintas maneras, por ejemplo cuando
Más detallesAdministrando las bases de conocimiento (GXserver)
Administrando las bases de conocimiento (GXserver) Cuando desarrollamos una aplicación con GeneXus, ya sea en equipo o en forma individual, necesitamos mantener la KB siempre accesible y actualizada. GXserver
Más detallesDiseñando más transacciones
Page1 Diseñando más transacciones Pasemos a crear una transacción de países: la llamamos Country Definimos aquí un atributo identificador de país CountryId Y vemos que Genexus le asignó el dominio Id Page2
Más detallesCreando una aplicación móvil con GeneXus para trabajar con los Materiales del SAP ERP parte 4
Page1 Creando una aplicación móvil con GeneXus para trabajar con los Materiales del SAP ERP parte 4 Ahora sí, si no hubo error, querremos obtener el listado de materiales, por lo que tendremos que invocar
Más detallesCuando el web panel tiene un grid, entonces para determinar tabla base GeneXus observa lo que se indica arriba.
Habíamos visto el caso de Web Panel con atributos sueltos en el form, sin grid. También el de un Web Panel con un grid con atributos y también sin atributos. Y habíamos dejado planteada la pregunta: cuando
Más detallesUso de la API del GAM
Uso de la API del GAM En videos anteriores, vimos como construir una aplicación para una inmobiliaria, con una parte Web y una parte para Smart Devices Y luego vimos como resolver la Seguridad de ambas
Más detallesInvocations Between SD Objects
Invocations Between SD Objects Ahora haremos un compendio de los objetos que se pueden invocar y cómo; y qué opciones de invocación tenemos, como por ejemplo lograr que el objeto llamado se abra con determinado
Más detallesDiseñando la primera transacción
Diseñando la primera transacción Luego de creada la base de conocimiento, el siguiente paso consiste en describir a los objetos de la realidad mediante objetos GeneXus.. Para identificar a los objetos
Más detallesDiseñando la primera transacción
Diseñando la primera transacción Luego de creada la base de conocimiento, el siguiente paso consiste en describir a los objetos de la realidad mediante objetos GeneXus.. Page1 Para identificar a los objetos
Más detallesAhondaremos acerca de este otro uso posible de web panels sin tabla base más adelante.
Si bien los ejemplos que hemos visto hasta el momento de web panels SIN TABLA BASE son de casos en los que necesitamos solicitar datos al usuario, también existen casos de uso de web panels sin tabla base
Más detallesCómo visualizar la información detallada de un material (desde el trabajar con materiales del SAP ERP)
Page1 Cómo visualizar la información detallada de un material (desde el trabajar con materiales del SAP ERP) Para que cuando el usuario haga tap sobre un material: Page2 se invoque a un panel que muestre
Más detallesSupongamos que queremos definir un botón en la pantalla WWCountry, que invoque un listado pdf (objeto procedimiento) previamente definido.
Supongamos que queremos definir un botón en la pantalla WWCountry, que invoque un listado pdf (objeto procedimiento) previamente definido. Para eso nuevamente volvemos a editar la instancia del pattern,
Más detallesConvirtiendo el modelo en una aplicación funcional
Convirtiendo el modelo en una aplicación funcional En videos anteriores hemos modelado el proceso de reserva de pasajes de la Agencia de Viajes mediante un diagrama de procesos de negocios, hemos visto
Más detallesCurso GeneXus - Haciendo crecer la aplicación
Curso GeneXus - Haciendo crecer la aplicación Al mostrarle la aplicación que tenemos hasta el momento a los usuarios de la Agencia de Viajes, nos dan su visto bueno y nos recuerdan que para cada atracción
Más detallesTrabajando con documentos
Trabajando con documentos Continuando con la asociación de objetos GeneXus a las tareas del diagrama de validación de la reserva, seguiremos con las tareas interactivas Add customer information required
Más detallesConsulta con salida Chart (Parte I)
Consulta con salida Chart (Parte I) Ya hemos visto en videos anteriores la creación de consultas con salida Table y Pivot table. Veamos ahora la creación de una consulta con salida Chart, o sea, vista
Más detallesConsulta con salida Table
Consulta con salida Table El concepto de tabla para GXquery, es el general de tabla, es decir: un conjunto de elementos ordenados en filas y columnas. La cantidad de columnas es fija mientras que la cantidad
Más detallesOverview GeneXus - Demo: 3. Se agregan transacciones para registrar Clientes y Productos al sistema de facturación.
Overview GeneXus - Demo: 3. Se agregan transacciones para registrar Clientes y Productos al sistema de facturación. Vamos a comenzar creando una transacción cliente. Y un cliente tiene: un identificador,
Más detallesCómo listar información agrupada
Cómo listar información agrupada En el video anterior hemos visto un listado solicitado por la agencia de viajes, que mostraba todas las Categorías de atracciones turísticas y para cada categoría, la lista
Más detallesTareas multi-instanciadas y mapeo de datos relevantes
Tareas multi-instanciadas y mapeo de datos relevantes En videos previos, hemos asociado las tareas del diagrama de reserva de pasajes de la Agencia de Viajes a objetos GeneXus, convirtiendo el modelo del
Más detallesControles: Múltiples layouts por fila de un grid
Controles: Múltiples layouts por fila de un grid Acabamos de ver el primer punto. Ahora vamos a estudiar el control grid en un aspecto: la posibilidad de variar el diseño de cada fila, para que en cada
Más detallesHasta ahora hemos visto que por cada objeto transacción se crea una tabla por cada nivel, para almacenar sus datos y luego recuperarlos.
Hasta ahora hemos visto que por cada objeto transacción se crea una tabla por cada nivel, para almacenar sus datos y luego recuperarlos. La transacción, en su forma canónica, se utiliza para poder realizar
Más detallesDefinición de procesos de negocios
Definición de procesos de negocios En la agencia de viajes, hay trámites que requieren de que varias tareas se realicen unas a continuación de otras, en un cierto orden, por ejemplo, cuando se desea hacer
Más detallesGUIA PARA EL PAGO DE UTILIDADES
GUIA PARA EL PAGO DE UTILIDADES 1. Ir a la opción de Procesos / Cálculo de Utilidades. 2. En la ventana del Cálculo de Utilidades, se procede a verificar las configuraciones de Utilidades. 3. Al dar click
Más detallesAgregando funcionalidad con patrones
Agregando funcionalidad con patrones Los patrones nos permiten potenciar nuestra aplicación, agregando nuevas funcionalidades en forma muy sencilla. Al aplicar un patrón, GeneXus crea por nosotros todos
Más detallesMomentos de disparo de reglas en transacciones
Momentos de disparo de reglas en transacciones Cuando vimos las reglas que podemos escribir en las transacciones, dijimos que no era necesario especificar cuándo debe ejecutarse cada una de ellas, ya que
Más detallesInicio de un proceso desde un objeto GeneXus, usando la API de Workflow
Inicio de un proceso desde un objeto GeneXus, usando la API de Workflow La agencia de viajes decidió modificar su proceso de reserva de pasajes e incorporar algunas funcionalidades nuevas. En primer lugar,
Más detallesDiseñando más transacciones
Diseñando más transacciones Pasemos a crear una transacción de países. La llamamos Country: Definimos aquí un atributo identificador de país CountryId Y vemos que Genexus le asignó el dominio Id y definimos
Más detallesQue son tipos de datos estructurados creados a partir de transacciones, que conservan su lógica.
Qué es lo que ya sabíamos acerca de los Business Components? Que son tipos de datos estructurados creados a partir de transacciones, que conservan su lógica. Que se utilizan a través de variables que tienen
Más detallesQué son los subtipos?
Page1 Qué son los subtipos? Hasta ahora hemos visto que GeneXus establece relaciones entre transacciones -y entre tablas- basándose en los nombres de atributos que encuentra iguales. Por ejemplo, en la
Más detallesPantallas interactivas: objeto Web Panel (continuación) Agreguemos primeramente una nueva variable al grid, de nombre newtrip, character de 10
Page1 Pantallas interactivas: objeto Web Panel (continuación) Estábamos construyendo nuestro web panel WWAttractionsFromScratch. Habíamos visto cómo condicionar los datos que se mostraban en el grid, cómo
Más detallesBPM (Business Process Management)
BPM (Business Process Management) En la agencia de viajes, hay trámites que requieren de que varias tareas se realicen unas a continuación de otras, en un cierto orden, por ejemplo, cuando se desea hacer
Más detallesPrototipado, instancias e historia de un proceso
Prototipado, instancias e historia de un proceso En los videos anteriores sobre Automatización, utilizamos objetos del tipo transacción, para registrar la reserva de pasajes y crear al pasajero como cliente
Más detallesConceptual Model. Aquí podemos ver los cuatro tipos de pantallas que tenemos disponibles:
Conceptual Model Las aplicaciones para dispositivos inteligentes van a tener que ser nativas, para poder entonces interoperar con las funcionalidades nativas del dispositivo, tanto de software como de
Más detallesTesteando las aplicaciones (GXtest)
Testeando las aplicaciones (GXtest) A medida que vamos haciendo crecer nuestra aplicación para la agencia de viajes, hemos ido agregando funcionalidades y haciendo modificaciones a cosas que habíamos implementado
Más detallesEjecutando la aplicación por primera vez
Ejecutando la aplicación por primera vez Presionamos la tecla de función F5 y se nos presenta el siguiente cuadro de diálogo: Recordemos que al momento de crear nuestra base de conocimiento, ya se nos
Más detallesAdministrando las bases de conocimiento
Administrando las bases de conocimiento A lo largo de este curso, en el cual fuimos desarrollando una aplicación para una agencia de viajes, hemos utilizado GXserver. Lo primero que hicimos en lo que respecta
Más detallesQué son las fórmulas?
Qué son las fórmulas? Muchas veces necesitamos que la aplicación efectúe un cálculo que involucra valores de determinados atributos, constantes, y/o funciones. Para estos casos, GeneXus nos provee las
Más detallesExamen "Analista JUNIOR GX X Ev1"
Examen "Analista JUNIOR GX X Ev1" Sobre las preguntas de múltiple opción: - Hay una sola opción correcta. - Seleccione en la propia hoja del examen la opción que elija. - Los puntos de cada pregunta aparecen
Más detallesEvents. Video filmado con GeneXus X Evolution 3
Events En este video empezaremos a estudiar los eventos que podemos definir a nivel de los objetos Smart Devices, en el contexto de una aplicación online, es decir, que requiere conectividad. Se mencionarán
Más detalles