Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

3/9/11

Ẩn những giá trị trùng lắp

Bài viết này hướng dẫn bạn kết hợp thuộc tính Visible với HideDuplicate để ẩn giá trị lặp đi lặp lại trên một báo cáo. Trong cơ sở dữ liệu, các báo cáo làm từ quan hệ 1-n dẫn đến tên mã hàng lặp đi lặp lại thế này:
[Hình: DupeNoHide.png]

Thuộc tính HideDuplicate cho phép ẩn đi các ô OrderID, OrderDate, và CompanyName cho ta report dễ đọc hơn nhưng không hoàn toàn đúng
[Hình: DupeHide.png]

Date và Company ở order 10617 bị biến mất. TƯơng tự , Company ở Order 10619 cũng bị mất. Vấn đề đặt ra làm thế nào ngăn được những trường hợp này? Tức là cho phép hiện ra nếu nó là 1 OrderID mới.



Khi Access ẩn các ô bị trùng, nó thiết lập thuộc tính IsVisible cho đối tượng đó. Bằng cách kiểm tra thuộc tính này của ô OrderID, ta biết được nó có phải là Order mới không!
Ta set thuộc tính cho ô txtOrderDate như sau:
Mã:
Control Source :    =IIf(OrderID.IsVisible,[OrderDate],Null)
Hide Duplicates :    No
Chú ý, tên của textbox không được trùng với tên của record source.

Tương tự, ta set thuộc tính cho ô txtCompany
Mã:
=IIf(OrderID.IsVisible,[CompanyName],Null)

Và report của ta sẽ như thế này:
[Hình: DupeHideAndIsVisible.png]

Nếu bạn làm thử 1 report từ dữ liệu Nortwind, bạn dùng query sau:
Mã:
SELECT Orders.OrderID, Orders.OrderDate, Customers.CompanyName, [Order Details].ProductID, Products.ProductName, [Order Details].Quantity
FROM Products INNER JOIN ((Customers INNER JOIN Orders ON Customers.CustomerID=Orders.CustomerID) INNER JOIN [Order Details]
  ON Orders.OrderID=[Order Details].OrderID) ON Products.ProductID=[Order Details].ProductID
WHERE Orders.OrderID > 10613
ORDER BY Orders.OrderID;

Dịch từ: allenbrowne.

2 nhận xét:

  1. Nặc danh10:40 27/8/12

    cho minh hoi.may gia tri an khi dem no co hieu k?

    Trả lờiXóa
  2. Nặc danh16:30 29/3/13

    ACE nào làm ơn chỉ mình thống kê OrderID, nhưng không thống kê những giá trị ẩn. Mình nghiên cứu lâu quá ko được. Please Help Me!

    Trả lờiXóa

» Hãy để lại tên, email của bạn khi bạn post comment, để mình có thể dễ dàng trả lời comment của bạn khi cần.
» Có thể sử dụng các thẻ < b>,< i>,< a>. Và các icon thông dụng trên YM