-
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 Integer, grpArrayPages() As Integer
Dim grpNameCurrent As Variant, grpNamePrevious As Variant
Dim grpPage As Integer, grpPages As Integer
Public Function ReportPageOnGroup(page As Integer, Pages As Integer, varGroupValue 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 i = page - (grpPages - 1) To 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 Integer, FormatCount As Integer)
' Me.txtBoxPage: là textbox dùng hien thi so trang. Ví du: 'trang 1/5'
' varGroupValue: tham 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.