IN MẪU DẠNG GROUP

YÊU CẦU

  • Trên dữ liệu, các dòng dữ liệu thuộc 01 nhóm GroupIn

  • Khi view in thì 01 nhóm GroupIn sẽ in thành 1 bộ chứng từ riêng

  • Ví dụ:

    • Sổ chi tiết vật tư in liên tục: 01 vật tư khi in là 01 bộ chứng từ riêng biệt

HƯỚNG DẪN

Yêu cầu dữ liệu

  • Có 01 cột dùng để xử lý in theo nhóm. Gọi là GroupIn

  • Sắp xêp tuần tự theo GroupIn

  • Trong GroupIn, sắp xếp theo 1 tiêu chí khác, để đảm bảo các lần in khác nhau đều được sắp xếp theo cùng 1 nguyên tắc

Xử lý mẫu in

1. Tạo GroupHeader1 (Level0) để vẽ tiêu đề cột

  • Thêm 01 groupHeader

    Tạo 01 groupHeader

  • Cấu hình group cho band vừa tạo

    Cấu hình groupFields

2. Tạo GroupHeader2 (Level1) để vẽ nội dung pageHeader

  • Thêm 01 groupHeader

    Tạo groupHeader

  • Cấu hình group cho band vừa tạo

    cấu hình groupFields

3. Tạo GroupFooter để vẽ nội dung sum tổng cuối cùng của bảng

  • Tạo groupFooter

    Tạo 01 groupFooter - tạo nội dung sum tổng kết sau detail
  • Cấu hình ngắt trang giữa các group: Nếu không cấu hình thì các group sẽ in liên tục trên cùng 1 tờ giấy, mong muốn là kết thúc 1 group thì ngắt trang để in group mới

    Cấu hình groupFooter - Ngắt trang

4. Tạo detail - vẽ nộ dung lưới chi tiết

  • Giữ nguyên detail

5. Xử lý sum cột của detail trong mẫu in group

  • Nếu không cấu hình, thì sum(cột) sẽ là sum(all dòng) của bảng dữ liệu thay vì là của các dòng trong group

    Cấu hình groupFooter - tính sum(cột) các dòng thuộc group

  • Xử lý đọc tiền ra chữ. Do không thể truyền thông qua biến parameter nên cần xử lý lại dataSource của phiếu in. Thêm cột docsorachu và gán nội dung vào để sử dụng trong mẫu in

// Some code
/*
- do mẫu in theo group(kho) nên cần xử lý lại tienhang, docsorachu theo từng kho
- group kho
- sum tienhang theo kho, docsorachu theo kho
*/
if(!dt.Columns.Contains("tienhang"))
	dt.Columns.Add(new DataColumn() { ColumnName = "tienhang", DataType = typeof(int), DefaultValue = 0 });
if(!dt.Columns.Contains("docsorachu"))
	dt.Columns.Add(new DataColumn() { ColumnName = "docsorachu", DataType = typeof(string), DefaultValue = "" });
string sWhere = "";
decimal TienHang = 0, TienHangNgoaiTe = 0;
DataView dtDL = new DataView(dt);
DataTable dtKho = dtDL.ToTable(true, new string[] { "kho" });
if(_Vari.Developer || _Vari.Customer)
	{
		dtKho.TableName = "";
		_Func.ViewTable(dtKho);
	}
			
if(dtKho != null && dtKho.Rows.Count != 0)
	{
		for (int i = 0; i < dtKho.Rows.Count; i++)
			{
				swhere = "tkco like '15%' and khutrung<>3 and kho="+ dtKho.Rows[i]["kho"].ToString(); // nếu phiếu xuất thì đổi điều kiện
				//_Func.TextEditer(swhere);
				decimal.TryParse(dt.Compute("Sum(psno)", swhere).ToString(), out TienHang);
				//MessageBox.Show(TienHang.ToString());
				_Func.EditTable(dt, "tienhang", TienHang, "kho="+ dtKho.Rows[i]["kho"].ToString(), false);
				_Func.EditTable(dt, "docsorachu", formreport.BangChu(TienHang.ToString(), loaitien) , "kho="+ dtKho.Rows[i]["kho"].ToString(), false);
			}
	}

Last updated