Thủ Thuật Access
[Hỏi] Crosstab trong crosstab - Phiên bản có thể in

+- Thủ Thuật Access (http://thuthuataccess.com/forum)
+-- Diễn đàn: Access Cơ Bản (http://thuthuataccess.com/forum/forum-5.html)
+--- Diễn đàn: Report (http://thuthuataccess.com/forum/forum-9.html)
+--- Chủ đề: [Hỏi] Crosstab trong crosstab (/thread-10380.html)



Crosstab trong crosstab - mrsiro - 09-02-18

[Hình: 2018a8d3634f-c9ae-4fab-a201-f9d350ef5a26.png]
[Hình: 20185cae0d79-79ee-4a6e-bde7-0e17ee87535c.png]
Chào các bạn, mình có table như hình 1, giờ muốn in report ra theo mẫu như hình 2 thì làm cách nào. 



Mình đã tạo dc query trả về kết quả này nhưng có điều nguyen a có 2 dòng nó không gom lại 1 dòng, với thêm nguyen d để trống thì nó lại hiện thêm cột <>.
Các bạn giúp mình với.
[Hình: 2018c8694bed-7689-4111-b29a-da3401277000.png]
[Hình: 2018a8d9ee7f-f5b3-450f-8c80-d90e94e36e8d.png]


RE: Crosstab trong crosstab - ongke0711 - 11-02-18

- Nếu bạn bỏ cột [ngày] đi thì nó sẽ group tên thành 1 dòng.
- Để bỏ cột "<>" thì bạn thêm điều kiện: Not Is Null cho cột [mon] để loại bỏ record có giá trị Null.
- Về định dạng report như bạn y/c thì Access không mạnh về định dạng báo cáo như excel nên cái format này sẽ khó thiết kế. Bên cạnh đó, Report của Access phải cố định số cột vì chỉ thiết kế một lần rồi chạy do vậy bạn xem lại kiểu định dạng này nó có phù hợp không khi số [môn] thay đổi thêm các môn khác ngoài 3 môn trên? Nếu thêm các môn lại vô report thiết kế lại (thêm cột) -> sai. Hơn nữa nếu bạn dàn hàng ngang liệu có đủ khổ giấy để in không? VD: in thời gian 30 ngày - 10 môn =>300 cột hàng ngang. Report của Access chỉ cho phép tối đa 256 cột.

Do vậy tôi nghĩ tốt nhất là bạn thiết kế lại định dạng cho báo cáo để phù hợp với Access hơn.

Ví dụ:

               Môn               | 1/1/2018  |  2/1/2018  |  3/1/2018 |
-----------------------------------------------------------------
Nguyen A                    |           |            |           |
              Anh Van       |      2    |       1    |           |
              Toan          |           |            |     1     |
              Van           |      1    |       1    |           |
Nguyen B
              Anh Van
              Toan
              Van


RE: Crosstab trong crosstab - mrsiro - 11-02-18

(11-02-18, 06:08 PM)ongke0711 Đã viết: - Nếu bạn bỏ cột [ngày] đi thì nó sẽ group tên thành 1 dòng.
- Để bỏ cột "<>" thì bạn thêm điều kiện: Not Is Null cho cột [mon] để loại bỏ record có giá trị Null.
- Về định dạng report như bạn y/c thì Access không mạnh về định dạng báo cáo như excel nên cái format này sẽ khó thiết kế. Bên cạnh đó, Report của Access phải cố định số cột vì chỉ thiết kế một lần rồi chạy do vậy bạn xem lại kiểu định dạng này nó có phù hợp không khi số [môn] thay đổi thêm các môn khác ngoài 3 môn trên? Nếu thêm các môn lại vô report thiết kế lại (thêm cột) -> sai. Hơn nữa nếu bạn dàn hàng ngang liệu có đủ khổ giấy để in không? VD: in thời gian 30 ngày - 10 môn =>300 cột hàng ngang. Report của Access chỉ cho phép tối đa 256 cột.

Do vậy tôi nghĩ tốt nhất là bạn thiết kế lại định dạng cho báo cáo để phù hợp với Access hơn.

Ví dụ:

               Môn               | 1/1/2018  |  2/1/2018  |  3/1/2018 |
-----------------------------------------------------------------
Nguyen A                    |           |            |           |
              Anh Van       |      2    |       1    |           |
              Toan          |           |            |     1     |
              Van           |      1    |       1    |           |
Nguyen B
              Anh Van
              Toan
              Van

Số môn cố định 3 môn, mỗi lần lấy chỉ 5 ngày trong tuần. Thiết kế như cách của bạn mẫu in ra rất xấu bời vì cứ 1 giáo viên lại lặp lại 3 dòng anh văn toán văn, có tổng cộng 100 giáo viên => in ra 300 dòng. Mẫu in ra sẽ rất dài tốn nhiều trang.
Dòng ngày trên report mình nghĩ chỉ cần 1 txtbox rồi để giá trị ngày vào là đủ. Chủ yếu là dòng toán anh văn. Nếu sử dụng crosstab thì cho cột môn làm column header, vào gán điều kiện cho cột này là theo từng ngày, ví dụ cột toán của ngày 01/01, cột toán của 02/01, tương tự cho 2 môn kia, 5 ngày trong tuần mỗi ngày 3 môn thì trong query lấy đủ 15 cột, sau khi ra đủ số cột cần thiết trong query thì chỉ cần đưa vào control soucer trên report là được. Nhưng ý tưởng là như thế nhưng mình không thực hiện được.


RE: Crosstab trong crosstab - duynamvnn1208 - 13-02-18

Bạn không làm được là đúng rồi. Vì Cross Query không hỗ trợ cái mà bạn nói. Bạn phải đọc kỹ các khái niệm khi sử dụng hoặc khi nó báo lỗi. Bạn phải dùng cách khác để biểu diễn thôi