Nei database desktop di Access è possibile usare la DLookup funzione per ottenere il valore di un campo specifico da un set di record specificato (un dominio). È possibile usare DLookup in un modulo Visual Basic, Applications Edition (VBA), una macro, un'espressione di query o un controllo calcolato in una maschera o un 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, UnitPriceQuantity, e Discount . Tuttavia, il ProductName campo si trova in un'altra tabella, la Products tabella. È possibile usare la DLookup funzione in un controllo calcolato per visualizzarla ProductName nella stessa maschera.
Sintassi
DLookup(expr, domain [, criteria])
La DLookup funzione ha gli argomenti seguenti:
| Argomento | Descrizione |
|---|---|
expr |
Obbligatorio. Un'espressione che identifica il campo di cui si vuole che venga restituito il valore. Può trattarsi di un'espressione stringa che identifica un campo di una tabella o di una query oppure di un'espressione che esegue un calcolo sui dati del 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ò trattarsi di un nome di tabella o di una 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 WHERE clausola in un'espressione SQL , senza la parola WHERE. Se si omette criteria, la DLookup funzione valuta 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 è facoltativo, se non viene fornito un valore, 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 soddisfano criteria, la DLookup funzione restituisce la prima occorrenza. È consigliabile specificare criteri che garantiscono che il valore del campo restituito sia DLookup univoco. È possibile usare un valore di chiave primaria per i criteri, ad [EmployeeID] esempio nell'esempio seguente, per assicurarsi che DLookup restituisca un valore univoco:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Indipendentemente dal fatto che la DLookup funzione venga usata in una macro o in un modulo, in un'espressione di query o in un controllo calcolato, specificare con attenzione l'argomento criteria in modo che Access lo valuti correttamente.
È possibile usare la DLookup funzione per specificare i criteri nella riga Criteri di una query, in un'espressione con campi calcolati in una query o nella riga Aggiorna a in una query di aggiornamento.
È anche possibile usare la DLookup funzione in un'espressione in un controllo calcolato in una maschera o in un report se il campo da visualizzare non è nell'origine record su cui si basa la maschera o il 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 cercare ProductName da una Products tabella in base al valore nella casella di testo, creare un'altra casella di testo e impostare la relativa proprietà OrigineControlli sull'espressione seguente:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Suggerimenti
- Anche se è possibile usare la funzione DLookup per visualizzare un valore da un campo in una tabella esterna, può risultare 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 domain non vengono incluse quando si usa questa funzione. Se si vogliono DLookup usare i valori modificati, salvare prima le modifiche facendo clic su Salva record in Record nella scheda Dati , spostando lo stato attivo su un altro record oppure usando 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 per Access.
L'esempio seguente restituisce informazioni sul CompanyName nome dal campo del record che soddisfa criteria. Il dominio è una Shippers tabella. L'argomento criteria limita il set di record risultante a quelli per cui ShipperID è 1uguale a .
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
L'esempio successivo della Shippers tabella usa il controllo ShipperID maschera per fornire i criteri per la DLookup funzione. Il riferimento al controllo non è incluso tra virgolette che indicano le stringhe. In questo modo, ogni volta DLookup che viene eseguito, Access ottiene 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)