Tạo report có details

1. Cách không sử dụng Html Var
2. Cách sử dụng Html Var

*********************
Ví dụ sử dụng nguồn dữ liệu : click tham khảo

1. Cách không sử dụng Html Var
In đơn giản

Query:
 _SysDB/Data_Test (tùy vào tên query)

Query_Para

* Nếu đã lọc dữ liệu HoDonChiTiet ở query
DataMain:0
DataDetail:1

* Nếu chưa lọc dữ liệu HoDonChiTiet ở query
DataMain:0
DataDetail:1
DataDetail_Where:KeyHoaDon='{recM:_SYS_KEY:recM}'
(thêm dòng cuối)

B2: Tại tab Config

Page_Width
210mm

Page_Height
297mm

Page_Contains_Height
287mm

B2: Tại tab Report

Rpt_Hearder :(có 10 trang thì phần này sẽ nạp ra trang đầu tiên)
----
BÁO CÁO
Số hợp đồng: {recM:SoHoaDon:recM} , Nhân viên quản lý: {recM:TenKhachHang:recM}

Rpt_Footer :  (có 10 trang thì phần này sẽ nạp ra trang đầu tiên)
Cảm ơn quý khách !

Tại tab Page

Page_Hearder: (có 10 trang thì luôn được nạp ở đầu trang)
Số hợp đồng: {recM:SoHoaDon:recM} , Nhân viên quản lý: {recM:TenKhachHang:recM}
{{##table_heard:E}}

Page_Footer: (có 10 trang thì luôn được nạp ở cuối trang)
{{##table_footer:R}}

Tại tab Details

Rpt_Detail : (luôn được nạp ơ mỗi trang nếu có html)
{{##table_row:R}}

 

2. Cách sử dụng Html Var
* In có sử dụng cấu trúc html table trong report

Chú ý nguyên lý tạo report:
Căn cứu vào Detail_Height (ví dụ chiều cao cấu hình là 10mm)
Chiều dài 1 trang A4 là 297mm, nhưng lấy phần hiển thị Page_Contains_Height (nhỏ hơn 297, thường là 280mm) , ví dụ tổng row là 30
- Report sẽ tính tổng số trang là bao nhiêu:
           TongHeightRpt = dtQuery_Details.Rows.Count * Detail_Height ;
           TongTrang = tongHeightRpt / height_Page;
           TongTrang = Math.Ceiling(tongTrang);
           Tổng chiều dài report in ra: 10(Detail_Height)*30 = 300
  ***           300 sẽ > 287 nên sẽ chia làm 2 trang

 

B1: Tại tab Query

Query:
 _SysDB/Data_Test (tùy vào tên query)

Query_Para

* Nếu đã lọc dữ liệu HoDonChiTiet ở query
DataMain:0
DataDetail:1

* Nếu chưa lọc dữ liệu HoDonChiTiet ở query
DataMain:0
DataDetail:1
DataDetail_Where:KeyHoaDon='{recM:_SYS_KEY:recM}'
(thêm dòng cuối)

B2: Tại tab Config

Page_Width
210mm

Page_Height
297mm

Page_Contains_Height
287mm

Detail_Height
30mm

 

B3: Vào tab Html Var tạo

<##table_heard>
<table class="table_nvl" border="1" width="100%" cellspacing="1" align="center">
<tr style="height:{recRpt:Page_Hearder_Height:recRpt}">
<td class="col_STT"  style='text-align:center;font-weight:bold;'>STT</td>
<td class="col_TEN"  style='text-align:center;font-weight:bold;'>Tên</td>
<td class="col_SL"  style='text-align:center;font-weight:bold;'>SL</td>
<td class="col_DG"  style='text-align:center;font-weight:bold;'>ĐG</td>
<td class="col_TT"  style='text-align:center;font-weight:bold;'>TT</td>
</tr>

</##table_heard>
<##table_row>
<tr style="height:{recRpt:Detail_Height:recRpt}">
<td class="col_STT">{recD:STT:recD}</td>
<td class="col_TEN">{recD:TenHang:recD}</td>
<td class="col_SL" style='text-align:right'>{recD:SL/-/{0:n0}:recD}</td>
<td class="col_DG" style='text-align:right'>{recD:DG/-/{0:n0}:recD}</td>
<td class="col_TT" style='text-align:right'>{recD:TT/-/{0:n0}:recD}</td>
</tr>

</##table_row>
<##table_footer>
</table>
</##table_footer>

 Tham khảo định dạng số: https://iif.vn/iif-admin/su-dung-lenh-trong-mau-html#recData

B3: Tại tab Report

Rpt_Hearder :(có 10 trang thì phần này sẽ nạp ra trang đầu tiên)
----
BÁO CÁO
Số hợp đồng: {recM:SoHoaDon:recM} , Nhân viên quản lý: {recM:TenKhachHang:recM}

Rpt_Footer :  (có 10 trang thì phần này sẽ nạp ra trang đầu tiên)
Cảm ơn quý khách !

Tại tab Page

Page_Hearder: (có 10 trang thì luôn được nạp ở đầu trang)
Số hợp đồng: {recM:SoHoaDon:recM} , Nhân viên quản lý: {recM:TenKhachHang:recM}
{{##table_heard:E}}

Page_Footer: (có 10 trang thì luôn được nạp ở cuối trang)
{{##table_footer:R}}

Tại tab Details

Rpt_Detail : (luôn được nạp ơ mỗi trang nếu có html)
{{##table_row:R}}

 
Chú ý: chế độ thay thế
Ví dụ: html đang có là : <b>XX<b/>

R: thay thế biến (dạng ghi đè) , sẽ xóa hết <b>XX<b/> và ghi đè mới
S: thay ở đầu,  Nội dung biến <b>XX<b/>
E: thay ở cuối,  <b>XX<b/> Nội dung biến

Tham khảo thêm

** >> Áp dụng thực thế việc lệnh thay thế
    - Nếu 1 report, query đã xử lý where cho hóa đơn chỉ định, tức luôn có 1 hóa đơn khi in thì phần thông tin hóa đơn có thể để ở

  *  Report -> Report Hearder:
   Số: {recM:SoHoaDon:recM} , tên: Số: {recM:TenKhachHang:recM}

  * Page_Hearder
   {{##table_heard:R}}

- Nếu mỗi hóa đơn ra 1 report
  *  Report -> Report Hearder: xóa nội dung   * Page_Hearder
  Số: {recM:SoHoaDon:recM} , tên: Số: {recM:TenKhachHang:recM}
   {{##table_heard:E}}
 



 

 

 

Mục liên quan: