Applies ToAccess para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

No Access bases de dados de ambiente de trabalho, pode utilizar a função DLookup para obter o valor de um determinado campo a partir de um conjunto especificado 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.

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 DLookup devolve um valor de campo único com base nas informações especificadas nos critérios. Embora os critérios sejam um argumento opcional, se não fornecer um valor para critérios, a função DLookup 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 VariantvarX = 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 como trabalhar com o VBA, veja Access VBA reference (Referência do VBA do Access).

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 VariantvarX = 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 garante que sempre que a função DLookup for chamada, Access obterá o valor atual do controlo.

Dim varX As VariantvarX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & Forms!Shippers!ShipperID)

O exemplo seguinte utiliza uma variável, intSearch, para obter o valor.

Dim intSearch As IntegerDim varX As VariantintSearch = 1varX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & intSearch)

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.