• Tổng số trang theo group của Report không chạy được trên office 365
  • Tổng số trang theo group của Report không chạy được trên office 365

    hai.nt > 28-04-21, 09:53 AM

    Chào cả nhà, có việc này nhờ mọi người giúp. Theo hướng dẫn về đánh số trang của report theo nhóm, tôi đã làm được phần đánh số trang. Nhưng tới phần tổng số trang của nhóm thì code báo lỗi ngay dòng màu đỏ. Nhờ mọi người chỉ dùm (tôi đang sử dụng Windows 10 + Office 365)

    Private Sub Report_Open(Cancel As Integer)
    Set DB = DBEngine.Workspaces(0).Databases(0)
    DoCmd.SetWarnings False
    DoCmd.RunSQL "Delete * From [Category Group Pages];
    DoCmd.SetWarnings True
    Set GrpPages = DB.OpenRecordset("Category Group Pages", dbOpenTable)
    GrpPages.Index = "PrimaryKey"
    End Sub


    Đính kèm file : "https://drive.google.com/file/d/1WxdflOY5sU2QHsizWDk66kiDZYUowFj2/view?usp=sharing
  • RE: Tổng số trang theo group của Report không chạy được trên office 365

    ongke0711 > 28-04-21, 12:05 PM

    Công nhận bạn dùng code cổ thật.
    Sửa  3 dòng:

    Mã PHP:
    Dim DB As DAO.Database
    Dim GrpPages 
    As DAO.Recordset 


    Thay "dbOpenTable" --> "dbOpenDynaset"

    Mã PHP:
    Set GrpPages DB.OpenRecordset("Category Group Pages"dbOpenDynaset

    Bỏ luôn dòng này:

    Mã PHP:
    GrpPages.Index "PrimaryKey" 

    Sửa Record Source của Report thành tên Table không có dấu tiếng Việt.

    *** Tuyệt đối không dùng tên tiếng Việt có dấu đặt tên cho Table, Query, Report, Module. Không dùng cho thuộc tính Name của tất cả các Control thiết kế trên Form, Report.
  • RE: Tổng số trang theo group của Report không chạy được trên office 365

    hai.nt > 28-04-21, 02:07 PM

    Cám ơn ongke0711, chắc tại mình cổ quá rồi nên code cũng cổ luôn, hihi.
    Mình đã sửa theo gợi ý của bạn, Code không báo lỗi nữa nhưng chạy không ra được Trang/tổng số trang. Bạn có thể sửa và chạy thử trên file mình đã đính kèm ở trên được không, cám ơn bạn
  • RE: Tổng số trang theo group của Report không chạy được trên office 365

    ongke0711 > 29-04-21, 08:36 AM

    (28-04-21, 02:07 PM)hai.nt Đã viết: Mình đã sửa theo gợi ý của bạn, Code không báo lỗi nữa nhưng chạy không ra được Trang/tổng số trang. Bạn có thể sửa và chạy thử trên file mình đã đính kèm  ở trên được không, cám ơn bạn

    Vụ đáng số trang theo Group này lúc trước tôi có post trên đây một bài, giờ không nhớ tên nó như thế nào để lục lại.
    Bạn chỉ cần tạo 1 class module rồi áp dụng cho Report nào cũng được, không cần phải viết code riêng, phức tạp cho từng Report như file bạn đang làm.

    - Tạo Class module: đặt tên "clsPageGroupNewPage". Copy đoạn code bên dưới vào.

    Mã PHP:
    Option Compare Database
    Option Explicit


    Dim grpArrayPage
    () As IntegergrpArrayPages() As Integer
    Dim grpNameCurrent 
    As VariantgrpNamePrevious As Variant
    Dim grpPage 
    As IntegergrpPages As Integer

    Public Function ReportPageOnGroup(page As IntegerPages As IntegervarGroupValue As Variant)
        Dim i As Integer
        
    If Pages 0 Then
            ReDim Preserve grpArrayPage
    (page 1)
            ReDim Preserve grpArrayPages(page 1)

            grpNameCurrent varGroupValue

            
    If grpNameCurrent grpNamePrevious Then
                grpArrayPage
    (page) = grpArrayPage(page 1) + 1
                grpPages 
    grpArrayPage(page)
                For page - (grpPages 1To page
                    grpArrayPages
    (i) = grpPages
                Next

            
    Else
                grpPage 1
                grpArrayPage
    (page) = grpPage
                grpArrayPages
    (page) = grpPage

            End 
    If
        Else
            ReportPageOnGroup "Trang " grpArrayPage(page) & " / " grpArrayPages(page)

        End If
        grpNamePrevious grpNameCurrent

    End 
    Function 


    - Gọi class này trong Report cần Group số trang. Chú ý mấy dòng ghi chú.


    Mã PHP:
    Option Compare Database
    Option Explicit

    Dim clsRpt 
    As clsPageGroupNewPage

    Private Sub Report_Open(Cancel As Integer)
        Set clsRpt = New clsPageGroupNewPage
    End Sub

    Private Sub PageHeaderSection_Format(Cancel As IntegerFormatCount As Integer)
        ' Me.txtBoxPage: là textbox dùng hien thi so trang. Ví du: 'trang 1/5'
        ' 
    varGroupValuetham sô thu 3 là 'Name' cua textbox chua ten Field dùng de Group du lieu
        Me
    .txtBoxPage clsRpt.ReportPageOnGroup(Me.[page], Me.[Pages], Me.txtThutubd)
    End Sub

    Private Sub Report_Close()
        Set clsRpt Nothing
    End Sub 


    Link demo: https://drive.google.com/file/d/1fy11nFw...sp=sharing
  • RE: Tổng số trang theo group của Report không chạy được trên office 365

    hai.nt > 29-04-21, 04:27 PM

    Cám ơn ongke0711 nhiều nhé
  • RE: Tổng số trang theo group của Report không chạy được trên office 365

    hai.nt > 05-05-21, 11:06 AM

    ongke0711 cho mình hỏi thêm 1 chút. Nếu mình có 2 tầng Group (vd như trong dữ liệu là trườngThutubd và trường f_to), khi mình chạy code này trên header Group1: Thutubd thì code có bị ảnh hưởng (chạy sai) do có header Group2: f_to không?
  • RE: Tổng số trang theo group của Report không chạy được trên office 365

    ongke0711 > 05-05-21, 11:48 AM

    Bạn cứ thiết kế các kiểu thử xem.