Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GX ResumenConceptual 2
GX ResumenConceptual 2
Resumen Conceptual
2da. Parte - Procedimientos
Comando For each
GeneXus permite ordenar por el valor de un atributo que está o bien en la tabla que
estamos recorriendo (tabla base) o también en su tabla extendida.
¡Consulta optimizada!
Sintaxis del For each
main code
When none
…
Endfor
For each Anidados + Tabla base diferente + Tablas NO relacionadas =
PRODUCTO CARTESIANO
Country
{
CountryId* 1 - Brasil
CountryName Join PAULO SILVEIRA
THIAGO REIS
}
1 For each Country 2 - Uruguay
Print Country
Country
Corte de control
{
CountryId*
CountryName For each Customer order CountryId
} Print Country 1 - Brasil
PAULO SILVEIRA
For each Customer THIAGO REIS
Print Customer
Customer 4 - Estados Unidos
Endfor ANN SMITH
{
CustomerId*
Endfor
CustomerName
CountryId
CountryName
}
Resumen
“No existe relación entre ambas “Todos los países y sus clientes, “Solo aquellos países que
entidades, mostrar todas las independientemente que tenga tengan clientes”
posibilidades para cada país” clientes o no”
Comunicación entre objetos
Ejemplo: pasaje de parámetros
CustomerList
Customer
{ Parm(in: &CountryId);
CustomerId* Variable
CustomerName For each Customer
CountryId Where CountryId = &CountryId Filtro explícito
CountryName ---------
} Endfor
Ejemplo: pasaje de parámetros
CustomerList
Customer
{ Parm(in: CountryId);
CustomerId* Atributo
CustomerName For each Customer
CountryId Where CountryId = &CountryId Filtro implícito
CountryName ---------
} Endfor
Ejemplo: retorno de un valor
CustomerControl
Customer
( Parm(in: &CustomerId, out: &Control);
CustomerId*
CustomerName For each Customer
CountryId Where CustomerId = &CustomerId
CountryName ---------
) &Control = True
Endfor
Tipos de Datos Compuestos
Concepto
1 1 variable de tipo de
John Smith datos compuesto
5th. Avenue 1234
Definición
2- Se crea objeto de tipo: Structured Data Type + drag & drop de Transacción
Carga
SDTCustomer
Id: 2
s
Id: 1 Id: 3 Id: 4
Name: Susan
Name: John Smith Name: Robert Hill Name: Peter Jensen
Brown
Address: 5th. Ave. Address: 81th. St.. Address: St,Paul Rd.
Address: 7th.Ave.
Colección de Clientes
Ejemplo: Ranking de cantidad de atracciones por país
Pais Cantidad
atracciones
BRASIL 4
ESTADOS UNIDOS 3
URUGUAY 2
CHILE 1
….
…
Ejemplo: Ranking de cantidad de atracciones por país
SDTCountries
Id: 2
Id: 1 Id: 3 Id: 4
Name: ESTADOS
Name: URUGUAY Name: BRASIL Name: CHILE
UNIDOS
AttractionQuantity: 2 AttractionQuantity: 4 AttractionQuantity: 1
AttractionQuantity: 3
Ejemplo: Ranking de cantidad de atracciones por país
Country
{
CountryId*
CountryName
}
Attraction
{
AttractionId*
AttractionName
CountryId
CountryName
}
Ejemplo: Ranking de cantidad de atracciones por país
Where…
Ejemplo: Ranking de atracciones por país País Cant. Atracc.
BRASIL 4
ESTADOS UNIDOS 3
URUGUAY 2
Country CHILE 1
{
CountryId*
CountryName
}
Attraction
{
AttractionId*
AttractionName
CountryId
CountryName
}
Variables Colección
&numbers
&Countries
Business Components
Concepto: Transacción que podrá ser ejecutada sin su form
Update
Ejemplo: eliminación
Category
{
CategoryId* Delete
CategoryName
}
Métodos Insert y Update
&Category : Variable basada en el tipo de datos Category
Category Insert
{
CategoryId*
CategoryName
}
Update
Método InsertOrUpdate
Category
{
CategoryId*
CategoryName &Category : Variable basada en el tipo de datos Category
}
InsertOrUpdate
Insert / Update en transacción de dos Insert
niveles
Insert / Update en transacción de dos Insert
niveles
Insert / Update en transacción de dos Insert
niveles
Métodos en Colecciones BC Attraction
AttractionId
AttractionName
CountryId
CityId
CategoryId
AttractionPhoto
BC BC BC
Attraction Attraction Attraction
&attractions
&attractions.Update()
&attractions.Insert()
&attractions.InsertOrUpdate()
Insert / Update / InsertOrUpdate
- Usando los métodos Load y Save para modificar se accede dos veces a la base de datos
-lo que disminuye la performance- mientras que con el Update o InsertOrUpdate se
accede solamente una vez
- Los nombres de estos nuevos métodos ya dan la pauta del objetivo claramente
Manejo de errores trabajando con BC
GeneXus ofrece una alternativa muy fácil para definir los datos con los cuales se desean
poblar las tablas físicas que se crean asociadas a las transacciones, lo que evita tener que
resolver las cargas de datos de otras maneras.
Inicializar datos
No cargamos el CategoryId
ya que fue definido como autonumerado
Inicializar datos: Solo lectura
Country
{
CountryId*
CountryName
}
Poblado de Datos
Business Components y Data Providers
DPCountries
Ejemplo
Country
{
CountryId* Autonumber = True
CountryName
}
Poblado de Datos con Procedimientos
Comandos New / For each / Delete
Consideraciones
Los comandos New / For Each / Delete sirven para insertar, actualizar y eliminar información de
la base de datos, pero solo pueden ser usados en Procedimientos
Si bien los siguientes comandos sirven para insertar, actualizar y eliminar información de la
base de datos, recomendamos la utilización de Business Component, ya que los mismos:
Category
{
CategoryId*
CategoryName
}
Si el atributo es autonumerado
no lo inserto
Modificación / Comando FOR EACH
Category
{
CategoryId*
CategoryName
}
Country Attraction
{ {
CountryId* AttractionId*
CountryName AttractionName
City CategoryId
{ CategoryName
CityId* CountryId
CityName CountryName
} CityId
} CitlyName
}
Eliminación – Comando DELETE
Attraction
{
AttractionId*
AttractionName
CategoryId
CategoryName
CountryId
CountryName
CityId
CitlyName
}
To be continued …