Uso de la función lookup para devolver un registro
La función LookUp se utiliza para devolver un registro (o fila) individual a partir de una tabla. Lookup es distinta de la función Filter, que devuelve uno o más registros en una tabla, ya que LookUp solo devuelve un registro. Use la función LookUp para controles que deban tener especificado un único registro, como el control Form. 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 al valor de texto "14/03/2020". Si hubiera más de un registro en la colección con la fecha igual a "14/03/2020", solo se devolvería el primer registro, ya que LookUp siempre devuelve un registro. 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 mostraría 32,99 en el control Etiqueta. 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 Amount de ese registro.
Cada vez que usa la función LookUp, esta devuelve un registro completo. La búsqueda de una colección resulta rápida, ya que las colecciones son locales en referencia a 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. Luego, use la notación de punto (.) para devolver el valor desde la variable. A continuación, tiene un ejemplo:
Agregue un control Botón a la aplicación.
Establezca la siguiente fórmula para OnSelect en el control Botón:
Set(varRecord, LookUp(collectCustomerInvoices, ID =3))Agregue un control Etiqueta a la aplicación.
Establezca la siguiente fórmula para la propiedad Text del control EtiquetavarRecord.Amount.
Estos pasos le proporcionan el mismo resultado que el ejemplo anterior, pero ahora el registro se almacena en la variable varRecord. Podría acceder a los demás campos de este registro de la misma manera (Nombre = "Contoso" o Fecha = "14/03/2020", por ejemplo).