-
RE: Báo cáo hàng ngang
ledangvan > 13-04-15, 09:45 PM
(13-04-15, 02:20 PM)paulsteigel Đã viết: Về chủ đề này, nếu tác giả cụ thể hóa yêu cầu mình sẽ giúp triển khai được ví dụ của bạn. Cái ví dụ report Instance mà mình chia sẻ trước đây là nói đến một tác dụng khác của việc thừa kế lớp của báo cáo, cùng một mẫu báo cáo nhưng hiển thị nhiều nguồn dữ liệu khác nhau.
Chính vì điều đó nên phần code có hơi phức tạp để theo dõi.
Với Access, việc triển khai xuất dữ liệu dạng cột như bạn nói chỉ hợp lý cho quá trình in ấn (đẹp mắt) nhưng không ổn thỏa với mục tiêu xuất dữ liệu.
Nếu bắt buộc phải làm trong access thì những điều bạn cần tính tới là:
Số cột dữ liệu tối đa trên 1 trang giấy là bao nhiêu?
Dữ liệu gì là động, cái gì là tĩnh.
Còn việc triển khai theo hàng ngang - có nhiều cách làm (vẽ trường cố định, dùng code ...vv) và cách trong ví dụ trên đây là một trong số những cách đó.
Mình nghĩ đã nói khá rõ trong phần đầu câu hỏi : Mình có các dữ liệu của các đơn vị, đơn giản chỉ là cộng hàng ngang để lên báo cáo tổng hợp và trình bầy như hình ở bài đầu, mình có nghiên cứu ví dụ của bạn, rất hay vì tất cả các báo cáo được in ra từ một Desingn Report. Bài viết của bác Tranthanhhan1962 cũng hay và giải quyết được vấn đề mà tôi hỏi, nhưng phải công nhận là hơi loằng ngoằng để thiết lập các report và query (nếu không bắt chước các mẫu có sẵn thì khó lòng làm được), Từ bài viết của bác Tranthanhan1962 mình chắc sẽ tạo được và sẽ post lên sớm nhất. -
RE: Báo cáo hàng ngang
paulsteigel > 13-04-15, 11:20 PM
Chúc bạn thành công! Nếu có thể chia sẻ điều gì, bạn cứ hỏi nhé! Hiện tại tôi cũng đang phải quay lại làm một số thứ bằng Access nên vì thế mới phản hồi. -
RE: Báo cáo hàng ngang
tranthanhan1962 > 14-04-15, 06:59 PM
(13-04-15, 09:45 PM)ledangvan Đã viết:
(13-04-15, 02:20 PM)paulsteigel Đã viết: Về chủ đề này, nếu tác giả cụ thể hóa yêu cầu mình sẽ giúp triển khai được ví dụ của bạn. Cái ví dụ report Instance mà mình chia sẻ trước đây là nói đến một tác dụng khác của việc thừa kế lớp của báo cáo, cùng một mẫu báo cáo nhưng hiển thị nhiều nguồn dữ liệu khác nhau.
Chính vì điều đó nên phần code có hơi phức tạp để theo dõi.
Với Access, việc triển khai xuất dữ liệu dạng cột như bạn nói chỉ hợp lý cho quá trình in ấn (đẹp mắt) nhưng không ổn thỏa với mục tiêu xuất dữ liệu.
Nếu bắt buộc phải làm trong access thì những điều bạn cần tính tới là:
Số cột dữ liệu tối đa trên 1 trang giấy là bao nhiêu?
Dữ liệu gì là động, cái gì là tĩnh.
Còn việc triển khai theo hàng ngang - có nhiều cách làm (vẽ trường cố định, dùng code ...vv) và cách trong ví dụ trên đây là một trong số những cách đó.
Mình nghĩ đã nói khá rõ trong phần đầu câu hỏi : Mình có các dữ liệu của các đơn vị, đơn giản chỉ là cộng hàng ngang để lên báo cáo tổng hợp và trình bầy như hình ở bài đầu, mình có nghiên cứu ví dụ của bạn, rất hay vì tất cả các báo cáo được in ra từ một Desingn Report. Bài viết của bác Tranthanhhan1962 cũng hay và giải quyết được vấn đề mà tôi hỏi, nhưng phải công nhận là hơi loằng ngoằng để thiết lập các report và query (nếu không bắt chước các mẫu có sẵn thì khó lòng làm được), Từ bài viết của bác Tranthanhan1962 mình chắc sẽ tạo được và sẽ post lên sớm nhất.
Khi post phương pháp xử lý report của mình, bản thân mình cũng hợi ngại về độ phức tạp của phương pháp này. Nhưng trong yêu cầu của bạn ledangvan là làm một report có số lượng column lớn, vượt khả năng xử lý thông thường của access. Số lượng column này lại thay đổi phức tạp (thay đổi cả số lượng column lẫn thứ tự column) theo từng giai đoạn (trước đây mình cũng đau đầu về chuyện này). Nên mình không nghĩ được cách nào khác hơn. Nhưng trong phần thiết kế của mình bạn nên bỏ qua các phần các query tạo giá trị cho tài khoản chỉ cần nắm được cách xử lý:
1/ Query báo số lượng column (trong demo là query SOTKSD), query này để Function socai_THAYDOI thực hiện việc ẩn hiện các command gọi report tương ứng.
2/ Cập nhật thứ tự các column được sử dụng vào field thứ tự liên kết với field danh sách báo cáo trong table (trong demo là field MATKSD của table 05TK – MATKSD có nghĩa là tài khoản được tạo report sẽ đánh số 1, 2, 3… những tài khoản khác trả về 0)
Ví dụ Để dễ hơn tôi chuyển sang báo cáo của bạn là danh sách công ty.
3/ Tạo query chuyển và cập nhật giá trị các báo cáo qua các cột (Giá trị báo cáo X1, Y1, Z1, … X2, Y2, Z2, …, Xn, Yn, Zn) n là số thứ tự đơn vị được là báo cáo. (Số cột là Tổng số đơn vị đang có x Số cột cần báo cáo của một đơn vị, Cũng có thể dự trù số đơn vị lớn hơn hoặc khi nào phát sinh thì tăng thêm, vì mã đơn vị đã chuyễn thành số nên rất dễ dàng)
Ví dụ A là tên công ty, B Số lượng, C là Thành tiền. Ta có:
X1 -> Tên Công ty A
Y1 -> Giá trị Số lượng của Công ty A
Z1 -> Giá trị Thành tiền của Công ty A
X2 -> Tên Cửa hàng B
Y2 -> Giá trị Số lượng của Cửa hàng B
Z2 -> Giá trị Thành tiền của Cửa hàng B
X3 -> Tên Cơ quan D
Y3 -> Giá trị Số lượng của Cơ quan D
Z3 -> Giá trị Thành tiền của Cơ quan D
Những cột còn lại của query này chắc chắn là giá trị 0
4/ Chia query mẹ thành các query con cho từng báo cáo. Nếu bạn design từng báo cáo thì đến đây đã xong. Còn nếu muốn “cực một lần rồi sướng” thì nghiên cứu thêm phần xử lý trên ReportHeader để xử lý các report giống nhau (Nhớ chuyển lại tên các field của các query con giống nhau)
Chỉ cần copy report rồi thay đổi số trong textbox theo thứ tự report là xong.
Nếu bạn nào có phương pháp gọn hơn thì post lên để cùng nhau nghiên cứu. -
RE: Báo cáo hàng ngang
mrsiro > 14-04-15, 08:37 PM
Các bác cho em hỏi report mình có thể tùy chỉnh số lượng côt không.
Em đang làm ứng dụng tính tua trực, mà nv thì trực theo ngày, mỗi tháng thì số lượng ngày nó lại khác nhau, có tháng 28 nhưng có tháng lại 31 ngày. Giờ em muốn số lượng cột trong report thay đổi theo số lượng ngày trong tháng, ví dụ tháng 28 ngày thì có 28 cột, 31 ngày thì có 31 cột.
Ai biết vấn đề này giúp em với. -
RE: Báo cáo hàng ngang
maidinhdan > 14-04-15, 10:31 PM
(14-04-15, 08:37 PM)mrsiro Đã viết: Các bác cho em hỏi report mình có thể tùy chỉnh số lượng côt không.
Em đang làm ứng dụng tính tua trực, mà nv thì trực theo ngày, mỗi tháng thì số lượng ngày nó lại khác nhau, có tháng 28 nhưng có tháng lại 31 ngày. Giờ em muốn số lượng cột trong report thay đổi theo số lượng ngày trong tháng, ví dụ tháng 28 ngày thì có 28 cột, 31 ngày thì có 31 cột.
Ai biết vấn đề này giúp em với.
Bạn đã không theo dõi Topic này từ đâu nên đặt câu hỏi như thấ, phía trên bài bạn anh tranthanhan1962 trả lời rất cụ thể và chi tiết đến từng cm...nếu đọc không hiểu nửa thì thật là pó tay rồi.
Một lần nửa xin cảm ơn anh Trần Thanh Ân bài viết rất chi tiết + kèm ảnh minh họa nửa. -
RE: Báo cáo hàng ngang
tranthanhan1962 > 15-04-15, 01:22 AM
(14-04-15, 08:37 PM)mrsiro Đã viết: Các bác cho em hỏi report mình có thể tùy chỉnh số lượng côt không.
Em đang làm ứng dụng tính tua trực, mà nv thì trực theo ngày, mỗi tháng thì số lượng ngày nó lại khác nhau, có tháng 28 nhưng có tháng lại 31 ngày. Giờ em muốn số lượng cột trong report thay đổi theo số lượng ngày trong tháng, ví dụ tháng 28 ngày thì có 28 cột, 31 ngày thì có 31 cột.
Ai biết vấn đề này giúp em với.
Report lịch trực của bạn đơn giản hơn Report của bạn ledangvan nhiều.
Mình xử luôn cho bạn đây:
Trước mắt bạn tạo 1 Form gọi report có các combo box hoặc text box THANG (tháng), NAM (năm). Một text box SONGAY co control source : =(DateSerial([NAM];[THANG]+1;1))-(DateSerial([NAM];[THANG];1)) để tính số ngày trong tháng. Text box này sẽ được dấu đi khi view form.
Chỉ cần bấy nhiêu là bạn có thể xử được report bảng trực theo ý bạn. Có thể làm 2 cách.
Cách 1: xử dụng 1 report cho tất cả các kiểu xem ( vì 28 column ngày từ 1 đến 28 luôn xuất hiện nên tôi gom thành 1)
Các event Detail_Format, PageHeaderSection_Format sẽ xử lý sự ẩn hiện các cột 29, 30, 31 thông qua value của text box SONGAY.
Kiểu này sẽ làm report bị lệch lề phải nhưng vì cột ngày có chiều ngang nhỏ nên xem cũng tàm tạm.
Nếu muốn report đẹp hơn bạn sẽ làm cách 2:
Thiết kế từng report riêng lẻ sau đó dùng code Private Sub xem_02_Click() gọi từng report theo giá trị text box SONGAY.
Của bạn đây
Chúc bạn thành công. -
RE: Báo cáo hàng ngang
ledangvan > 15-04-15, 12:29 PM
Cảm ơn bác tranthanhan1962, cảm ơn bác Paulsteigel, cảm ơn maidinhdan đã quan tâm giúp đỡ. Mình đã sơ bộ làm cái báo cáo theo mong muốn của mình, nó cũng khá đơn giản, nhưng đúng là báo cáo của mình làm dựa theo đề tài của bác tranthanhan1962. Mình tải bản lên đây, mọi người cho ý kiến chỉnh sửa thêm cho tiện nhé : http://www.mediafire.com/download/h67755...onghop.rar -
Width Report
vodainhan > 01-04-17, 07:08 PM
Độ rông report (Width Report) tối đa là 55.873cm. Có cách nào làm tăng số này lên không? (access 2010)
Report này chứa rất nhiều dữ liệu hàng và cột, phải in ra 4 trang giấy A4 theo chiều ngang.
Nếu cách tăng chiều rộng không được thì cần giải pháp nào? Ai có cao kiến gì xin trợ giúp. -
RE: Width Report
maidinhdan > 01-04-17, 08:32 PM
(01-04-17, 07:08 PM)vodainhan Đã viết: Độ rông report (Width Report) tối đa là 55.873cm. Có cách nào làm tăng số này lên không? (access 2010)
Report này chứa rất nhiều dữ liệu hàng và cột, phải in ra 4 trang giấy A4 theo chiều ngang.
Nếu cách tăng chiều rộng không được thì cần giải pháp nào? Ai có cao kiến gì xin trợ giúp.
Trước khi trả lời câu hỏi này, bạn cho tôi biết máy in của bạn có thể in Chiều rộng ( Ngang) và chiểu dài ( dọc) tối đa là bao nhiêu Cm, và tên máy in của bạn là gì?
Mong chờ câu trả lời này, trước khi tiếp tục thảo luận. -
RE: Width Report
vodainhan > 01-04-17, 08:54 PM
máy in Cannon 6200d. Khổ A4 thì có chung kích thước.