Đánh giá chủ đề:
  • 4 Votes - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thêm dòng trắng cho Report đẹp hơn
#1
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ếtconfused. 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 !
Chữ ký của visaolac007 Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#2
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ắng tonguehieunhapkho1(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
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn visaolac007 , domfootwear
#3
(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ắng tonguehieunhapkho1(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 ?
Chữ ký của visaolac007 Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#4
(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
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn visaolac007 , nhunguyet0103
#5
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.confused
Chữ ký của visaolac007 Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#6
(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.confused

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!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn nhunguyet0103
#7
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.
[Hình: FixRowsReport1.png]

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.
[Hình: SoDong.png]

- Tạo 1 Union Query như sau:
Mã PHP:
SELECT tblDMSP.IDtblDMSP.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(IDFROM tblDMSPMod 6)=0,7,(SELECT Count(IDFROM tblDMSPMod 6))); 
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.

- 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.

[Hình: Report.png]

Link file Demo:http://www.mediafire.com/download/k5hf8r...Report.mdb
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn phuc_thanhtien , caytregiavn77 , thiennamlong , songngam_p89 , huuduy.duy
#8
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 ạ.

[Hình: Hinh.jpg]
Chữ ký của phuc_thanhtien phuc_thanhtien,gia nhập Thủ Thuật Access từ 08-03 -16.
Reply
Những người đã cảm ơn
#9
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)));
-----------------------------
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn phuc_thanhtien , maidinhdan , huuduy.duy
#10
à 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
Chữ ký của phuc_thanhtien phuc_thanhtien,gia nhập Thủ Thuật Access từ 08-03 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Hướng Dẫn Cách sắp xếp report? tieuho828 0 3 43 Phút trước
Bài mới nhất: tieuho828
  [Help] Xin Giúp đỡ Dàn Report theo hàng ngang toi511 2 136 03-11-16, 01:10 PM
Bài mới nhất: toi511
  Hướng Dẫn Cú pháp mở Report có nhiều điều kiện GaDauBac 7 248 22-10-16, 01:08 AM
Bài mới nhất: maidinhdan
  Hướng Dẫn Tạo Report theo Combobox trong Form thangbomdethuong2000 7 286 20-10-16, 08:41 PM
Bài mới nhất: thangbomdethuong2000
  Giúp muốn thêm dòng vào report trungminh 3 109 18-10-16, 12:15 AM
Bài mới nhất: ongke0711

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