ACC: Làm th? nào đ? t?o m?t Top N giá tr? cho m?i nhóm truy v?n

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 153747 - Xem s?n ph?m mà bài này áp d?ng vào.
V?a ph?i: Đ?i h?i v? mô cơ b?n, m? hóa, và k? năng kh? năng tương tác.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này cho th?y b?n hai phương pháp mà b?n có th? s? d?ng đ? t?o ra truy v?n mà danh sách ch? đ?u n kho?n m?c cho m?i nhóm. B?ng cách s? d?ng ho?c là m?t trong nh?ng phương pháp này, b?n có th? t?o m?t truy v?n, ví d?, mà hi?n th? các nhân viên bán ch? các hàng đ?u năm hàng cho m?i khu v?c.

Phương pháp th? hai đư?c mô t? trong bài vi?t này gi? đ?nh r?ng b?n đ? quen thu?c v?i Visual Basic cho các ?ng d?ng và v?i vi?c t?o ra Microsoft Access các ?ng d?ng b?ng cách s? d?ng các công c? l?p tr?nh đư?c cung c?p v?i Microsoft Access. Đ? bi?t thêm thông tin v? Visual Basic cho các ?ng d?ng, xin vui l?ng tham kh?o Phiên b?n c?a b?n tay "Xây d?ng ?ng d?ng v?i Microsoft Access".

THÔNG TIN THÊM

Vào danh sách ch? đ?u n các trong v?ng m?t nhóm trong m?t truy v?n, b?n ph?i xác đ?nh m?t tiêu chu?n mà t? đ?ng đ?c nhóm c?t trong truy v?n và gi?i h?n m?c c?t v?i n hàng đ?u các giá tr? trong m?i nhóm. Phương pháp 1 s? d?ng m?t subquery SQL đ? t? đ?ng t?o ra m?t danh sách các m?c n hàng đ?u cho m?i nhóm, và sau đó s? d?ng danh sách này là các tiêu chí cho các c?t m?c b?ng cách s? d?ng các nhà đi?u hành IN. Phương pháp 2 s? d?ng m?t ch?c năng ngư?i dùng đ?nh ngh?a đ? tr? l?i hàng th? n trong v?ng m?t nhóm c? th?, mà sau đó đư?c s? d?ng v?i các > = nhà đi?u hành đ? tr? v? n và các m?t hàng l?n hơn.

Phương pháp 1

Ví d? sau cho th?y b?n làm th? nào đ? t?o m?t truy v?n trong Northwind m?u s? d? li?u mà s? hi?n th? ba UnitsInStock hàng đ?u cho m?i CategoryID. S? d?ng các truy v?n SQL subquery, trong đó tr? v? ba UnitsInStock đ?u trang cho m?t CategoryID c? th?, và sau đó s? d?ng trong nhà đi?u hành đ? gi?i h?n các h? sơ trong truy v?n chính.

Lưu ?: trong ví d? tiêu chí trong bư?c 5, m?t g?ch dư?i (_) vào cu?i c?a m?t d?ng đư?c s? d?ng như m?t k? t? ti?p t?c d?ng. Lo?i b? g?ch dư?i t? cu?i d?ng khi tái t?o các tiêu chí.

  1. M? cơ s? d? li?u m?u Northwind.mdb.
  2. Nh?p vào tab truy v?n, và sau đó b?m m?i.
  3. B?m thi?t k? xem, và sau đó b?m OK.
  4. Trong h?p tho?i hi?n th? b?ng, thêm các lo?i và các s?n ph?m b?ng, và sau đó b?m đóng.
  5. Thêm các l?nh v?c sau đây vào đi?n lư?i truy v?n:
    L?nh v?c: CategoryName
    Lo?i: tăng d?n

    L?nh v?c: ProductName

    L?nh v?c: UnitsInStock
    Lo?i: gi?m d?n
    Tiêu chu?n: Trong (ch?n Top 3 [UnitsInStock] t? s?n ph?m nơi _
    [CategoryID] = [th? lo?i].[CategoryID] Th? t? b?i [UnitsInStock] Desc)
  6. Ch?y truy v?n. Lưu ? r?ng truy v?n tr? v? ba UnitsInStock đ?u trang cho m?i m?c.

Phương pháp 2

Ví d? sau đây ch?ng t? làm th? nào đ? t?o m?t truy v?n trong Northwind cơ s? d? li?u m?u có hi?n th? các đơn đ?t hàng cu?i năm đư?c đ?t cho m?i khách hàng. Truy v?n s? d?ng m?t ch?c năng tiêu chu?n đư?c g?i là NthInGroup() mà tr? v? các Th? năm m?i nh?t OrderDate đư?c đưa ra m?t CustomerID c? th?. B?ng cách s? d?ng các > = nhà đi?u hành cùng v?i ch?c năng này tr? v? t?t c? các đơn đ?t hàng đư?c đ?t hàng vào ngày ho?c sau OrderDate th? năm g?n đây nh?t cho m?i khách hàng:

  1. M? cơ s? d? li?u m?u Northwind.mdb.
  2. T?o m?t mô-đun m?i và thêm d?ng sau vào các khai báo ph?n n?u nó không ph?i là đ? có:
    L?a ch?n r? ràng
  3. T?o th? t?c sau đây:
          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. Biên d?ch các module, và sau đó đóng và lưu các mô-đun như basTopN.
  5. Nh?p vào tab truy v?n, và sau đó b?m m?i.
  6. B?m thi?t k? xem, và sau đó b?m OK.
  7. Trong h?p tho?i hi?n th? b?ng, thêm các khách hàng và các b?ng l?nh. Nh?p vào đóng.
  8. Thêm các l?nh v?c sau đây vào đi?n lư?i truy v?n:
    L?nh v?c: CustomerID
    Lo?i: tăng d?n


    L?nh v?c: OrderID

    L?nh v?c: Ngày đ?t hàng
    Lo?i: gi?m d?n
    Tiêu chí: > = NthInGroup ([khách]. [CustomerID], 5)
  9. Ch?y truy v?n. Lưu ? r?ng cho t?t c? khách hàng nh?ng ngư?i có ít năm đơn đ?t hàng, truy v?n tr? v? các đơn đ?t hàng năm g?n đây nh?t. Cho khách hàng v?i đơn đ?t hàng ít hơn năm, truy v?n tr? v? t?t c? các đơn đ?t hàng.

THAM KH?O

Đ? bi?t thêm chi ti?t v? subqueries, t?m ki?m subqueries, và sau đóSQL subqueries b?ng cách s? d?ng ch? m?c tr? giúp Microsoft truy c?p 97.

Thu?c tính

ID c?a bài: 153747 - L?n xem xét sau cùng: 18 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Access 97 Standard Edition
T? khóa: 
kbhowto kbprogramming kbmt KB153747 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:153747
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

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