Como usar caixas de combinação parametrizadas em um projeto do Access

Traduções deste artigo Traduções deste artigo
ID do artigo: 281870 - Exibir os produtos aos quais esse artigo se aplica.
Moderado: Requer básica de macro, codificação e interoperabilidade habilidades.

Este artigo se aplica somente a um projeto Microsoft Access (.adp).

Expandir tudo | Recolher tudo

Neste artigo

Sumário

Caixas de combinação fornecem uma boa maneira de apresentar uma lista de opções para um usuário. Se a fonte de linha de uma caixa de combinação precisa ser baseado em um subconjunto de registros de uma tabela ou consulta, você pode adicionar uma cláusula WHERE para limitar as opções.

O exemplo neste artigo adiciona uma caixa de combinação no formulário clientes no projeto de exemplo NorthwindCS.adp. A caixa de combinação lista as ordens que são colocadas por cliente atual. Quando selecionado, a pedidos formulário abre, mostrando os detalhes da ordem selecionada.

Você pode usar quatro métodos diferentes para produzir uma lista de correspondência de ordens que são colocados por um cliente. Esses métodos usam um projeto do Access (.adp) com o Microsoft SQL Server 2000 como a fonte de dados. Esses métodos são descritos na próxima seção.

Mais Informações

Criar a caixa de combinação

Esta seção mostra como criar primeiro uma caixa de combinação no formulário clientes que exibe uma lista dos pedidos do cliente atual.
  1. Abra o formulário Customers no modo Design.
  2. Na caixa de ferramentas, clique em Assistentes de controle e, em seguida, adicione uma caixa de combinação ao formulário.
  3. Na primeira página do assistente, selecione para pesquisar valores em uma tabela ou consulta e, em seguida, clique em Avançar .
  4. Na segunda página do assistente, clique na tabela Pedidos e, em seguida, clique em Avançar .
  5. Na terceira página do assistente, adicione OrderID, CustomerID e OrderDate como campos na caixa de combinação e, em seguida, clique em Avançar .
  6. Na quarta página do assistente, clique para limpar Ocultar coluna chave e, em seguida, reduzir a coluna CustomerID para que ele não fique visível. Clique em Avançar .
  7. Na página quinta do assistente, clique em Avançar novamente para aceitar CódigoDoPedido como o campo para armazenar ou usar em seu banco de dados.
  8. Na sexta página do assistente, selecione para lembrar o valor para uso posterior e em seguida, clique em Avançar .
  9. Na última página do assistente, a caixa de combinação Selecionar ordem de rótulo e clique em Concluir .
  10. Abra a folha de propriedades da caixa de combinação e, em seguida, altere o nome da caixa de combinação para SelectOrderCombo .
  11. Defina a propriedade OnClick da caixa de combinação para o seguinte procedimento de evento:
    Private Sub SelectOrderCombo_Click()
    On Error GoTo Err_SelectOrderCombo_Click
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "Orders"
    
        stLinkCriteria = "[OrderID]=" & Me![SelectOrderCombo]
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    Exit_SelectOrderCombo_Click:
        Exit Sub
    
    Err_SelectOrderCombo_Click:
        MsgBox Err.Description
        Resume Exit_SelectOrderCombo_Click
    
    End Sub
    					

Adicionando o código para atualizar a caixa de combinação

Esta seção mostra os métodos que você pode usar para atualizar a caixa de combinação. Selecione um dos quatro métodos a seguir e, em seguida, adicione o código apropriado ao evento AoEntrar da caixa de combinação.

Para métodos 1 e 2, toda vez que a caixa de combinação está selecionada, o evento OnClick redefine a fonte de linha para a caixa de combinação para exibir apenas a pedidos que correspondem ao cliente atual.

