How to Print Report by Crystal Reports (C#) ตอนที่ 3 Query Database to DataSet And Display Report
1. Method สำหรับ นำคำสั่ง SQL ไป Query ข้อมูล ออกมาในรูปแบบของ DataSet
public DataSet First(String Emp_code, String isYear)
{
DataSet2 sDs = new DataSet2(); // DataSet ทีสร้าง ไว้ก่อนหน้านี้
String strSQl = "select e.Emp_code,e.Prename_th,e.Firstname_th,e.Lastname_th,"
+ " e.Prename_eng,e.Firstname_eng,e.Lastname_eng,e.Grade_name,"
+ " d.Dept_name,e.Emp_date"
+ " from ITR_EMP_db e left join ITR_Dept_db d"
+ " on e.Dept = d.Dept_no"
+ " where e.act <> 'D' and e.Emp_code = '" + Emp_code.Trim() + "'";
//strSQl สำหรับ ดึงหัวข้อ เพื่อแสดงที่ Page Header มี 1 ค่า
String strSQL2 = "Select t.Topic_code,t.Pln_from,t.Pln_to,t.Topic_name,t.Term,"
+ "t.Trainner1,t.Approve,d.Result,t.Unit from ITR_Details d"
+ " left join ITR_Topic_db t on d.Topic_code = t.Topic_code"
+ " where t.act <> 'D' and d.act <> 'D' and d.Emp_code = '" + Emp_code+ "'"
+ " and t.pln_from like '%" + isYear.Trim() + "'"
+ " and (Select COUNT(*) from ITR_Details s"
+ " where s.Act <> 'D' and s.Topic_code = t.Topic_code and s.Result = '-') = 0 "
+ " order by (SUBSTRING(t.Pln_from,4,2)+SUBSTRING(t.Pln_from,1,2))";
//StrSQL สำหรับ ดึงค่า Details ออกมาแสดง ในส่วนของ Details มีมากกว่า 1 ค่า
return Query_Report(strSQl, strSQL2, "ITR_EMP_db", "ITR_Topic_db", sDs); // Return เป็น DataSet
}
__________________________________________________
2. Method สำหรับ Query ออกมา แล้ว Return ออก ในรูปแบบ DataSet ที่สร้างไว้ใน DataSet2
public DataSet2 Query_Report(String isSQL, String isSQL2, String Database, String Database2, DataSet2 sds)
{
try{
this.objConn.Open();
// 1
this.objCmd = new SqlCommand(isSQL, objConn);
SqlDataAdapter sadpter = new SqlDataAdapter(this.objCmd);
sds.Clear();
sadpter.Fill(sds, Database);
// 2
this.objCmd = new SqlCommand(isSQL2, objConn);
sadpter = new SqlDataAdapter(this.objCmd);
sadpter.Fill(sds, Database2);
this.objConn.Close();
return sds;
}
catch (InvalidOperationException XcpInvOp)
{
System.Windows.Forms.MessageBox.Show(XcpInvOp.ToString());
return null;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
return null;
}
}
_______________________________________________
3.Method สำหรับ จัดการข้อมูล และ แสดง Report
using System.IO; //เอาไว้หาข้อมูลปัจจุบัน Directory.GetCurrentDirectory()
using CrystalDecisions.CrystalReports.Engine; // เอาไว้เรียก Report ReportDocument
public void First()
{
Result_view_con tvc = new Result_view_con();
DataSet Data2 = tvc.First(this.Emp_code, this.is_Year); // สำหรับ Query ข้อมูล Return เป็น DataSet
Data2 = addPic(Data2, this.Emp_code); // เพิ่มรูปภาพ
Data2 = chkdataset(Data2); // ตรวจสอบข้อมูลที่แสดงออก Details
ReportDocument rpt = new ReportDocument();
//******************************************************************************************* Connect report c#
try
{
String Report = Directory.GetCurrentDirectory() + "\\Report\\QR-AD-002.rpt"; // สำหรับ เรียกหา Report โดย Directory.GetCurrentDirectory() ดึงที่อยู่ปัจจุบัน
rpt.Load(Report);
}
catch (Exception)
{
rpt.Load("..\\..\\QR-AD-002.rpt");
}
//******************************************************************************************* Connect report c#
rpt.Database.Tables[0].SetDataSource(Data2.Tables[0]); // เพิ่ม ตารางใน DataSet ที่สร้าง ตารางที่ 1
rpt.Database.Tables[1].SetDataSource(Data2.Tables[1]); // ตารางใน DataSet ที่สร้าง ตารางที่ 2
rpt.Database.Tables[2].SetDataSource(Data2.Tables[2]); // ตารางใน DataSet ที่สร้าง ตารางที่ 3
rpt.SetParameterValue("isYear", this.is_Year); // เพิ่มค่าในตัวแปร isYear ใน Report
this.Result_view_form.ReportSource = rpt;
this.Result_view_form.DisplayGroupTree = false;
this.Result_view_form.Refresh();
}
____________________________________________________________________
ไม่มีความคิดเห็น:
แสดงความคิดเห็น