Funzione DLookup

Si applica a
Access per Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Nei database desktop di Access è possibile usare la DLookup funzione per ottenere il valore di un determinato campo da un set di record specificato, ovvero un dominio. È possibile usare DLookup in un modulo di Visual Basic, Applications Edition (VBA), una macro, un'espressione di query o un controllo calcolato in una maschera o report.

È possibile usare la DLookup funzione per visualizzare il valore di un campo non presente nell'origine record per la maschera o il report. Si supponga ad esempio di avere una maschera basata su una tabella Order Details. Nella maschera vengono visualizzati i OrderIDcampi , ProductID, , UnitPriceQuantitye Discount . Tuttavia, il ProductName campo si trova in un'altra tabella, la Products tabella. È possibile usare la DLookup funzione in un controllo calcolato da visualizzare ProductName nella stessa maschera.

Sintassi

DLookup(expr, domain [, criteria])

Gli DLookup argomenti della funzione sono i seguenti:

Argomento Descrizione
expr Obbligatorio. Un'espressione che identifica il campo di cui si vuole che venga restituito il valore. Può essere un'espressione stringa che identifica un campo in una tabella o query oppure un'espressione che esegue un calcolo sui dati contenuti in quel campo. In expr, è possibile includere il nome di un campo in una tabella, un controllo in una maschera, una costante o una funzione. Se expr include una funzione, può essere predefinita o definita dall'utente, ma non un'altra funzione di aggregazione o SQL aggregazione di dominio.
domain Obbligatorio. Espressione stringa che identifica il set di record che costituisce il dominio. Può essere un nome di tabella o un nome di query per una query che non richiede un parametro.
criteria Facoltativo. Espressione stringa usata per limitare l'intervallo di dati su cui viene eseguita la DLookup funzione. Ad esempio, criteria è spesso equivalente alla clausola in un'espressione WHERESQL , senza la parola WHERE. Se si omette criteria, la DLookup funzione restituisce expr l'intero dominio. Qualsiasi campo incluso in criteria deve essere anche un campo in domain. In caso contrario, la DLookup funzione restituisce Null.

Osservazioni

La DLookup funzione restituisce un singolo valore di campo in base alle informazioni specificate in criteria. Anche se criteria è facoltativa, se non si specifica un valore per essa, la DLookup funzione restituisce un valore casuale nel dominio.

Se nessun record soddisfa criteriao se domain non contiene record, la DLookup funzione restituisce Null.

Se più campi si incontrano criteria, la DLookup funzione restituisce la prima occorrenza. È necessario specificare criteri che garantiscano che il valore del campo restituito da DLookup sia univoco. Può essere utile usare un valore di chiave primaria per i criteri, come [EmployeeID] nell'esempio seguente, per assicurarsi che DLookup restituisca un valore univoco:

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
    "[EmployeeID] = 1")

Se si usa la DLookup funzione in una macro o in un modulo, in un'espressione di query o in un controllo calcolato, costruire l'argomento criteria con attenzione in modo che Access lo valuti correttamente.

È possibile usare la DLookup funzione per specificare criteri nella riga Criteri di una query, all'interno di un'espressione di campo calcolato in una query o nella riga Aggiorna a di una query di aggiornamento.

È anche possibile usare DLookup la funzione in un'espressione in un controllo calcolato in una maschera o in un report se il campo che è necessario visualizzare non si trova nell'origine record su cui si basa la maschera o report. Si supponga, ad esempio, di avere una maschera Dettagli ordine basata su una tabella Dettagli ordine con una casella di testo denominata ProductID che visualizza il ProductID campo. Per eseguire una ricerca in una tabella in Products base ProductName al valore nella casella di testo, creare un'altra casella di testo e impostare la relativa proprietà OrigineControllo sull'espressione seguente:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

Consigli

  • Anche se è possibile usare la funzione DLookup per visualizzare un valore da un campo in una tabella esterna, può essere più efficiente creare una query contenente i campi necessari da entrambe le tabelle e quindi basare la maschera o il report su tale query.
  • È anche possibile usare la Ricerca guidata per trovare valori in una tabella della chiave esterna.

Nota

Le modifiche non salvate ai record in non vengono incluse quando domain si usa questa funzione. Se si desidera DLookup utilizzare i valori modificati, salvare le modifiche prima facendo clic su Save Record in Records nella scheda Dati , spostando lo stato attivo su un altro record oppure utilizzando il Update metodo.

Esempio

Nota

Gli esempi seguenti illustrano l'uso di questa funzione in un modulo di Visual Basic, Applications Edition (VBA). Per altre informazioni sull'uso di VBA, vedere Informazioni di riferimento su VBA in Access.

Nell'esempio seguente vengono restituite le CompanyName informazioni sul nome dal campo del record che soddisfa criteria. Il dominio è una Shippers tabella. L'argomento criteria restringe l'insieme di record risultante a quelli per cui ShipperID è 1uguale a .

Dim varX As Variant
varX = DLookup("[CompanyName]", _
    "Shippers", "[ShipperID] = 1")

L'esempio Shippers seguente della tabella usa il controllo ShipperID di maschera per fornire i criteri per la DLookup funzione. Il riferimento al controllo non è incluso nelle virgolette che indicano le stringhe. In questo modo si garantisce che ogni volta DLookup che viene eseguita, Access ottenga il valore corrente dal controllo.

Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
    "[ShipperID] = " & Forms!Shippers!ShipperID)

L'esempio successivo usa una variabile, intSearch, per ottenere il valore.

Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
    "[ShipperID] = " & intSearch)