Nas bases de dados de ambiente de trabalho do Access, pode utilizar a DLookup função para obter o valor de um determinado campo a partir de um conjunto especificado de registos (um domínio). Pode utilizar DLookup num módulo Visual Basic for Applications (VBA), numa macro, numa expressão de consulta ou num controlo calculado num formulário ou relatório.
Pode utilizar a DLookup função para apresentar o valor de um campo que não está na origem de registos do seu formulário ou relatório. Por exemplo, suponha que tem um formulário com base numa tabela Detalhes de Encomenda. O formulário apresenta os OrderIDcampos , ProductID, UnitPrice, Quantitye Discount . No entanto, o ProductName campo está noutra tabela, a Products tabela. Pode utilizar a DLookup função num controlo calculado para apresentar ProductName no mesmo formulário.
Sintaxe
DLookup(expr, domain [, criteria])
A DLookup função tem estes argumentos:
| Argumento | Descrição |
|---|---|
expr |
Obrigatório. Uma expressão que identifica o campo cujo valor pretende devolver. Pode ser uma expressão de cadeia que identifica um campo numa tabela ou consulta, ou pode ser uma expressão que efetua um cálculo nos dados nesse campo. No expr, pode incluir o nome de um campo numa tabela, um controlo num formulário, uma constante ou uma função. Se expr incluir uma função, pode ser incorporada ou definida pelo utilizador, mas não outra função de agregação ou SQL agregação de domínios. |
domain |
Obrigatório. Uma expressão de cadeia que identifica o conjunto de registos que compõe o domínio. Pode ser um nome de tabela ou um nome de consulta para uma consulta que não requer um parâmetro. |
criteria |
Opcional. Uma expressão de cadeia utilizada para restringir o intervalo de dados no qual a DLookup função é executada. Por exemplo, criteria muitas vezes é equivalente à WHERE cláusula numa SQL expressão, sem a palavra WHERE. Se omitir criteria, a DLookup função é avaliada expr em relação a todo o domínio. Qualquer campo incluído no criteria também tem de ser um campo em domain. Caso contrário, a DLookup função devolve Null. |
Comentários
A DLookup função devolve um valor de campo único com base nas informações especificadas em criteria. Embora criteria seja opcional, se não fornecer um valor para o mesmo, a DLookup função devolve um valor aleatório no domínio.
Se nenhum registo satisfizer criteriaou se domain não contiver registos, a DLookup função devolve Null.
Se mais do que um campo cumprir criteria, a DLookup função devolve a primeira ocorrência. Deve especificar critérios que garantam que o valor de campo devolvido por DLookup é exclusivo. Poderá querer utilizar um valor de chave primária para os critérios, como [EmployeeID] no exemplo seguinte, para garantir que DLookup devolve um valor exclusivo:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Quer utilize a DLookup função numa macro ou módulo, numa expressão de consulta ou num controlo calculado, construa o argumento cuidadosamente para que o criteria Access o avalie corretamente.
Pode utilizar a DLookup função para especificar critérios na linha Critérios de uma consulta, numa expressão de campo calculado numa consulta ou na linha Atualizar Para numa consulta de atualização.
Também pode utilizar a DLookup função numa expressão num controlo calculado num formulário ou relatório se o campo que precisa de apresentar não estiver na origem de registos na qual o seu formulário ou relatório se baseia. Por exemplo, suponha que tem um formulário Detalhes da Encomenda baseado numa tabela Detalhes da Encomenda com uma caixa de texto chamada ProductID que apresenta o ProductID campo. Para procurar ProductName a partir de uma Products tabela com base no valor na caixa de texto, crie outra caixa de texto e defina a respetiva propriedade OrigemDoControlo para a seguinte expressão:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Sugestões
- Embora possa utilizar a função DLookup para apresentar um valor de um campo numa tabela externa, pode ser mais eficiente criar uma consulta que contenha os campos de que precisa de ambas as tabelas e, em seguida, basear o seu formulário ou relatório nessa consulta.
- Também pode utilizar o Assistente de Pesquisas para localizar valores numa tabela com chave externa.
Nota
As alterações não guardadas aos registos no domain não são incluídas quando utiliza esta função. Se quiser DLookup utilizar os valores alterados, primeiro guarde as alterações ao clicar em Guardar Registo em Registos no separador Dados , mover o foco para outro registo ou através do Update método .
Exemplo
Nota
Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, veja Access VBA reference (Referência do VBA do Access).
O exemplo seguinte devolve informações de nome do CompanyName campo do registo que satisfaz criteria. O domínio é uma Shippers tabela. O criteria argumento restringe o conjunto resultante de registos àqueles para os quais ShipperID é igual a 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
O exemplo seguinte da Shippers tabela utiliza o controlo de formulário ShipperID para fornecer critérios para a DLookup função. A referência ao controlo não está incluída nas aspas que indicam as cadeias. Isto garante que cada vez DLookup que é executado, o Access obtém o valor atual do controlo.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & Forms!Shippers!ShipperID)
O exemplo seguinte utiliza uma variável, intSearch, para obter o valor.
Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)