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

    Noname > 03-09-11, 06:32 PM

    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.
  • RE: Ẩn những giá trị trùng lắp

    sonlt1978 > 30-09-11, 05:05 PM

    Tuyệt lắm. Cám ơn Vô Danh