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

Ö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
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Orta: temel makro, kodlama ve birlikte çalışabilirlik becerileri gerektirir.
Ö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.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 153747 - Son İnceleme: 12/04/2015 15:04:28 - Düzeltme: 3.3

Microsoft Access 95 Standard Edition, Microsoft Access 97 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto kbprogramming KB153747 KbMttr
Geri bildirim