ACC: nasıl Grup Query her bir <a1>üst</a1> N değerleri oluştur

Makale çevirileri Makale çevirileri
Makale numarası: 153747 - Bu makalenin geçerli olduğu ürünleri görün.
Orta: temel makro, kodlama ve birlikte çalışabilirlik becerileri gerektirir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, bu <a1>Liste</a1> yalnızca üst N madde grubu bazında sorguları oluşturmak için kullanabileceğiniz iki yöntem gösterilmektedir. Bu yöntemlerden birini kullanarak, bir sorgu oluşturabilirsiniz, örneğin, her bölge için yalnızca üst beş satışçılar görüntüler.

Bu makalede açıklanan ikinci yöntem, Visual Basic for Applications ve programlama Microsoft Access ile sağlanan araçları kullanarak Microsoft Access uygulamaları oluşturma bildiğinizi varsayar. Hakkında daha fazla bilgi için Visual Basic for Applications "Building uygulamaları ile Microsoft Access" el ile sürümü için bkz.

Daha fazla bilgi

Gruptaki bir sorguda yalnızca en üst N maddeleri listelemek için dinamik olarak gruplandırma sütunun sorgudaki okur ve üst N değerleri her bir grup içindeki madde sütuna sınırlayan ölçütü belirtmeniz gerekir. Yöntem 1, dinamik olarak her grup için üst N maddelerin bir listesini oluşturmak için SQL alt sorgu kullanır ve sonra bu listeyi, IN işleci kullanarak maddenin sütun için ölçüt olarak kullanır. Yöntem 2'kullanıcı tanımlı bir işlevini kullanan sonra kullanılan belirli bir grup dahilindeki N. maddeyi iade > = işlecini nth ve büyük öğeleri geri dönün.

Yöntem 1

Aşağıdaki örnek, Northwind örnek veritabanındaki Categoryıd başına bir üst üç StokBirimleri görüntüleyen bir sorgu oluşturmak gösterilmiştir. Sorgu, belirli bir Categoryıd verilen üst üç StokBirimleri döndüren bir SQL sorgu kullanır ve ana sorgu kayıtlarını sınırlamak için IN işleci kullanır.

Not: adım 5'de ölçüt örnekte, satır devam karakter olarak bir satır sonunda alt çizgi (_) olarak kullanılır. Ölçütleri yeniden açtığınızda, alt çizgi satır sonundan kaldırın.

  1. Northwind.mdb örnek veritabanını açın.
  2. Sorgular sekmesini tıklatın ve sonra da yeni'yi tıklatın.
  3. Tasarım görünümü'nü tıklatın ve sonra da Tamam'ı tıklatın.
  4. Tablo Göster iletişim kutusunda, kategoriler ve ürünler ekleme tablolar ve sonra Kapat'ı tıklatın.
  5. Aşağıdaki alanlar, sorgu tasarım kılavuzuna ekleyin:
    Field: CategoryName
    Sıralama: artan

    Alanı: ProductName

    Alanı: StokBirimleri
    Sıralama: azalan
    Ölçüt: Gelen (<a1>üst</a1> <a1>3</a1> [StokBirimleri] ürünler Seç WHERE _
    [KategoriNo] [kategoriler] =. [KategoriNo] ORDER BY [StokBirimleri] aza)
  6. Sorguyu çalıştırın. Sorguyu her kategorinin üst olarak üç StokBirimleri döndürmesidir unutmayın.

Yöntem 2

Aşağıdaki örnek, Northwind örnek veritabanındaki müşteri yerleştirilen son beş siparişleri görüntüler, bir sorgu oluşturmak gösterilmiştir. Sorgu, beşinci en son sipariş tarihi belirli bir müşteri kimliği verilen döndüren NthInGroup() adlı bir ölçüt işlevi kullanır. Kullanarak > = birlikte, bu işlev, işleç veya daha sonra beşinci en son sipariş tarihi, her müşteri için sipariş edilen tüm siparişlerini verir:

  1. Northwind.mdb örnek veritabanını açın.
  2. Yeni bir modül oluşturun ve aşağıdaki satırı için tanımlamalar eklemek zaten yoksa bölümünde:
    Seçenek Belirtik
  3. Aşağıdaki yordamı oluşturun:
          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. Modül, derleme kapatın ve modül basTopN kaydedin.
  5. Sorgular sekmesini tıklatın ve sonra da yeni'yi tıklatın.
  6. Tasarım görünümü'nü tıklatın ve sonra da Tamam'ı tıklatın.
  7. Tablo Göster iletişim kutusunda, müşteriler ve Siparişler tablolarını ekleyin. Kapat'ı tıklatın.
  8. Aşağıdaki alanlar, sorgu tasarım kılavuzuna ekleyin:
    Field: MüşteriNo
    Sıralama: artan


    Alanı: Sipariş Kimliği

    Alanı: Sipariş tarihi
    Sıralama: azalan
    Ölçüt: > NthInGroup([Customers].[CustomerID],5) =
  9. Sorguyu çalıştırın. En az beş siparişlerinin tüm müşteriler için en son beş siparişleri sorgu döndürmesidir unutmayın. Beşten az siparişlerini olan müşteriler için sorgu tüm siparişlerini döndürür.

Referanslar

Alt sorgular hakkında daha fazla bilgi için alt sorgular ve Microsoft Access 97 Yardım dizinini kullanarak SQL alt sorgular için arama.

Özellikler

Makale numarası: 153747 - Last Review: 19 Ocak 2007 Cuma - Gözden geçirme: 3.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbprogramming KB153747 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:153747
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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