Uso della funzione LookUp per restituire un record

Completato

La funzione LookUp viene usata per restituire un singolo record di dati. LookUp è diversa dalla funzione Filter che restituisce uno o più record in una tabella. La funzione LookUp si usa per controlli, ad esempio Modulo, per i quali è necessario specificare un singolo record. È anche possibile visualizzare un singolo campo del record in un controllo, come Etichetta, usando la notazione con punto (.).

Per questo esempio fare riferimento alla tabella di dati seguente archiviata in una raccolta denominata 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 Data CustomerName Amount
1 10/04/2020 Fabrikam 212
2 01/03/2020 Contoso 47,89
3 14/03/2020 Contoso 32,99
4 02/04/2020 Fabrikam 105,32

Per restituire il record in cui Date è 14/03/2020, usare la formula seguente.

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

Questa formula restituisce il primo record dell'origine dati che soddisfa il criterio di Date uguale a 14/03/2020. Può essere usata ad esempio nella proprietà Item di un controllo Form.

La funzione LookUp viene spesso usata quando si vuole visualizzare un campo dal record. Se, ad esempio, è disponibile una relazione dati in cui si cercano i dati relativi a Contoso e si vuole che venga restituito solo l'importo della fattura con ID 3 in un controllo Etichetta, è necessario aggiungere un controllo Etichetta e quindi usare la formula seguente nella proprietà Text.

LookUp(collectCustomerInvoices, ID =3).Amount

La formula visualizza 32,99 nel controllo Etichetta perché la funzione LookUp ha restituito l'intero record in cui ID è uguale a 3. La notazione .Amount alla fine della funzione ha quindi restituito il campo Importo relativo a tale record.

Ogni volta che si usa la funzione LookUp, l'origine dati esegue una query relativa al record. La ricerca di una raccolta è veloce perché le raccolte sono locali nell'app. Se però, come spesso accade, si esegue una ricerca direttamente nell'origine dati, ripetere la stessa query sullo stesso database è inefficiente.

Per evitare query ripetitive quando i dati non vengono modificati, è possibile archiviare i dati in una variabile. Usare quindi la notazione con punto (.) per restituire il valore dalla variabile. Di seguito è riportato un esempio:

  1. Aggiungere un controllo Pulsante all'app.

  2. Impostare la formula seguente relativa a OnSelect per il controllo Pulsante:

    Set(varRecord, LookUp(collectCustomerInvoices, ID =3))
    
  3. Aggiungere un controllo Etichetta all'app.

  4. Impostare la formula seguente relativa alla proprietà Text del controllo Etichetta: varRecord.Amount

Questa procedura consente di ottenere lo stesso risultato dell'esempio precedente, ma ora il record è archiviato nella variabile varRecord. È possibile accedere direttamente alle altre proprietà nello stesso modo.