Em Access bancos de dados de área de trabalho, você pode usar a função DLookup para obter o valor de um determinado campo de um conjunto de registros especificado (um domínio ). Use a função DLookup em um módulo VBA (Visual Basic for Applications), um macro, uma expressão de consulta ou um controle calculado em um formulário ou relatório.
Você pode usar a função DLookup 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 campos OrderID, ProductID, UnitPrice, Quantity e Discount. No entanto, o campo ProductName está em outra tabela, a tabela Produtos. Você pode usar a função DLookup em um controle calculado para exibir o ProductName no mesmo formulário.
Sintaxe
DLookup( expr, domínio [, critérios] )
A sintaxe da função DLookup tem esses argumentos:
Argumento |
Descrição |
---|---|
expr |
Obrigatório. Uma expressão que identifica o campo cujo valor você deseja retornar. Pode ser um expressão de cadeia de caracteres identificar um campo em uma tabela ou consulta, ou pode ser uma expressão que executa um cálculo sobre dados nesse campo. Em 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 de domínio ou de agregação de SQL. |
domínio |
Obrigatório. Uma expressão de cadeia de caracteres que identifica o conjunto de registros que constitui o domínio. Pode ser um nome de tabela ou um nome de consulta para uma consulta que não requer um parâmetro. |
critérios |
Opcional. Uma expressão de cadeia de caracteres usada para restringir o intervalo de dados no qual a função DLookup é executada. Por exemplo, os critérios geralmente são equivalentes à cláusula WHERE em uma expressão SQL, sem a palavra WHERE. Se os critérios forem omitidos, a função DLookupavaliará expr em relação a todo o domínio. Qualquer campo incluído nos critérios também deve ser um campo no domínio; caso contrário, a função DLookup retorna um Null. |
Comentários
A função DLookup retorna um único valor de campo com base nas informações especificadas nos critérios. Embora os critérios sejam um argumento opcional, se você não fornecer um valor para critérios, a função DLookup retornará um valor aleatório no domínio.
Se nenhum registro atender aos critérios ou se o domínio não contiver registros, a função DLookup retornará um Null.
Se mais de um campo atender aos critérios, a função DLookup retornará a primeira ocorrência. Você deve especificar critérios que garantirão que o valor de campo retornado pela função DLookup seja exclusivo. Você pode querer usar um valor chave primária para seus critérios, como [EmployeeID] no exemplo a seguir, para garantir que a função DLookup retorne um valor exclusivo:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Se você usa a função DLookup em uma macro ou módulo, uma expressão de consulta ou um controle calculado, você deve construir o argumento de critério cuidadosamente para garantir que ele seja avaliado corretamente.
Você pode usar a função DLookup 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 um atualizar consulta.
Você também pode usar a função DLookup 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 campo ProductID. Para pesquisar ProductName de uma tabela Products com base no valor na caixa de texto, você pode criar outra caixa de texto e definir 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 um 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 no domínio não são incluídas quando você usa essa função. Se você quiser que a função DLookup seja baseada nos 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 método Update .
Exemplo
Observação: Exemplos a seguir demonstram o uso dessa função em um módulo do Visual Basic for Applications (VBA). 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 campo CompanyName dos critérios de satisfação do registro. O domínio é uma tabela Shippers. O argumento de critério restringe o conjunto resultante de registros àqueles para os quais ShipperID é igual a 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
O próximo exemplo da tabela Shippers usa o controle de formulário ShipperID para fornecer critérios para a função DLookup . Observe que a referência ao controle não está incluída nas aspas que denotam as cadeias de caracteres. Isso garante que, sempre que a função DLookup for chamada, Access obterá 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)