In Access database desktop è possibile usare la funzione DLookup per ottenere il valore di un determinato campo da un set di record specificato (un dominio ). Usare la funzione DLookup in un modulo di Visual Basic, Applications Edition (VBA), una macro, una espressione di query oppure un controllo calcolato di una maschera o di un report.
È possibile usare la funzione DLookup per visualizzare il valore di un campo che non si trova nell'origine record della maschera o del report. Si supponga ad esempio di avere una maschera basata su una tabella Order Details. La maschera visualizza i campi OrderID, ProductID, UnitPrice, Quantity e Discount. Tuttavia, il campo ProductName si trova in un'altra tabella, Products. È possibile usare la funzione DLookup in un controllo calcolato per visualizzare il campo ProductName nella stessa maschera.
Sintassi
DLookup( espr, dominio [, criteri] )
Gli argomenti della sintassi della funzione DLookup sono i seguenti:
Argomento |
Descrizione |
---|---|
espressione |
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 in una query oppure un'espressione che esegue un calcolo sui dati di tale campo. In espr è possibile includere il nome di un campo di una tabella, un controllo di una maschera, una costante o una funzione. Se espr include una funzione, questa può essere una funzione predefinita o definita dall'utente, ma non un'altra funzione di aggregazione sui domini o una funzione di aggregazione SQL. |
dominio |
Obbligatorio. Un'espressione di stringa che identifica il set di record che costituisce il dominio. Può essere un nome di una tabella o di una query che non richiede un parametro. |
criteri |
Facoltativo. Un'espressione di stringa usata per restringere l'intervallo di dati su cui viene eseguita la funzione DLookup. Ad esempio, l'argomento criteri è spesso equivalente alla clausola WHERE di un'espressione SQL, senza la parola WHERE. Se i criteri vengono omessi, la funzione DLookup valuta espr sull'intero dominio. Qualsiasi campo incluso in criteri deve essere anche un campo di dominio; in caso contrario, la funzione DLookup restituisce Null. |
Osservazioni
La funzione DLookup restituisce un singolo valore di campo in base alle informazioni specificate in criteri. Anche se l'argomento criteri è facoltativo, se non si specifica un valorela funzione DLookup restituisce un valore casuale nel dominio.
Se nessun record soddisfa i criteri oppure se il dominio non contiene record, la funzione DLookup restituisce Null.
Se più campi soddisfano i criteri, la funzione DLookup restituisce la prima occorrenza. È consigliabile specificare criteri che assicurino che il valore del campo restituito dalla funzione DLookup sia univoco. È anche consigliabile usare un valore di chiave primaria per i criteri, come [EmployeeID] nell'esempio seguente, per assicurarsi che la funzione DLookup restituisca un valore univoco:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Indipendentemente dal fatto che la funzione DLookup venga usata in una macro o un modulo, in un'espressione di query o in un controllo calcolato, è necessario specificare con attenzione l'argomento criteri per assicurarsi che venga valutata correttamente.
È possibile usare la funzione DLookup per specificare criteri nella riga Criteri di una query, all'interno di un'espressione di campo calcolato in una query oppure nella riga Aggiorna a in una query di aggiornamento.
È anche possibile usare la funzione DLookup in un'espressione in un controllo calcolato di una maschera o di un report, se il campo che è necessario visualizzare non si trova nell'origine record su cui si basa la maschera o il report. Si supponga ad esempio di avere una maschera Order Details basata su una tabella Order Details con una casella di testo ProductID che visualizza il campo ProductID. Per cercare ProductName in una tabella Products basata sul valore della casella di testo, è possibile creare un'altra casella di testo e impostare la relativa proprietà OrigineControllo sull'espressione seguente:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Suggerimenti
-
Sebbene sia possibile usare la funzione DLookup per visualizzare un valore di un campo in una tabella della chiave esterna, può risultare più efficiente creare una query contenente i campi necessari di 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 dominio non vengono incluse quando si usa questa funzione. Se si vuole che la funzione DLookup sia basata sui valori cambiati, è necessario salvare prima le modifiche facendo clic su Salva il record in Record nella scheda Dati, spostando lo stato attivo su un altro record oppure usando il metodo Update.
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 nome dal campo CompanyName del record che soddisfa i criteri. Il dominio è la tabella Shippers. L'argomento criteri restringe il set di record risultante limitandolo solo a quelli per cui ShipperID è uguale a 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
Nell'esempio successivo sulla tabella Shippers viene usato il controllo della maschera ShipperID per specificare i criteri per la funzione DLookup. Si noti che il riferimento al controllo non è incluso nelle virgolette che denotano le stringhe. In questo modo, ogni volta che viene chiamata la funzione DLookup , Access otterrà il valore corrente dal controllo.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & Forms!Shippers!ShipperID)
Nell'esempio successivo si usa una variabile intSearch per ottenere il valore.
Dim intSearch As Integer
Dim varX As Variant intSearch = 1 varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & intSearch)