Função DPesquisar

Nas bases de dados de ambiente de trabalho do Access pode utilizar a função DPesquisar para obter o valor de um campo específico de um conjunto específico de registos (um domínio). Utilize a função DPesquisar num módulo do Visual Basic for Applications (VBA), numa macro, numa consulta de expressão ou num controlo calculado num formulário ou relatório.

Nota: Este artigo não se aplica às aplicações Web do Access.

Pode utilizar a função DPesquisar 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 campos IDDaEncomenda, IDDoProduto, PreçoUnitário, Quantidade e Desconto. No entanto, o campo NomeDoProduto está noutra tabela, na tabela Produtos. Pode utilizar a função DPesquisar num controlo calculado para apresentar o NomeDoProduto no mesmo formulário.

Sintaxe

DPesquisar( expr, domínio [, critérios] )

A sintaxe da função DPesquisar tem os seguintes 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. Em 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, a mesma pode ser incorporada ou definida pelo utilizador, mas não pode ser outra agregação de domínio ou função de agregação SQL.

domínio

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.

critérios

Opcional. Uma expressão de cadeia utilizada para restringir o intervalo de dados no qual a função DPesquisar é executada. Por exemplo, o argumento critérios é muitas vezes equivalente à cláusula WHERE numa expressão SQL, sem a palavra WHERE. Se o argumento critérios for omitido , a função DPesquisar avalia o expr em comparação com o domínio completo. Qualquer campo incluído no argumento critérios também tem de ser um campo em domínio; caso contrário, a função DPesquisar devolve um resultado Nulo.

Observações

A função DPesquisar devolve um valor de campo único com base nas informações especificadas no argumento critérios- Apesar de critérios ser um argumento opcional, se não fornecer um valor para critérios, a função DPesquisar devolve um valor aleatório no domínio.

Se nenhum registo satisfizer o argumento critérios ou se domínio não contiver registos, a função DPesquisar devolve um valor Nulo.

Se mais do que um campo cumprir o argumento critérios, a função DPesquisar devolve a primeira ocorrência. Deve especificar critérios que assegurem que o valor de campo devolvido pela função DPesquisar é único. É aconselhável utilizar um valor de chave primária para os seus critérios, como [EmployeeID] no exemplo seguinte, para se certificar de que a função DPesquisar devolve um valor único:

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")

Quer utilize a função DPesquisar numa macro ou módulo, num consulta de expressão ou num controlo calculado, tem de construir cuidadosamente o argumento critérios para se certificar de que este será avaliado corretamente.

Pode utilizar a função DPesquisar 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 função DPesquisar numa expressão num controlo calculado num formulário ou relatório se o campo que pretende apresentar não está 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 denominada IDDoProduto que apresenta o campo IDDoProduto. Para procurar o NomeDoProduto de uma tabela Produtos com base no valor na caixa de texto, pode criar outra caixa de texto e definir a sua propriedade OrigemDoControlo para 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 em domínio não são incluídas quando utiliza esta função. Se pretende que a função DPesquisar seja baseada nos valores alterados, tem primeiro de guardar as alterações ao clicar em Guardar Registo em Registos no separador Dados, mover o foco para outro registo ou utilizar o método de Atualização.

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 trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.

O exemplo seguinte devolve informações de nomes do campo NomeDaEmpresa do registo que satisfazem o argumento critérios. O domínio é uma tabela Transportadora. O argumento critérios restringe o resultado de conjunto de registos àqueles em que IDDaTransportadora é igual a 1.

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

O exemplo seguinte da tabela Transportadora utiliza o controlo de formulário IDDaTransportadora para fornecer critérios para a função DPesquisar. Tenha em consideração que a referência ao controlo não está incluída nas aspas que denotam as cadeias. Isto assegura que o Access obtém o valor atual do controlo sempre que a função DPesquisar é chamada.

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)
Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×