Noticias

De GeneXus 8.0 RC: Cláusula option distinct

La cláusula Option Distinct de los comandos For Each permite retornar los registros que cumplan unicidad de valores de los atributos referenciados

Alcance
Lenguajes: .NET, C/SQL, Visual Basic, Visual FoxPro, Java, PocketPC

DBMSes: DB2 UDB for ISeries, DB2 Universal Database, Informix, Oracle, SQL Server, PostgreSQL

Descripción
En algunos casos es necesario obtener valores diferentes de un conjunto de atributos. Esto se puede resolver utilizando un corte de control por los atributos en cuestión. Para permitir resolver este caso de una manera más eficiente, se agregó la cláusula Option Distinct a los comandos For Each y XFor Each.

Por ejemplo, supongamos que se tiene una tabla de Personas:

PerCod* Código
PerNom Nombre
PerEmail Dirección de email

La forma de obtener todas las diferentes direcciones de e-mail, sin duplicados, es:

For Each
Option Distinct
   
&email = PerEmail
Endfor

Para determinar el conjunto de valores distintos, se toman en cuenta aquellos atributos referenciados en el For each.

Consideraciones generales

- La cláusula Option Distinct de los comandos For Each es soportada para generadores Cliente/Servidor y no aplica a tablas locales.

- Los For Each con Option Distinct no pueden actualizar la base de datos. Tampoco los For Eachs interiores en el caso de cortes de control. Los For Eachs anidados sobre otras tablas si pueden realizar actualizaciones.

- Si no se especifica un orden se asume Order None.

- La cláusula Option Distinct se soporta en el For Each "exterior" en el caso de cortes de control. Los For Eachs "interiores" heredan el Distinct.

- Los NULLs son considerados como cualquier otro valor. Esto significa que si un atributo referenciado tiene valor NULL del DBMS en mas de un registro, el For Each devolverá solamente uno de ellos.