Uso de la función lookup para devolver un registro

Completado

La función LookUp se utiliza para devolver un registro de datos. Lookup es diferente de la función Filter, que devuelve uno o varios registros de una tabla. Use la función LookUp para controles, como el control Formulario, que debe tener especificado un único registro. Además, en un control como una etiqueta puede mostrar un único campo del registro mediante la notación de puntos (.).

En este ejemplo, tome como referencia la siguiente tabla de datos almacenada en una colección denominada collectCustomerInvoices.

ClearCollect(collectCustomerInvoices, {ID:1, Date:"4/10/2020", CustomerName:"Fabrikam", Amount:212.00}, {ID:2, Date:"3/1/2020", CustomerName:"Contoso", Amount:47.89}, {ID:3, Date:"3/14/2020", CustomerName:"Contoso", Amount:32.99},{ID:4, Date:"4/2/2020", CustomerName:"Fabrikam", Amount:105.32}) 
Id. Fecha CustomerName Amount
1 10/04/2020 Fabrikam 212,00
2 01/03/2020 Contoso 47,89
3 14/03/2020 Contoso 32,99
4 02/04/2020 Fabrikam 105,32

Para devolver el registro cuya fecha sea 14/03/2020, use la siguiente fórmula.

LookUp(collectCustomerInvoices, Date = "3/14/2020")

Esta fórmula devuelve el primer registro del origen de datos que coincida con el criterio de fecha igual a 14/03/2020. Un ejemplo en el que se podría usar esta fórmula es en la propiedad Item de un control Form.

La función LookUp también se usa habitualmente si se desea mostrar un campo del registro. Por ejemplo, suponga que tiene una relación de datos en la que examina datos de Contoso y quiere devolver solo el importe de la factura que tiene un identificador de 3 en un control Etiqueta. Agregaría un control Etiqueta y, a continuación, usaría la siguiente fórmula en la propiedad Text para mostrar el importe.

LookUp(collectCustomerInvoices, ID =3).Amount

Esta fórmula se mostraría en el control Etiqueta 32,99. El motivo es que la función LookUp ha devuelto todo el registro en el que el identificador era igual a 3. La notación .Amount al final de la función ha devuelto el campo de importe de ese registro.

Cada vez que usa la función LookUp, ese origen de datos consulta el registro. La búsqueda de una colección resulta rápida, ya que las colecciones son locales en la aplicación. Sin embargo, si busca un origen de datos directamente, algo que es habitual, no resulta productivo realizar la misma consulta varias veces en la base de datos.

Para evitar consultas repetitivas, si los datos no van a cambiar, puede almacenar el registro en una variable. A continuación, use la notación de puntos (.) para devolver el valor de la variable. Mostramos ahora un ejemplo:

  1. Agregue un control Botón a la aplicación.

  2. Establezca la siguiente fórmula para OnSelect en el control Botón:

    Set(varRecord, LookUp(collectCustomerInvoices, ID =3))
    
  3. Agregue un control Etiqueta a la aplicación.

  4. Establezca la siguiente fórmula para la propiedad Text del control Etiqueta: varRecord.Amount.

Estos pasos le proporcionan el mismo resultado que el ejemplo anterior, pero ahora el registro se almacena en la variable, varRecord. Podría obtener acceso a las demás propiedades directamente de la misma manera.