Pode utilizar a função DPesquisar para obter o valor de um campo específico num conjunto de registos especificado (um domínio (domínio: conjunto de registos definido por uma tabela, consulta ou expressão SQL. As funções de agregação de domínio devolvem informações estatísticas sobre um domínio específico ou um conjunto de registos.)). Utilize a função DPesquisar num módulo do Visual Basic for Applications (VBA), numa macro (macro: acção ou conjunto de acções que podem ser utilizadas para automatizar tarefas. As macros são gravadas na linguagem de programação Visual Basic for Applications.), numa expressão de consulta ou num controlo calculado (controlo calculado: controlo utilizado num formulário, relatório ou página de acesso a dados para apresentar o resultado de uma expressão. O resultado é calculado de novo sempre que houver uma alteração em qualquer dos valores nos quais a expressão se baseia.) de um formulário ou relatório.
Pode utilizar a função DPesquisar para apresentar o valor de um campo que não se encontre na origem do registo do formulário ou relatório. Por exemplo, imagine que tem um formulário baseado numa tabela Detalhes da Encomenda. O formulário apresenta os campos CódigoDaEncomenda, CódigoDoProduto, PreçoUnitário, Quantidade e Desconto. No entanto, o campo NomeDoProduto está noutra tabela, a tabela Produtos. Poderá 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 da cadeia (expressão de cadeia: expressão que equivale a uma sequência de caracteres contíguos. Os elementos da expressão podem ser: funções que devolvem uma cadeia ou uma Variante de cadeia (VarType 8); uma cadeia literal, uma constante, uma variável ou Variante.) que identifique um campo numa tabela ou consulta ou uma expressão que efectue um cálculo dos dados nesse campo. No argumento expr, pode incluir o nome de um campo numa tabela, um controlo num formulário, uma constante ou uma função. Se o argumento expr incluir uma função, esta pode ser incorporada ou definida pelo utilizador, mas não outra função de domínio agregado ou de agregação SQL. |
| domínio |
Obrigatório. Uma expressão da cadeia que identifica o conjunto de registos que constituem o domínio. Pode ser o nome de uma tabela ou consulta para uma consulta que não necessite de um parâmetro. |
| critérios |
Opcional. Uma expressão da cadeia utilizada para restringir o intervalo de dados em que a função DPesquisar é executada. Por exemplo, o argumento critérios é frequentemente equivalente à cláusula WHERE numa expressão SQL, sem a palavra WHERE. Se omitir o argumento critérios, a função DPesquisar avalia o argumento expr em relação a todo o domínio. Qualquer campo incluído em critérios também tem de ser um campo em domínio; caso contrário, a função DPesquisar devolve um valor Nulo (Null: valor que pode introduzir num campo ou utilizar em expressões ou consultas para indicar dados em falta ou desconhecidos. No Visual Basic, a palavra-chave Null indica um valor nulo (Null). Alguns campos, como campos de chave primária, não podem conter Null.). |
Observações
A função DPesquisar devolve o valor de um campo individual baseado na informação especificada em critérios. Embora o argumento critérios seja 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 corresponder ao argumento critérios ou se o domínio não contiver registos, a função DPesquisar devolve um valor Nulo.
Se mais de um campo corresponder ao argumento critérios, a função DPesquisar devolve a primeira ocorrência. Deverá especificar critérios que garantam que o valor do campo devolvido pela função DPesquisar é exclusivo. Poderá utilizar um valor de chave primária (chave primária: um ou mais campos (colunas) cujos valores identificam única e exclusivamente cada registo numa tabela. Uma chave primária não permite valores nulos (Null) e tem de ter sempre um índice exclusivo. Uma chave primária é utilizada para relacionar uma tabela com as chaves externas noutras tabelas.) para os critérios, tal como [CódigoDoEmpregado] no exemplo seguinte, para garantir que a função DPesquisar devolve um valor exclusivo:
Dim varX As Variant
varX = DPesquisar("[Apelido]", "Empregados", _
"[CódigoDoEmpregado] = 1")
Se utilizar a função DPesquisar numa macro ou módulo, numa expressão de consulta ou num controlo calculado, terá de construir cuidadosamente o argumento critérios para garantir que o mesmo é avaliado correctamente.
Pode utilizar a função DPesquisar para especificar critérios na linha Critérios de uma consulta, numa expressão de campo calculado de uma consulta ou na linha Actualizar Para de uma consulta actualização (consulta Actualizar: consulta de acção (instrução SQL) que altera um conjunto de registos de acordo com os critérios (condições de procura) especificados pelo utilizador.).
Também pode utilizar a função DPesquisar numa expressão de um controlo calculado num formulário ou relatório, se o campo que necessitar de apresentar não estiver na origem do registo em que o formulário ou relatório é baseado. Por exemplo, imagine que tem um formulário Detalhes da Encomenda baseado numa tabela Detalhes da Encomenda com uma caixa de texto designada CódigoDoProduto que apresenta o campo CódigoDoProduto. Para pesquisar o NomeDoProduto numa tabela Produtos com base no valor da caixa de texto, poderá criar outra caixa de texto e definir a respectiva propriedade OrigemDoControlo de acordo com a seguinte expressão:
=DPesquisar("[NomeDoProduto]", "Produtos", "[CódigoDoProduto] =" & Formulários![Detalhes da Encomenda]!CódigoDoProduto)
Sugestões
Nota As alterações não guardadas de registos no domínio não são incluídas quando utilizar esta função. Se pretender que a função DPesquisar se baseie nos valores alterados, primeiro tem de guardar as alterações clicando em Guardar Registo em Registos no separador Dados, movendo o foco para outro registo ou utilizando o método Actualizar.
Exemplo
Nota Os exemplos que se seguem demonstram a utilização desta função num módulo do Visual Basic for Applications (VBA). Para mais informações sobre como trabalhar com VBA, seleccione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de procura.
O exemplo seguinte devolve informação do nome do campo NomeDaEmpresa do registo que corresponde aos critérios. O domínio é uma tabela Transitários. O argumento critérios restringe o conjunto resultante de registos a registos em que o CódigoDoTransitário seja igual a 1.
Dim varX As Variant
varX = DPesquisar("[NomeDaEmpresa]", _
"Transitários", "[CódigoDoTransitário] = 1")
O exemplo seguinte da tabela Transitários utiliza o controlo de formulário CódigoDoTransitário para fornecer critérios para a função DPesquisar. Note que a referência a este controlo não está incluída entre as aspas que denotam as cadeias. Isto garante que sempre que a função DPesquisar for chamada, o Microsoft Office Access 2007 irá obter o valor actual do controlo.
Dim varX As Variant
varX = DPesquisar("[NomeDaEmpresa]", "Transitários", _
"[CódigoDoTransitário] = " & Formulários!Transitários!CódigoDoTransitário)
O exemplo seguinte utiliza uma variável intSearch para obter o valor.
Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DPesquisar("[NomeDaEmpresa]", "Transitários", _
"[CódigoDoTransitário] = " & intSearch)