• Hỏi cách lập Report dạng cây
  • Hỏi cách lập Report dạng cây

    ledangvan > 31-10-15, 11:45 AM

    Tôi có một report (Bảng cân đối tài khoản)
    http://www.mediafire.com/download/b1bvo3...ieumau.mdb
    Tôi muốn : Nếu là tài khoản cấp 1 thì hiện luôn và bôi đậm (Không hiện chi tiết)
    Nếu tài khoản có cấp 2 thì cấp 1 bôi đậm - Cấp 2 để bình thường hiện cả cấp 1 cả cấp 2
    Ví dụ : 
    1111 - Tiền mặt -> Nó chỉ có một tài khoản cấp 1 -> Muốn nó chỉ hiện 1111 - Tiền mặt và chữ đậm
    1121 - Tiền gửi ngân hàng -> TK cấp 1
    11211 - Tiền gửi ngân hàng Công thương Ba Đình -> TK cấp 2
    11212 - Tiền gửi ngân hàng BIDV -> Tài khoản cấp 2

    -> Muốn là khi hiện lên báo biểu nó sẽ hiện như sau :
    1111 - Tiền mặt
    1121 - Tiền gửi ngân hàng

    11211 - Tiền gửi ngân hàng Công thương Ba Đình
    11212 - Tiền gửi ngân hàng BIDV 
    Mọi người giúp mình với, xin cảm ơn nhiều.
  • RE: Hỏi cách lập Report dạng cây

    tranthanhan1962 > 31-10-15, 06:28 PM

    Có phải ý của bạn là nếu MSTK=MSTK cấp 1 (có nghĩa là MSTK có số ký tự là 4) sẽ bị ẩn chứ gì?
    Nếu như vậy bạn viết code tại group hiển thị của nó như sau:
    Ví dụ trên report của bạn nó là GroupFooter1


    Mã:
    Private Sub GroupFooter1_Format(Cancel As Integer, FormatCount As Integer)
        If Len(MSTK.Value) = 5 Then
            GroupFooter1.Visible = True
            Else
            GroupFooter1.Visible = False
        End If
    End Sub


    Tương tự nếu bạn muốn ẩn luôn tài khoản đó khi nó bằng tài khoản cha (Tài khoản có 3 ký tự)


    Mã:
    Private Sub GroupHeader1_Format(Cancel As Integer, FormatCount As Integer)
        If Len(MSTK.Value) = 4 Then
            GroupHeader1.Visible = True
            Else
            GroupHeader1.Visible = False
        End If
    End Sub


    * Bạn phải cần tạo một textbox MSTK tại một group nào đó hoặc detail cũng được. Nếu không muốn nhìn thấy textbox này set Visible cho nó bằng false
  • RE: Hỏi cách lập Report dạng cây

    ledangvan > 31-10-15, 07:02 PM

    (31-10-15, 06:28 PM)tranthanhan1962 Đã viết: Có phải ý của bạn là nếu MSTK=MSTK cấp 1 (có nghĩa là MSTK có số ký tự là 4) sẽ bị ẩn chứ gì?
    Nếu như vậy bạn viết code tại group hiển thị của nó như sau:
    Ví dụ trên report của bạn nó là GroupFooter1


    Mã:
    Private Sub GroupFooter1_Format(Cancel As Integer, FormatCount As Integer)
        If Len(MSTK.Value) = 5 Then
            GroupFooter1.Visible = True
            Else
            GroupFooter1.Visible = False
        End If
    End Sub


    Tương tự nếu bạn muốn ẩn luôn tài khoản đó khi nó bằng tài khoản cha (Tài khoản có 3 ký tự)


    Mã:
    Private Sub GroupHeader1_Format(Cancel As Integer, FormatCount As Integer)
        If Len(MSTK.Value) = 4 Then
            GroupHeader1.Visible = True
            Else
            GroupHeader1.Visible = False
        End If
    End Sub


    * Bạn phải cần tạo một textbox MSTK tại một group nào đó hoặc detail cũng được. Nếu không muốn nhìn thấy textbox này set Visible cho nó bằng false

    Bác xem giúp em File ví dụ với, File đó em cũng đã thử nhóm theo MSTK rồi nhưng khi nó hiện sẽ hiện 
    Nhóm 3 ký tự
    Nhóm 4 ký tự
    Nhóm 5 ký tự 
    Nó nhóm như này, không đúng ý tưởng lắm: 
    111      (Nhóm 3 ký tự)
    1111 Tiền mặt (Nhóm 4 ký tự)
    1111 Tiền mặt (Nhóm 5) ký tự
    112
    ....
    131 (Nhóm 3 ký tự)
    131 (Nhóm 4 ký tự)
    131 (Nhóm 5 ký tự)
    Em muốn nó nhóm ra : 
    TK 1111 chỉ có 1 tài khoản (Không có cha, con ..) thì chỉ hiện mình nó và in đậm
    TK 131 cũng thế ...
    Nhưng tài khoản 1121 nó có mấytài khoản cấp 2 nên muốn nó hiện :
    1121  
    11211 - Ngân hàng ...
    11212 - Ngân hàng ...
    Kết quả sẽ hiện : 

    1111
    1121
    11211
    11212
    11213
    131
    133
    1331
    1332
    141
    156
    1561
    1562
    ....
  • RE: Hỏi cách lập Report dạng cây

    tranthanhan1962 > 31-10-15, 11:30 PM

    Do CSDL của bạn khi phân tích không tường minh nên gặp khó khăn trong trường hợp này. Tài khoản của bạn lại có giá trị sẵn nên khó lòng xử lý lại từ đầu. Thực ra các cấp tài khoản điều được quy định sẳn: 1/ Nhóm tài khoản gồn 2 chữ số. 2/ Tài khoản mà bạn gọi là tài khoản cha chính là tài khoản cấp 1 gồm 3 chữ số, tài khoản có 4 chữ số là tài khoản cấp 2. Tùy theo yêu cầu của đơn vị có thể đặt ra tài khoản đến cấp 5, cấp 6. Ngoài ra còn còn các loại tài khoản đặt biệt là 7, 8, 9, 0. Nhưng do đặt thù của từ công ty nên mỗi đơn vị làm mỗi khác.
    Khi làm bằng word, excel xử lý thủ công thì rất dễ nhưng khi làm access thì đẽ ra đủ kiểu khó do mỗi đơn vị làm theo thói quen của mình. Để chuẩn hóa bạn có thể nghiên cứu ở đây
    Trong điều kiện dữ liệu của bạn mình chỉ có thể hỗ trợ bằng các ý sau. Do các cấp nhóm không ổn định theo số ký tự nên bạn có thể xử lý theo từng trường hợp đưa vào các field nhóm 1 (Chử đen đậm), nhóm 2 (chữ xanh), nhóm 3 (chữ nghiêng) tạo các field yes/no cho từng nhóm cho từng tài khoản. Cũng vẫn dùng code trên nhưng sửa lại Nhóm nào yes thì cho hiển thị. Ví dụ:

    Mã:
    Private Sub GroupFooter1_Format(Cancel As Integer, FormatCount As Integer)
        If Len(NHOM2.Value) = True Then
            GroupFooter1.Visible = True
            Else
            GroupFooter1.Visible = False
        End If
    End Sub

    *Trước khi xử lý tạo relationship 2 table cho dễ làm hơn.