ACC: Como criar um valores principais N por grupo consulta

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

Neste artigo

Sumário

Este artigo mostra dois métodos que você pode usar para criar consultas que itens de lista somente a superior N por grupo. Usando qualquer um desses métodos, você pode criar uma consulta, por exemplo, que exibe apenas os cinco vendedores superior de cada região.

O segundo método descrito neste artigo presume que você esteja familiarizado com Visual Basic for Applications e com a criação de aplicativos do Microsoft Access usando as ferramentas de programação fornecidas com o Microsoft Access. Para obter mais informações sobre o Visual Basic for Applications, consulte sua versão do manual "Criando aplicativos com o Microsoft Access".

Mais Informações

Para listar apenas os principais itens N dentro de um grupo em uma consulta, você deve especificar um critério que lê a coluna de agrupamento na consulta dinamicamente e limita a coluna do item para os valores de N superior dentro de cada grupo. Método 1 usa uma subconsulta SQL para gerar dinamicamente uma lista dos principais itens N para cada grupo e, em seguida, usa essa lista como o critério para a coluna do item usando o operador IN. Método 2 usa uma função definida pelo usuário para retornar o item enésimo com um grupo específico, que, em seguida, é usado com a > = operador para retornar os itens de maiores e Nth.

Método 1

O exemplo a seguir mostra como criar uma consulta no banco de dados Northwind que exibe três UnidadesEmEstoque superior por categoria. A consulta usa uma subconsulta SQL, que retorna UnidadesEmEstoque três superior fornecido uma CategoryID específica, e em seguida, usa o operador IN para limitar os registros na consulta principal.

Observação: O exemplo de critérios na etapa 5, 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 os critérios.

  1. Abra o banco de dados de exemplo Northwind.mdb.
  2. Clique na guia consultas e, em seguida, clique em novo.
  3. Clique em modo Design e, em seguida, clique em OK.
  4. Na caixa de diálogo Mostrar tabela, adicione as categorias e produtos tabelas e, em seguida, clique em Fechar.
  5. Adicione os seguintes campos à grade da consulta:
    Campo : NomeDaCategoria
    Classificação: crescente

    Campo: ProductName

    Campo: UnidadesEmEstoque
    Classificação: decrescente
    Critérios: In (Selecionar primeiros 3 [UnidadesEmEstoque] de produtos onde _
    [CódigoDaCategoria] = [Categorias]. [CódigoDaCategoria] Order By [UnidadesEmEstoque] DESC)
  6. Execute a consulta. Observe que a consulta retorna UnidadesEmEstoque três principais para cada categoria.

Método 2

O exemplo a seguir demonstra como criar uma consulta no banco de dados Northwind que exibe os últimos cinco pedidos feitos por cliente. A consulta usa uma função de critérios chamada NthInGroup() retorna a DataDoPedido quinto mais recente fornecida um CustomerID específico. Usando o > = operador junto com essa função retorna todos os pedidos que foram encomendados em ou após a DataDoPedido quinto mais recente para cada cliente:

  1. Abra o banco de dados de exemplo Northwind.mdb.
  2. Crie um novo módulo e adicione a seguinte linha para a declaração seção caso ele não esteja lá:
    opção EXPLICIT
  3. Crie o seguinte procedimento:
          Function NthInGroup(GroupID, N)
          ' Returns the Nth Item in GroupID for use as a Top N per group
          ' query criteria.
          Static LastGroupId, LastNthInGroup
          Dim ItemName, GroupIDName, GDC, SearchTable
          Dim SQL As String, rs As Recordset, db As DATABASE
    
          If (LastGroupId = GroupID) Then
             ' Returned saved result if function is called with the
             ' same GroupID more than once in a row.
             NthInGroup = LastNthInGroup
          Else
             ' Set the SQL statement parameters. These are the only items
             ' that need to be customized in this function.
             ' Set to Item field name.
             ItemName = "OrderDate"
             ' Set to Group ID field name.
             GroupIDName = "CustomerID"
             ' GroupID Delimiter Character:
             ' For Text use "'" (Note that this is a quotation mark, a space,
             ' an apostrophe, a space, and then a quotation mark. The spaces
             ' are necessary for SQL statements), Date "#", Numeric ""
             GDC = "'"
             ' Set to search table.
             SearchTable = "Orders"
             ' Build a Top N SQL statement dynamically given N and
             ' GroupID as parameters. Note that the sort is by the
             ' item in descending order, in order to get the Top N
             ' largest items.
             SQL = "Select Top " & N & " [" & ItemName & "] "
             SQL = SQL & "From [" & SearchTable & "] "
             SQL = SQL & "Where [" & GroupIDName & "]=" & GDC & GroupID & GDC _
                & " "
             SQL = SQL & "Order By [" & ItemName & "] Desc"
             ' Open up recordset on Top N SQL statement and read the
             ' last record to get the smallest item in the Top N.
             Set db = CurrentDb()
             Set rs = db.OpenRecordset(SQL)
             If (rs.BOF And rs.EOF) Then
                ' No matches found, return a null.
                LastNthInGroup = Null
                LastGroupId = GroupID
                NthInGroup = LastNthInGroup
                Else
                   ' Return the smallest Top N item in the group.
                   rs.MoveLast
                   LastNthInGroup = rs(ItemName)
                   LastGroupId = GroupID
                   NthInGroup = LastNthInGroup
                 End If
              End If
    
           End Function
    						
  4. Compilar o módulo, em seguida, feche e salve o módulo como basTopN.
  5. Clique na guia consultas e, em seguida, clique em novo.
  6. Clique em modo Design e, em seguida, clique em OK.
  7. Na caixa de diálogo Mostrar tabela, adicione os clientes e as tabelas Pedidos. Clique em Fechar.
  8. Adicione os seguintes campos à grade da consulta:
    Campo : CustomerID
    Classificação: crescente


    Campos: CódigoDoPedido

    Campo: Data do pedido
    Classificação: decrescente
    Critérios: > = NthInGroup([Customers].[CustomerID],5)
  9. Execute a consulta. Observe que para todos os clientes que tenham pelo menos cinco pedidos, a consulta retorna os cinco pedidos mais recentes. Para clientes com menos de cinco pedidos, a consulta retorna todos os pedidos.

Referências

Para obter mais informações sobre subconsultas, procure subconsultas e subconsultas SQL usando o índice da Ajuda do Microsoft Access 97.

Propriedades

ID do artigo: 153747 - Última revisão: sexta-feira, 19 de janeiro de 2007 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Palavras-chave: 
kbmt kbhowto kbprogramming KB153747 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: 153747
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

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