Método Application.DLookup (Access)

Use a função DLookup para obter o valor de um determinado campo de um conjunto de registros especificado (um domínio).

Sintaxe

expressão. DLookup (Expr, Domínio, Critérios)

expressão Uma variável que representa um Aplicativo objeto.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
Expr Obrigatório String 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 uma expressão que executa um cálculo nos dados desse campo. Na expr, você pode incluir o nome de um campo em uma tabela, um controle em um formulário, em uma constante ou em 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 String Uma expressão formada por cadeia de caracteres que identifica o conjunto de registros que constitui o domínio. Pode ser um nome de tabela ou um nome de uma consulta que não exija um parâmetro.
Criteria Opcional Variantes Uma expressão de cadeia de caracteres opcional usada para restringir o intervalo de dados no qual a função DLookup é executada. Por exemplo, criteria com frequência é equivalente à cláusula WHERE em uma expressão SQL sem a palavra WHERE. Se criteria for omitido, a função DLookup avalia expr no domínio inteiro. 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.

Valor de retorno

Variant

Comentários

Use 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 Outros Detalhes. 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.

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 do campo retornado pela função DLookup seja exclusivo. Você poderá querer usar um valor de 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.

Use 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 uma consulta de atualização.

Você também pode usar a função DLookup em uma expressão em um controle calculado em um formulário ou relatório caso o campo que deve ser exibido não esteja na fonte do 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)

Dica

  • Embora você possa usar a função DLookup para exibir um valor de um campo em uma tabela estrangeira, pode ser mais eficiente criar uma consulta que contenha os campos de que você precisa em ambas as tabelas e então basear seu formulário ou relatório nessa consulta.
  • Você também pode usar o Assistente de Pesquisa para localizar valores em uma tabela estrangeira.

Exemplo

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 Remetentes. 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 Remetentes 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, o Microsoft 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)

Os exemplos a seguir mostram como usar os diversos tipos de critérios com a função DLookup.

    ' ***************************
    ' Typical Use
    ' Numerical values. Replace "number" with the number to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = number")

    ' Strings.
    ' Numerical values. Replace "string" with the string to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria]= 'string'")

    ' Dates. Replace "date" with the string to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria]= #date#")
    ' ***************************

    ' ***************************
    ' Referring to a control on a form
    ' Numerical values
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)

    ' Strings
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")

    ' Dates
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
    ' ***************************

    ' ***************************
    ' Combinations
    ' Multiple types of criteria
    variable = DLookup("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
             & " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
            & " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
    
    ' Use two fields from a single record.
    variable = DLookup("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
            
    ' Expressions
    variable = DLookup("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
    
    ' Control Structures
    variable = DLookup("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
    ' ***************************
```The following example shows how to use **DLookUp** in a Do Loop. It demonstrates how to build the Criteria string on each pass through the loop.

```vba
' The loop verifies data from an input data set, in this case Operating System names, 
' against those contained in a Master List.

Do Until I1 > NRec1
    ' An apostrophe is concatenated at the beginning and at the end of a datum referenced by "rs1!OS", 
    ' which is then concatenated to build the entire criteria string.
    Str_2 = "'" & rs1!OS & "'"
    Str_1 = "[OS] = " & Str_2
    
    J1 = DLookup("[ID]", "tbl_81_Operating_Systems_Master_List", Str_1)
    
    If IsNull(J1) = True Then
        ' If an OS name is not found, then a flag is set and the name of the unknown OS is output to a table.
        rs3.AddNew
        rs3.OS = rs1!OS
        rs3.Update
        Err_Fl = False

    End If

    rs1.MoveNext
    I1 = I1 + 1

Loop

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.