Wednesday, January 28, 2009

Pass parameters to crystal reports

การเพิ่มค่าให้ crystal report ผ่านตัวโปรแกรมเราเลย

  • ปกติที่เคยเขียนนะ ส่วนมากจะ query เอาข้อมูลผ่าน db อย่างเดียว
  • พอดีแก้โค้ดเพื่อนส่งงาน เพื่อนเค้าไม่เคยบอกเราเลยนะเนี๋ย
  • เห็นเข้าเขียนชื่อรายงานบนหัว crystal report จากในตัวโปรแกรมเลยไม่ต้อง query เอา
  • เราก็พึ่งรู้วิธีจากโค้ดเค้าเนี๋ยอ่ะ ^^'

Go
  • ที่ crystal report คลิกขวาที่ Parameter Fields => New...
  • ใส่ชื่อให้ Param ที่ช่อง Name: เราซะนะ
  • จากนั้นก็ลาก param1 (เราใส่ Name: เป็น param1) ของเราไปวางใน report ซะ
  • ส่วนการใส่ค่าโค้ดใน c# ก็ประมาณนี้
adapter.Fill(ds);
ds.WriteXmlSchema(Server.MapPath(@"ReportXSD.xsd"));
ReportDocument rpt = new ReportDocument();

rpt.Load(Server.MapPath(@"Report.rpt"));
rpt.Database.Tables[0].SetDataSource(ds.Tables[0]);


........วางโค้ดหลัง SetDataSource กับ Load ตรงนี้แหละ ลองเรียบร้อย .........

CrystalReportViewer1.ReportSource = rpt;
CrystalReportViewer1.DataBind();
  • การใส่ค่าแบบแรกเราอ้างจาก index ของตัวแปร
  • ในที่นี้เราจะเพิ่มค่าใ้ห้ param1 ซึ่งมันต่อจาก ReportName ดังภาพบนสุดฉนั้น index มันต้องเป็น 1 เพราะถ้าเราใช้ index 0 มันจะเป็นของ ReportName
rpt.ParameterFields[1].CurrentValues.AddValue("Hello world");
//rpt.SetParameterValue(1, "Hello world");

# แบบที่สองเราสามารถอ้างได้จากชื่อมันเลย

rpt.ParameterFields["param1"].CurrentValues.AddValue("Hello world");
//rpt.SetParameterValue("param1", "Hello world");

// ไม่ต้องใส่เครื่องหมาย @ หน้า param นะจะบอกให้

References

No comments:

Post a Comment

Popular Posts