-
Thêm dòng trắng cho Report đẹp hơn
visaolac007 > 04-10-10, 03:08 PM
Tôi tạo 1 report in phiếu nhập kho. Tuy nhiên nếu table chỉ có 1 record thì khi in ra phiếu nhập kho thật là ngắn và thật là xấu, không giống người việt mình tí nào hết. Giả sử tôi muốn in 10 dòng trên 1 phiếu, nếu table co 1 record thi in thêm 9 dòng trắng, 5 record thì in thêm 5 dòng trắng, 9 record thì in 1 dòng trắng, 10 record thì không thêm dòng trắng nào hết. Rất mong các bạn chỉ giáo !
-
RE: Thêm dòng trắng cho Report đẹp hơn
Noname > 04-10-10, 03:23 PM
Thế nhỡ phiếu nhập kho của bạn sang trang thì thế nào?
ý tưởng là thế này:
bạn tạo 1 table với các cột có cùng kiểu dữ liệu như các cột ở phiếu nhập kho.
Tạo 9 record không có giá trị.
Vấn đề là bạn kết hợp các hàm sau trong query record source của report.
Union all : kết hợp 2 bảng. 1 bảng là có record, 1 bảng là không có record.
Top n : để lấy n phần tử. Như vậy những record thừa còn lại sẽ bỏ qua.
Ví dụ ta có table sau: phieunhapkho(mahang, soluong, dongia)
ta nhập thêm 1 table với 9 record trắnghieunhapkho1(mahang,soluong,donggia)
Phát biểu query1:
Mã:select mahang,soluong,dongia from phieunhapkho
union all
select mahang,soluong,dongia from phieunhapkho1
Phát biểu query2:
Mã:select top 10 mahang,soluong,dongia from query1
Lấy query2 làm recordsource cho report như vậy bạn luôn có 1 report với 10 dòng.
Nhắn thêm: cách này chỉ áp dụng với báo cáo ít hơn 10 dòng. Nhiều hơn thì bạn phải lấy phạm vi Top dài hơn để không bị báo cáo thiếu -
RE: Thêm dòng trắng cho Report đẹp hơn
visaolac007 > 04-10-10, 05:25 PM
(04-10-10, 03:23 PM)Noname Đã viết: Thế nhỡ phiếu nhập kho của bạn sang trang thì thế nào?
ý tưởng là thế này:
bạn tạo 1 table với các cột có cùng kiểu dữ liệu như các cột ở phiếu nhập kho.
Tạo 9 record không có giá trị.
Vấn đề là bạn kết hợp các hàm sau trong query record source của report.
Union all : kết hợp 2 bảng. 1 bảng là có record, 1 bảng là không có record.
Top n : để lấy n phần tử. Như vậy những record thừa còn lại sẽ bỏ qua.
Ví dụ ta có table sau: phieunhapkho(mahang, soluong, dongia)
ta nhập thêm 1 table với 9 record trắnghieunhapkho1(mahang,soluong,donggia)
Phát biểu query1:
Mã:select mahang,soluong,dongia from phieunhapkho
union all
select mahang,soluong,dongia from phieunhapkho1
Phát biểu query2:
Mã:select top 10 mahang,soluong,dongia from query1
Lấy query2 làm recordsource cho report như vậy bạn luôn có 1 report với 10 dòng.
Nhắn thêm: cách này chỉ áp dụng với báo cáo ít hơn 10 dòng. Nhiều hơn thì bạn phải lấy phạm vi Top dài hơn để không bị báo cáo thiếu
Cám ơn bạn rất nhiều. Qua trang thì cũng có gì đâu bạn tôi nghĩ ấn định cho 1 trang in là 10 dòng thì khi in hết 10 dòng thì cứ sang trang, chỉ trang cuối cùng là mình cho nó thêm các dòng trắng thôi. Tuy nhiên mình hỏi thêm liệu trong VBA có làm được việc này hay không ? -
RE: Thêm dòng trắng cho Report đẹp hơn
Noname > 04-10-10, 07:32 PM
(04-10-10, 05:25 PM)visaolac007 Đã viết: Cám ơn bạn rất nhiều. Qua trang thì cũng có gì đâu bạn tôi nghĩ ấn định cho 1 trang in là 10 dòng thì khi in hết 10 dòng thì cứ sang trang, chỉ trang cuối cùng là mình cho nó thêm các dòng trắng thôi. Tuy nhiên mình hỏi thêm liệu trong VBA có làm được việc này hay không ?
Hoàn toàn có thể được.
Bạn gán các câu query vào một biến String
Rồi gán record Source của report bằng biến này -
RE: Thêm dòng trắng cho Report đẹp hơn
visaolac007 > 05-10-10, 09:20 PM
Hoàn toàn có thể được.
Bạn gán các câu query vào một biến String
Rồi gán record Source của report bằng biến này
[/quote]
Cám ơn bạn vì đã giúp đỡ. Nhưng mình còn yếu nghề lắm bạn có thể chỉ rõ hơn được không. Minh cũng mê cái vụ VBA lắm nghe nói nó xử được hết mọi chuyện, nếu bạn chỉ cho VBA thì quá tốt. -
RE: Thêm dòng trắng cho Report đẹp hơn
Noname > 05-10-10, 10:28 PM
(05-10-10, 09:20 PM)visaolac007 Đã viết: Cám ơn bạn vì đã giúp đỡ. Nhưng mình còn yếu nghề lắm bạn có thể chỉ rõ hơn được không. Minh cũng mê cái vụ VBA lắm nghe nói nó xử được hết mọi chuyện, nếu bạn chỉ cho VBA thì quá tốt.
Bạn không nên cố chấp VBA hay không. Người dùng chỉ cần biết yêu cầu của họ có được đáp ứng, chứ họ không quan tâm bạn dùng cái gì. Từ triết lý đó mình mới dùng Access như là công cụ hỗ trợ đắt lực. Những gì không làm được thì mình mới phải cầu cứu VBA thôi! -
RE: Thêm dòng trắng cho Report đẹp hơn
ongke0711 > 24-04-16, 01:10 AM
Xin đào mộ lại cái đề tài này vì có bạn hỏi file Demo cách "Cố định số dòng của Report bằng cách thêm dòng trắng nếu số records không đủ số dòng".
Tôi có làm cái demo theo như gợi ý của bác Noname là dùng "Union Query" nhưng có thay đổi chút đó là: Không dùng "SELECT Top N..." vì có trường hợp in nhiều trang thì không áp dụng được. Đổi sang dùng kết hợp hàm Mod trong Union query. Không dùng code VBA. Cách này nếu in 1 trang cũng được mà nếu nhiều trang thì nó sẽ tự thêm cho đủ số dòng ở trang cuối cùng.
Cách làm cụ thể như sau:
- Tạo thêm table phụ có 1 trường [SoDong] - Number. Bạn đánh số thứ tự từ 1 - số dòng bạn muốn in. Trong ví dụ của tôi là: muốn in 6 dòng.
- Tạo 1 Union Query như sau:
Bạn để ý thông số sau hàm "Mod". Nếu muốn in 6 dòng thì là: MOD 6. Bên cạnh đó có "SELECT 999999 + SoDong" là để tạo số thứ tự cao nhất mục đích là để thêm các record trống này vào cuối bảng.Mã PHP:SELECT tblDMSP.ID, tblDMSP.MaSP,tblDMSP.TenSP,tblDMSP.Dvt,tblDMSP.GiaGoc
FROM tblDMSP
UNION ALL SELECT 999999+SoDong AS Exp1, "" AS Exp2,"" AS Exp3,"" AS Exp4,"" AS Exp5
FROM tblSoDong
WHERE (((tblSoDong.SoDong)>IIf(((SELECT Count(ID) FROM tblDMSP) Mod 6)=0,7,(SELECT Count(ID) FROM tblDMSP) Mod 6)));
- Tạo report với RecordSource là Union query vừa tạo. Đặc biệt không thể thiếu là thiết lập thông số chiều cao (Height) cho Page Footer sao cho chỉ đủ để hiển thị 6 dòng như mong muốn.
Link file Demo:http://www.mediafire.com/download/k5hf8r...Report.mdb -
RE: Thêm dòng trắng cho Report đẹp hơn
phuc_thanhtien > 03-05-16, 01:38 PM
Xin hỏi với union query thì làm thế nào để hiển thị các số 0 sau dấu phẩy thập phân ạ.
-
RE: Thêm dòng trắng cho Report đẹp hơn
ongke0711 > 03-05-16, 03:27 PM
Trong câu lệnh SQL bạn dùng thêm hàm FORMAT trước trường nào muốn hiển thị dạng số thập phân.
----------------------------
SELECT tblDMSP.ID, tblDMSP.MaSP,tblDMSP.TenSP,tblDMSP.Dvt, Format ([tblDMSP].[GiaGoc],"#0.00#")
FROM tblDMSP
UNION ALL SELECT 999999+SoDong AS Exp1, "" AS Exp2,"" AS Exp3,"" AS Exp4,"" AS Exp5
FROM tblSoDong
WHERE (((tblSoDong.SoDong)>IIf(((SELECT Count(ID) FROM tblDMSP) Mod 6)=0,7,(SELECT Count(ID) FROM tblDMSP) Mod 6)));
----------------------------- -
RE: Thêm dòng trắng cho Report đẹp hơn
phuc_thanhtien > 03-05-16, 03:50 PM
à mình sửa lại như thế này là được rồi:
SELECT tblDMSP.ID, tblDMSP.MaSP,tblDMSP.TenSP,tblDMSP.Dvt, Format ([tblDMSP].[GiaGoc],"#0.00#") as giagoc
Cảm ơn bạn