DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 285866 - Última revisão: segunda-feira, 29 de janeiro de 2007 - Revisão: 5.3

 
Iniciante: Requer conhecimento da interface do usuário em computadores de usuário único.

Este artigo se aplica a um banco de dados do Microsoft Access (.mdb) e para um projeto Microsoft Access (.adp).

Para uma versão deste artigo do Microsoft Access 2000, consulte 208786  (http://support.microsoft.com/kb/208786/EN-US/ ) .
Para um Microsoft Access 97 ou 95 versão deste artigo, consulte 136122  (http://support.microsoft.com/kb/136122/ ) .

Sumário

Este artigo mostra como usar a função DLookup() e inclui exemplos e dicas.

Os tópicos a seguir são abordados neste artigo:
  • A sintaxe da função DLookup() e o uso.
  • Os DLookup() função exemplos a seguir:
    • Uma função com nenhum critério
    • Especificar critérios numéricos
    • Especificar critérios numéricos que vem de um campo em um formulário
    • Especificar critérios textuais
    • Especificando um critério textual oriundo de um campo em um formulário
    • Especificar critérios de data
    • Especificando vários campos nos critérios
  • Dicas para solução de problemas e depuração DLookup() expressões.
Observe que muitas dificuldades em usar a função DLookup() acontecer quando não configurar e fornecer a expressão de critério corretamente. A expressão de critério é comum para muitos outro agregar funções (totais), tais como DSum() , DFirst() , DLast() , DMin() , DMax() e DCount() . Portanto, o material a seguir é útil para ajudar você a entender as funções agregadas de domínio, bem como a função DLookup() .

Mais Informações

A sintaxe de função DLookup() e uso

Você pode usar a função DLookup() em uma expressão ou em um Visual Basic for Applications função para retornar um valor de campo em um domínio ou conjunto de registros especificado.

A sintaxe da função DLookup() é da seguinte maneira:
   DLookup(Expression, Domain [, Criteria])
				
a função possui três argumentos: expressão , domínio e critérios (Observe que o argumento de critérios é opcional).

Você usar o argumento expressão para identificar o campo que contém os dados no domínio que você deseja retornado ou para cálculos usando os dados desse campo.

O argumento de domínio é o nome do conjunto de registros que identifica o domínio. Pode ser uma tabela ou consulta.

O argumento de critérios é uma expressão de seqüência de caracteres opcional que você pode usar para restringir o intervalo de dados no qual a função DLookup() é executada. Observe que o argumento de critérios é idêntico à cláusula WHERE em uma expressão SQL (exceto que você não usar a palavra-chave WHERE).

A função DLookup() retorna um valor de um único campo, mesmo se mais de um registro satisfaça aos critérios. Se nenhum registro satisfizer o critério ou se o domain não contiver registros, DLookup() retornará um nulo.

Exemplos de função DLookup()

Os exemplos a seguintes demonstram como você pode usar DLookup() para localizar ou retornar valores de uma tabela ou consulta. Esses exemplos consulte o banco de dados de exemplo Northwind.mdb, e você pode inserir os exemplos na propriedade origem do controle de uma caixa de texto em um formulário ou relatório.

Observação : em expressões de exemplo a seguir, um sublinhado (_) no final de uma linha é usado como um caractere de continuação de linha. Remova o sublinhado do final da linha quando recriar essas expressões.

Funções com nenhum critério:

Este exemplo demonstra como usar a função DLookup() em sua forma mais simples, sem especificar qualquer critério. Este exemplo retorna o valor contido no campo Sobrenome do primeiro registro na tabela Funcionários:
   =DLookup("[LastName]", "Employees")
				

Especificar critérios numéricos:

Para encontrar o sobrenome do funcionário com número de identificação 7, especificar critérios para limitar o intervalo de registros usada:
   =DLookup("[LastName]", "Employees", "[EmployeeID] = 7")
				

Especificar critérios numéricos que trata de um campo em um formulário:

Se você não deseja especificar um valor específico na expressão (como no exemplo anterior), use um parâmetro nos critérios de. Os exemplos a seguintes demonstram como especificar critérios de outro campo no formulário atual. Você pode tentar essas no formulário Pedidos no banco de dados de exemplo Northwind.mdb.
   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = Form![EmployeeID]")

   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = " & [EmployeeID])

   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = " & Forms![Orders]![EmployeeID])
				
esses três exemplos retornam os mesmos resultados.

No primeiro exemplo, formulário! [EmployeeID] aparece entre aspas dos critérios. "Formulário" informa ao Microsoft Access que vem a referência de campo, "EmployeeID", do formulário atual. Se você omiti-lo, o Microsoft Access compara CódigoDoFuncionário a mesmo na tabela Funcionários e retorna o sobrenome do primeiro registro na tabela Funcionários (o mesmo resultado como se você não especificou nenhum critério). Isso ocorre porque o primeiro registro na tabela Funcionários tem um 1 no campo CódigoDoFuncionário, portanto, o argumento:
   "[EmployeeID] = [EmployeeID]"
				
calcula a:
   "1 = 1"
				
e, portanto, seria o primeiro registro que correspondem os critérios.

Os critérios para os outros dois exemplos são feitos pela concatenação de duas expressões de seqüência de caracteres com um e comercial (&). No terceiro exemplo, os critérios termina com uma referência de campo de formulário.

Quando critérios são avaliados, as partes individuais dos critérios são avaliadas primeiro e acrescentada ou concatenados e, em seguida, o valor inteiro é calculado.

Se o valor atual no campo CódigoDoFuncionário no formulário Pedidos é 7, a expressão de critério original
   "[EmployeeID] = " & [EmployeeID]
				
deve calcular para
   "[EmployeeID] = " & 7
				
que, quando concatenadas, calcula a:
   "[EmployeeID] = 7"
				
se você não especificar a referência de formulários completo (como no segundo exemplo acima), Microsoft Access presumirá que você está se referindo ao formulário atual.

O exemplo a seguir é um derivativo do terceiro exemplo acima:
   =DLookup("[LastName]", "Employees", _
      "[EmployeeID] = Forms![Orders]![EmployeeID]")
				
neste exemplo, a referência completa de formulários é colocada entre aspas dos critérios. Nesse caso, o Microsoft Access corretamente procura o valor quando o formulário for aberto pela primeira vez, mas somente até que o campo CódigoDoFuncionário seja alterado por modificações para um registro ou a adição de um registro. Microsoft Access não recalcular automaticamente o novo funcionário último nome valor após uma alteração. Você pode manualmente recalcular a expressão posicionando o ponto de inserção no controle e pressionando F9.

Se você deseja que o campo Atualizar automaticamente quando os critérios for alterado, fazer os critérios de uma variável usando o método de concatenar partes da expressão conforme descrito anteriormente. Observe que quando você move para um novo registro, DLookup() caixas de texto que a atualização automaticamente terá # erro neles até que você digite algo na caixa de texto CódigoDoFuncionário.

Especificando critérios textuais:

Todos os exemplos anteriores demonstram como usar a função DLookup() com critérios numéricos. Se os campos de critérios são texto, coloque o texto entre aspas simples, como no exemplo a seguir:
   =DLookup("[Title]", "Employees", "[LastName] = 'Callahan'")
				
anotação que você pode usar aspas duplas em vez de aspas simples, embora entre aspas simples são preferidos. Use duas aspas duplas para substituir uma aspa simples. O exemplo a seguir usa aspas duplas e é equivalente do exemplo acima:
   =DLookup("[Title]", "Employees", "[LastName] = ""Callahan""")
				

Especificando critérios textuais que trata de um campo em um formulário:

O exemplo a seguir demonstra como localizar o nome do contato para um cliente no formulário Pedidos. O campo CódigoDoCliente é um campo chave textual para os critérios, portanto, é a instrução DLookup() :
   =DLookup("[ContactName]", "[Customers]", _
      "[CustomerID]='" & [CustomerID] & "'")
				
- ou -
   =DLookup("[ContactName]", "[Customers]", _
      "[CustomerID]='" & Forms![Orders]![CustomerID] & "'")
				
No segundo exemplo, os critérios é criado pela concatenação três expressões de seqüência de caracteres. A primeira é "[CódigoDoCliente] = '", o segundo é o valor contido no campo CódigoDoCliente real e o terceiro é a único aspas entre aspas duplas.

Quando esse critério é avaliada, primeiro as partes individuais são avaliadas e seus resultados acrescentado ou concatenadas. O valor inteiro, em seguida, é calculado.

Se o valor atual selecionado na combo box CustomerID no formulário Pedidos é Alfreds Futterkiste, a coluna acoplada da caixa de combinação retorna ALFKI como CustomerID. Expressão de critério original
   "[CustomerID] = '" & [CustomerID] & "'"
				
for avaliada como
   "[CustomerID] = '" & "ALFKI" & "'"
				
que, quando concatenadas, avalia como
   "[CustomerID] = 'ALFKI'"
				

Especificar critérios de data:

Se os campos de critérios são valores de data ou hora, coloque o valor de data ou hora sinais numéricos (#). Para localizar um funcionário cujo aniversário está em uma data especificada, use os critérios de exemplo a seguir:
   =DLookup("[LastName]", "Employees", "[BirthDate] = #12-08-68#")
				

Especificando vários campos de critérios de:

A expressão de critério pode ser qualquer cláusula SQL WHERE válida (sem a palavra-chave WHERE). Isso significa que mais de um campo pode ser usado para especificar critérios para uma função DLookup() .

Para localizar CódigoDoPedido para um dos pedidos vendido por funcionário "Andrew Pereira" com um CódigoDoFuncionário de 2 (numérico) para cliente "Simons bistro" com um CustomerID de SIMOB (texto), use a seguinte instrução DLookup() exemplo:
   =DLookup("[OrderID]", "Orders", _
      "[CustomerID] = 'SIMOB' And [EmployeeID] = 2")
				
esta instrução retorna CódigoDoPedido 10556, que é o primeiro CódigoDoPedido que corresponde aos critérios. CódigoDoPedido 10669 também corresponde aos critérios.

O exemplo acima usa valores de CustomerID e EmployeeID embutida ou específicos. Para usar variáveis em vez de valores específicos para os critérios, você pode usar o Visual Basic for Applications para concatenar várias expressões de seqüência. O exemplo do Visual Basic a seguir demonstra esse método:
Sub subTest
    'Declare the variables.
    Dim CustID As String
    Dim EmpID As Long
    Dim Result

    'Assign values to the variables to be used in the criteria.
    CustID = "SIMOB"
    EmpID = 2
    Result = DLookup("[OrderID]", "Orders", _
             "[CustomerID] = '" & CustID & "' And [EmployeeID] = " & EmpID)

   MsgBox Result
End Sub
				
se a função DLookup() estiver sem êxito, o resultado variável contém um nulo.

Observe que os critérios é composto de quatro partes que são avaliados individualmente. Os resultados são acrescentados e avaliados como um todo. Expressão de critério original:
   "[CustomerID] = '" & CustID & "' And [EmployeeID] = " & EmpID
				
for avaliada como
   "[CustomerID] = '" & "SIMOB" & "' And [EmployeeID] = " & 2
				
que, quando concatenadas, avalia como
   "[CustomerID] = 'SIMOB' And [EmployeeID] = 2"
				
você pode usar o exemplo a seguir para localizar um funcionário cujo aniversário estiver na data de hoje:
   =DLookup("[LastName]", "Employees", _
      "Month([BirthDate]) = " & Month(Date) & " And Day([BirthDate]) _
      = " & Day(Date))
				
se hoje for 2/12/2001, a expressão de critério original
   "Month([BirthDate]) = " & Month(Date) & " And Day([BirthDate]) = " _
      & Day(Date)
				
for avaliada como
   "Month([BirthDate]) = " & 12 & " And Day([BirthDate]) = " & 2
				
que, quando concatenadas, avalia como
   "Month([BirthDate]) = 12 And Day([BirthDate]) = 2"
				

Dicas para solução de problemas e depuração DLookup() expressões

Para solucionar problemas de expressões, divida a expressão em componentes menores e testar os componentes individualmente dentro a janela imediata para garantir que eles funcionem corretamente. Se os componentes menores funcionarem corretamente, você pode colocá-los novamente juntos, parte por parte, até que a expressão final funcione corretamente.

A janela Imediata pode ser usada para ajudar a depurar os módulos do Visual Basic. Use a janela imediata para testar e avaliar expressões independentemente do formulário ou a macro em que a expressão é usada. Você pode configurar expressões na janela imediata, executá-los e ver imediatamente os resultados.

O exemplo a seguir demonstra uma estratégia para dividir uma expressão DLookup() em componentes menores que você pode testar na janela imediata. Suponha que você tiver dificuldades com a instrução a seguir:
   =DLookup("[OrderID]", "Orders", _
      "[CustomerID] = '" & Forms![MyForm]![CustomerID] _
      & "' And [EmployeeID] = " & Forms![MyForm]![EmployeeID])
				
Observação que o critério inclui vários campos nos critérios de pesquisa, um dos quais é numérico e um dos quais é texto.

Para solucionar essa expressão, tente o seguinte:
  1. Pressione CTRL+G para abrir a janela imediata.
  2. Teste a função com nenhum critério. Para fazer isso, digite o seguinte na janela imediata e, em seguida, pressione ENTER:
    ? DLookup("[OrderID]", "Orders")
    					
  3. Verifique se as referências de formulários estão corretas. Para fazer isso, abra o formulário Pedidos no banco de dados de exemplo Northwind.mdb e insira cada um dos seguintes linhas na janela imediata. Pressione ENTER após cada linha.
    ? Forms![MyForm]![CustomerID]
    					
    - e -
    ? Forms![MyForm]![EmployeeID]
    					
  4. Tente obter os campos de critérios para trabalho independentemente por valores de codificação de disco rígidos para a expressão. Para fazer isso, digite cada uma das seguintes linhas na janela imediata e pressione ENTER após cada:
    ? DLookup("[OrderID]", "Orders", "[CustomerID] = 'SIMOB'")
    					
    - e -
    ? DLookup("[OrderID]", "Orders", "[EmployeeID] = 2)
    					
  5. Tente obter os campos de critérios para trabalhar independentemente com um parâmetro na consulta. Para fazer isso, digite cada uma das seguintes na janela imediata e pressione ENTER após cada um:
    ? DLookup("[OrderID]", "Orders", _
       "[CustomerID] = '" & Forms![MyForm]![CustomerID] & "'")
    					
    - e -
    ? DLookup("[OrderID]", "Orders", _
       "[EmployeeID] = " & Forms![MyForm]![EmployeeID])
    					

A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbmt kbprogramming kbfunctions kbdta kbfaq kbhowto KB285866 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 285866  (http://support.microsoft.com/kb/285866/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store