Em Acessar bancos de dados da área de trabalho, você pode usar a DLookup função para obter o valor de um determinado campo de um conjunto de registros especificado (um domínio). Você pode usar DLookup em um módulo de Visual Basic for Applications (VBA), uma macro, uma expressão de consulta ou um controle calculado em um formulário ou relatório.
Você pode usar a DLookup função para exibir o valor de um campo que não está na fonte de registro para seu formulário ou relatório. Por exemplo, suponha que você tenha um formulário baseado em uma tabela Detalhes do Pedido. O formulário exibe os OrderIDcampos , ProductID, UnitPrice, Quantitye Discount . No entanto, o ProductName campo está em outra tabela, a Products tabela. Você pode usar a DLookup função em um controle calculado para exibir ProductName no mesmo formulário.
Sintaxe
DLookup(expr, domain [, criteria])
A DLookup função tem esses argumentos:
| Argumento | Descrição |
|---|---|
expr |
Obrigatório. Uma expressão que identifica o campo cujo valor você deseja retornar. Pode ser uma expressão de cadeia de caracteres que identifica um campo em uma tabela ou consulta ou pode ser uma expressão que executa um cálculo sobre dados nesse campo. No expr, você pode incluir o nome de um campo em uma tabela, um controle em um formulário, uma constante ou uma função. Se expr incluir uma função, ela poderá ser interna ou definida pelo usuário, mas não outra função de agregação ou SQL agregação de domínio. |
domain |
Obrigatório. Uma expressão de cadeia de caracteres que identifica o conjunto de registros 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 de caracteres usada para restringir o intervalo de dados em que a DLookup função é executada. Por exemplo, criteria geralmente é equivalente à WHERE cláusula em uma SQL expressão, sem a palavra WHERE. Se você omitir criteria, a DLookup função será avaliada expr em relação a todo o domínio. Qualquer campo incluído no criteria também deve ser um campo em domain. Caso contrário, a DLookup função retornará Null. |
Comentários
A DLookup função retorna um único valor de campo com base nas informações especificadas em criteria. Embora seja criteria opcional, se você não fornecer um valor para ele, a DLookup função retornará um valor aleatório no domínio.
Se nenhum registro atender criteria, ou se domain não contiver registros, a DLookup função retornará Null.
Se mais de um campo atender criteria, a DLookup função retornará a primeira ocorrência. Você deve especificar critérios que garantam que o valor do campo retornado por DLookup é exclusivo. Talvez você queira usar um valor de chave primária para seus critérios, como [EmployeeID] no exemplo a seguir, para garantir que DLookup retorne um valor exclusivo:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Se você usar a DLookup função em uma macro ou módulo, uma expressão de consulta ou um controle calculado, construa o argumento cuidadosamente para que o criteria Access a avalie corretamente.
Você pode usar a DLookup função para especificar critérios na linha Critérios de uma consulta, dentro de uma expressão de campo calculada em uma consulta ou na linha Atualizar para em uma consulta de atualização.
Você também pode usar a DLookup função em uma expressão em um controle calculado em um formulário ou relatório se o campo que você precisa exibir não estiver na fonte de registro na qual seu formulário ou relatório se baseia. Por exemplo, suponha que você tenha um formulário de Detalhes do Pedido com base em uma tabela Detalhes do Pedido com uma caixa de texto chamada ProductID que exibe o ProductID campo. Para pesquisar ProductName a partir de uma Products tabela com base no valor na caixa de texto, crie outra caixa de texto e defina sua propriedade ControlSource para a seguinte expressão:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Dicas
- Embora você possa usar a função DLookup para exibir um valor de um campo em uma tabela estrangeira, talvez seja mais eficiente criar uma consulta que contenha os campos necessários de ambas as tabelas e, em seguida, basear seu formulário ou relatório nessa consulta.
- Você também pode usar o Assistente de Pesquisa para encontrar valores em uma tabela estrangeira.
Observação
Alterações não salvas nos registros em domain não são incluídas quando você usa essa função. Se você quiser DLookup usar os valores alterados, primeiro salve as alterações clicando em Salvar Registro em Registros na guia Dados , movendo o foco para outro registro ou usando o Update método.
Exemplo
Observação
Exemplos a seguir demonstram o uso dessa função em um módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, consulte Referência do Access VBA.
O exemplo a seguir retorna informações de nome do CompanyName campo do registro que satisfaz criteria. O domínio é uma Shippers tabela. O criteria argumento restringe o conjunto resultante de registros àqueles para os quais ShipperID é 1igual a .
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
O próximo exemplo da Shippers tabela usa o controle ShipperID de formulário para fornecer critérios para a DLookup função. A referência ao controle não está incluída nas aspas que denotam as cadeias de caracteres. Isso garante que, cada vez DLookup que for executado, o Access obtém o valor atual do controle.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & Forms!Shippers!ShipperID)
O próximo exemplo usa uma variável, intSearch, para obter o valor.
Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)