Função DPesquisar

Aplica-se A
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Em bases de dados de ambiente de trabalho do Access, pode utilizar a DLookup função para obter o valor de um campo específico de um conjunto específico de registos (um domínio). Pode utilizar DLookup um módulo Visual Basic for Applications (VBA), uma macro, uma expressão de consulta ou um 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 para o 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 ser apresentada 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 executa um cálculo em 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 inclui uma função, pode ser incorporada ou definida pelo utilizador, mas não pode ser outra função de agregação ou SQL agregação de domínio.
domain Obrigatório. Uma expressão de cadeia que identifica o conjunto de registos que constituem o domínio. Pode ser um nome de tabela ou um nome de consulta de uma consulta que não necessita de 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 é expr avaliada em relação a todo o domínio. Qualquer campo incluído também deve criteria ser um campo em domain. Caso contrário, a DLookup função devolve Null.

Comentários

A DLookup função retorna um valor de campo único com base nas informações especificadas em criteria. Embora criteria seja opcional, se não fornecer um valor para a mesma, a DLookup função devolve um valor aleatório no domínio.

Se nenhum registro satisfizer criteria, ou se domain não contiver nenhum registro, a DLookup função retornará Null.

Se mais do que um campo se encontrar criteria, a DLookup função devolve a primeira ocorrência. Deve especificar critérios que assegurem que o valor de campo devolvido é DLookup único. É aconselhável utilizar um valor de chave primária para os seus critérios, tal 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, num consulta de expressão ou num controlo calculado, construa cuidadosamente o argumento 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, dentro de um campo de expressão calculado numa consulta ou na linha Atualizar Para numa consulta 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 pretende apresentar não estiver na origem do registo 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 denominada ProductID que apresenta o ProductID campo. Para pesquisar a partir ProductName de uma Products tabela com base no valor na caixa de texto, crie outra caixa de texto e defina sua propriedade ControlSource como a seguinte expressão:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

Sugestões

  • Apesar de poder utilizar a função DPesquisar para apresentar um valor de um campo numa tabela com chave externa, pode ser mais eficiente criar uma consulta que contém 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 não domain são incluídas quando utiliza esta função. Se 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

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, consulte Referência do VBA do Access.

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 de registos resultante àqueles em que ShipperID é igual a 1.

Dim varX As Variant
varX = DLookup("[CompanyName]", _
    "Shippers", "[ShipperID] = 1")

O exemplo seguinte da Shippers tabela utiliza o controlo ShipperID de formulário para fornecer critérios para a DLookup função. A referência ao controlo não está incluída nas aspas que denotam as cadeias. Isto assegura que o DLookup Access obtém o valor atual do controlo sempre que é executado.

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)