Observação : como o campo CódigoDoCliente for um campo texto, aspas simples (') deve ser concatenadas em torno a referência de formulários. Por exemplo, a cláusula WHERE gerada é convertida de:
WHERE CustomerID = '" & Forms![Customers]![CustomerID] & "'"
				
para:
WHERE CustomerID = 'ALFKI'
				

Método 1: Usar ad Hoc selecione

Defina a propriedade AoEntrar da caixa de combinação como o seguinte procedimento de evento:
Me.SelectOrderCombo.RowSource = "SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate FROM Orders WHERE " _
     & "CustomerID = '" & Forms![Customers]![CustomerID] & "' ORDER BY OrderDate DESC"

				

Método 2: Usando um modo de servidor SQL

  1. Crie um novo modo de exibição no modo de exibição Designer e, em seguida, selecione o OrderID, CustomerID e os campos DataDoPedido da tabela Pedidos. Para classificar a lista de pedidos do mais recente ao mais antigo, defina o Tipo de classificação para o campo DataDoPedido como Decrescente .
  2. Salve o modo de exibição como vwCustomerOrders.
  3. Defina a propriedade AoEntrar da caixa de combinação como o seguinte procedimento de evento:
    Me.SelectOrderCombo.RowSource = "SELECT * FROM vwCustomerOrders WHERE CustomerId = '" & Forms![Customers]![CustomerID] & "'"
    					
Para métodos 3 e 4, a caixa de combinação método Requery é chamada no evento AoEntrar para executar novamente um procedimento armazenado ou função SQL para retornar os registros correspondentes. Nestes exemplos, o parâmetro é definido como um controle no formulário usando @ nomedocontrole nos critérios. O Access automaticamente avalia os critérios e solicita os registros correspondentes.

Nos exemplos a seguir, a caixa de combinação retorna uma lista de todas as ordens para o cliente atual. Porque a caixa de texto CódigoDoCliente contém o código atual do cliente, você pode referenciar diretamente na caixa de texto de CustomerID procedimento armazenado ou critérios de função SQL.

Método 3: Usando um servidor SQL procedimento armazenado

  1. Crie um novo procedimento no designer do gráfico.
  2. Selecione a tabela Pedidos e adicione o OrderID, CustomerID e os campos DataDoPedido para o procedimento armazenado.
  3. Digite @ CustomerID como o critério para o campo CódigoDoCliente e a classificação o campo de DataDoPedido decrescente.
  4. Salve o procedimento armazenado como spCustomerOrders e fechá-lo.
  5. Defina o procedimento armazenado spCustomerOrders como a fonte de linha para a caixa de combinação.

    Observação : A seguinte instrução SQL é criada e salvo pelo armazenados procedimento Designer:
    CREATE PROCEDURE dbo.spCustomerOrders
      (@CustomerID varchar(5))
      AS SELECT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC
    					
  6. Defina a propriedade AoEntrar da caixa de combinação como o seguinte procedimento de evento:
    Me.SelectOrderCombo.Requery
    					

Método 4: Usar uma função SQL Server 2000

Você só pode usar esse método se o projeto do Access estiver usando o SQL Server 2000 ou posterior como a fonte de dados.
  1. Crie uma função no designer do gráfico.
  2. Selecione a tabela Pedidos e adicione o OrderID, CustomerID e os campos DataDoPedido para o procedimento armazenado.
  3. Digite @ CustomerID como o critério para o campo CódigoDoCliente e a classificação o campo de DataDoPedido decrescente.
  4. Salve a função como fnCustomerOrders e fechá-lo.
  5. Defina a função fnCustomerOrders como a fonte de linha para a caixa de combinação.

    Observação : A seguinte instrução SQL é criada e salvo pelo armazenados procedimento Designer:
    CREATE FUNCTION dbo.fnCustomerOrders
      (@CustomerID varchar(5))
      RETURNS TABLE
      RETURN ( SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC )
    					
  6. Defina a propriedade AoEntrar da caixa de combinação como o seguinte procedimento de evento:
    Me.SelectOrderCombo.Requery
    					
Para testar esses métodos, abra o formulário e selecione a ordem selecionar caixa de combinação. O evento AoEntrar repetirá a consulta a caixa de combinação, gerar automaticamente uma lista de ordens para o cliente atual. Quando um pedido é selecionado, o evento OnClick da caixa de combinação é executado e o formulário Pedidos é aberto, exibindo a ordem selecionada.

Propriedades

ID do artigo: 281870 - Última revisão: quarta-feira, 11 de agosto de 2004 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbmt kbprogramming kbadp kbclientserver kbhowto KB281870 KbMtpt
Traduçã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: 281870

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com