ACC: Bagaimana untuk menciptakan nilai atas n per kelompok Query

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 153747 - Melihat produk di mana artikel ini berlaku.
Moderat: Memerlukan dasar makro, coding, dan interoperabilitas keterampilan.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan Anda dua metode yang dapat Anda gunakan untuk menciptakan kueri yang Daftar hanya atas n item per kelompok. Dengan menggunakan salah satu dari metode ini, Anda dapat membuat permintaan, misalnya, yang menampilkan hanya atas lima penjual untuk setiap wilayah.

Metode kedua yang dijelaskan dalam artikel ini mengasumsikan bahwa Anda sudah familiar dengan Visual Basic untuk aplikasi dan dengan menciptakan Microsoft Access aplikasi yang menggunakan perangkat pemrograman yang disediakan dengan Microsoft Access. Untuk informasi lebih lanjut tentang Visual Basic untuk aplikasi, silakan merujuk ke Versi manual "Bangunan aplikasi dengan Microsoft Access".

INFORMASI LEBIH LANJUT

Untuk daftar hanya item n atas grup dalam permintaan, Anda harus menentukan kriteria yang secara dinamis membaca kolom pengelompokan dalam permintaan dan batas-batas kolom item ke n atas nilai dalam setiap kelompok. Metode 1 menggunakan SQL subquery untuk secara dinamis menghasilkan daftar item n atas untuk setiap kelompok, dan kemudian menggunakan daftar ini sebagai kriteria untuk kolom item menggunakan IN operator. Metode 2 menggunakan fungsi ditetapkan pengguna untuk kembali ke-N item dalam kelompok tertentu, yang kemudian digunakan dengan mengatakan = operator untuk kembali ke-N dan barang-barang yang lebih besar.

Metode 1

Contoh berikut menunjukkan kepada Anda bagaimana untuk membuat permintaan di Northwind Contoh database yang menampilkan UnitsInStock tiga atas per CategoryID. Menggunakan query SQL subquery, yang mengembalikan UnitsInStock tiga atas Mengingat CategoryID tertentu, dan kemudian menggunakan dalam operator untuk membatasi Catatan dalam permintaan utama.

Catatan: dalam contoh kriteria dalam langkah 5, garis bawah (_) pada akhir baris digunakan sebagai karakter baris-kelanjutan. Menghapus garis bawah dari akhir baris ketika menciptakan kembali kriteria.

  1. Buka database contoh Northwind.mdb.
  2. Klik tab query, dan kemudian klik baru.
  3. Klik Lihat desain, dan kemudian klik OK.
  4. Di kotak dialog menunjukkan meja, tambahkan Kategori dan produk meja, dan kemudian klik Tutup.
  5. Menambahkan kolom berikut ke grid permintaan:
    Bidang: CategoryName
    Semacam: naik

    Bidang: ProductName

    Bidang: UnitsInStock
    Semacam: menurun
    Kriteria: Di (memilih atas 3 [UnitsInStock] dari produk di mana _
    [CategoryID] = [Kategori].[CategoryID] Order By Desc [UnitsInStock])
  6. Menjalankan query. Perhatikan bahwa permintaan kembali tiga UnitsInStock atas untuk setiap kategori.

Metode 2

Contoh berikut menunjukkan cara membuat permintaan di Northwind Contoh database yang menampilkan terakhir lima pesanan ditempatkan per pelanggan. Query menggunakan fungsi kriteria yang disebut NthInGroup() yang kembali kelima terbaru OrderDate diberikan CustomerID khusus. Menggunakan mengatakan = operator bersama dengan fungsi ini mengembalikan semua perintah yang diperintahkan pada atau setelah OrderDate kelima terbaru untuk setiap pelanggan:

  1. Buka database contoh Northwind.mdb.
  2. Membuat modul baru dan tambahkan baris berikut ke Deklarasi bagian jika tidak sudah ada:
    Option Explicit
  3. Membuat prosedur berikut:
          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. Mengkompilasi modul, dan kemudian menutup dan menyimpan modul sebagai basTopN.
  5. Klik tab query, dan kemudian klik baru.
  6. Klik Lihat desain, dan kemudian klik OK.
  7. Di kotak dialog menunjukkan meja, tambahkan pelanggan dan pesanan tabel. Klik Tutup.
  8. Menambahkan kolom berikut ke grid permintaan:
    Bidang: CustomerID
    Semacam: naik


    Bidang: nomorPesanan

    Bidang: Tanggal pemesanan
    Semacam: menurun
    Kriteria: mengatakan = NthInGroup ([tamu]. [CustomerID], 5)
  9. Menjalankan query. Catatan bahwa untuk semua pelanggan yang memiliki setidaknya lima pesanan, query kembali perintah terakhir lima. Untuk pelanggan dengan kurang dari lima perintah, query kembali semua perintah.

REFERENSI

Untuk informasi lebih lanjut tentang subqueries, Cari subqueries, dan kemudianSQL subqueries menggunakan Microsoft Access 97 Index bantuan.

Properti

ID Artikel: 153747 - Kajian Terakhir: 15 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Access 97 Standard Edition
Kata kunci: 
kbhowto kbprogramming kbmt KB153747 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:153747
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

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