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

14/1/10

Tùy Biến Các Cột thay đổi trong Report

Bài này được Copy của tác giả paulsteigel bên Giải Pháp Excel. Thấy hay nên Copy về đây cho mọi người tham khảo.
Đó là 1 report có format tương đối giống nhau, nhưng có các cột thay đổi tùy ý. Xin copy lại nguyên gốc tác giả. Và thắc mắc có thể vào link gốc để hỏi trực tiếp tác giả!
Link Gốc

Trích:
Lâu lắm rồi không làm việc với Access, hôm nay có việc phải quay lại làm mấy việc với công cụ báo cáo Report của Access, tiện thể tôi xin chia sẻ một kỹ năng nho nhỏ với các bạn đã và đang, có thể sẽ sử dụng nhiều Access trong công việc.
Đã bao giờ các bạn nghĩ đến việc sử dụng một báo cáo cho nhiều mục đích, hiển thị nhiều báo cáo có bố cục tương đối giống nhau không?
Nếu bạn phải trình bày bảng dữ liệu có quá nhiều cột, bạn muốn báo cáo tự động chia số cột cho đều theo khổ giấy A4, phần còn thừa sẽ chuyển sang báo cáo mới và căn chỉnh độ rộng cột cho phù hợp?
...vv
Thường thì mọi người sẽ xác định giải pháp là: thôi thì tạo ra hàng loạt mẫu báo cáo để có thể dự phòng được trường hợp số cột là nhiều nhất, các báo cáo này giống nhau căn bản và chỉ khác nhau mỗi cái tên.
Với yêu cầu này, tôi xin giới thiệu một cách sử dụng tính năng thừa kế lớp của đối tượng Report (chắc các cao thủ thì đều đã làm rồi, mạo muội xin giới thiệu lại và hy vọng sẽ giúp ích được các bạn).
Đầu bài là:
Tôi có bảng danh sách có 15 cột dữ liệu và cần in ra trên 2 hoặc nhiều hơn báo cáo trên khổ A4 trong đó 4 cột đầu thì giữ nguyên trong khi các cột khác thay đổi và tự điều chỉnh kích thước để phù hợp với khổ giấy. (Chẳng hạn mỗi báo cáo sẽ hiển thị 6 cột thì sẽ có 2 báo cáo là đủ 6 cột còn báo cáo thứ 3 chỉ có 3 cột. Vì thế với báo cáo thứ 3, ta sẽ cần hiệu chỉnh kích thước cột để tràn ra toàn khổ giấy).
Vậy tôi cần làm gì?
1.Thiết kế mẫu báo cáo có số cột lớn nhất có thể thể hiện trên khổ giấy A4 (đảm bảo kích thước vừa đẹp).
2.Viết Code để sử dụng tính năng thừa kế lớp của các đối tượng báo cáo.
3.Viết code để gọi và hiển thị báo cáo.
Với mẫu báo cáo, chúng ta cần có các thủ tục giúp vẽ đường lưới ngang dọc, ở đây tôi dùng lệnh draw trong Access và các bạn có thể quan sát cách gọi thủ tục DrawGrid tại phần format section của báo cáo.
If PrintCount = 1 Then DrawGrid Me, RptCol + 4
Sử dụng biến PrintCount để bỏ qua việc vẽ lại, tham số RptCol + 4 thể hiện yêu cầu sẽ chỉ bắt đầu vẽ kể từ cột thứ tư.
Các bạn cần chú ý cách đặt tên các textbox và label để tiện tham chiếu ("txt" & i và "lbl" & i) trong đó txt và lbl là tiền tố đầu của textbox và nhãn.
Tiếp theo tôi xử lý phần điều chỉnh độ rộng cột bằng cách tính toán số cột tối đa và tính ra độ rộng phù hợp của báo cáo trong sự kiện Report_open.
Có khá nhiều code nhưng nói chung phần này giúp giải quyết việc xác định kích thước các cột và đặt tên nhãn cũng như xử lý về chuỗi cung cấp dữ liệu cho báo cáo.
Các bạn có thể xem qua ví dụ tôi gửi kèm để tiện tham khảo.
Nếu có điều kiện tôi sẽ viết dài dòng hơn để mọi người đều có thể chia sẻ.
Các bạn mở frmReport và nhấn nút, chúng ta sẽ thấy kết quả là có 3 báo cáo được mở cùng lúc trong khi tôi chỉ sử dụng 1 báo cáo mẫu duy nhất.
Thành thật xin lỗi các bạn về việc hơi ẩu khi lạm dụng comment bằng tiếng Anh. - Nếu có điều kiện tôi sẽ viết lại bằng tiếng Việt
Chúc các bạn một buổi tối vui vẻ! 

DownLoad Demo

____________________________________________________________________________________
Thảo luận thêm: http://thuthuataccess.com/forum

Không có nhận xét nào:

Đăng nhận xét

» 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