วันอังคารที่ 15 ตุลาคม พ.ศ. 2556

How to Print Report by Crystal Reports (C#) ตอนที่ 4 Insert Picture , Parameter Report , Set Details full Page

How to Print Report by Crystal Reports (C#)  ตอนที่ 4 Insert Picture , Parameter Report , Set Details full Page

1.Insert Picture การเพิ่ม รูปภาพลงใน Report
     

      สร้าง Table ใน DataSet สร้าง Field มา 1 Field มารองรับ ข้อมูลรูปภาพ 
      โดยใช้ DataType = System.Byte[]
  
      จากนั้นเขียน คำสั่งในการเพิ่ม รูปภาพ ลงใน Field ที่สร้างขึ้นมารองรับ

        public DataSet addPic(DataSet DS,String Patch)
        {
            DataRow tempRow = DS.Tables["Emp_pic"].NewRow(); // สร้าง บรรทัดใหม่ ขึ้นมา โดยใช้ DataRow
            tempRow["Emp_picture"] = mappicture("W:\\" + Patch + ".bmp"); // เพิ่มรูปภาพตาม Patch ลงใน DataRow ที่สร้าง
            DS.Tables["Emp_pic"].Rows.Add(tempRow);  // เพิ่ม รูปภาพลงใน DataSet ที่สร้างไว้
            return DS;
        }

        public byte[] mappicture(String Patch)
        {
            FileStream fiStream = new FileStream(Patch, FileMode.Open, FileAccess.Read); 
            BinaryReader binReader = new BinaryReader(fiStream);
            byte[] pic = { };
            pic = binReader.ReadBytes((int)fiStream.Length);
            return (pic);
        }

_____________________________________________________________________________

2.การสร้าง Parameter ใน Report เพื่อรับค่า จากโปรแกรม

ใน Report สามารถสร้าง Parameter สำหรับ รับค่าจากโปรแกรมแสดงที่ Report ได้ โดยสร้างที่ Parameter fields 
การส่งค่า 
          ReportDocument rpt = new ReportDocument();
          rpt.Load(Report);
          rpt.SetParameterValue("isYear", this.is_Year); // เพิ่มค่า ลง Parameter


_______________________________________________

3.Set Details Full Page 

          สำหรับแก้ไขปัญหา Detail ไม่เต็มหน้ากระดาษ มีพื้นที่ว่าง  Method ต่อไปนี้ จะเป็นการ ตรวจสอบและเพิ่มข้อมูลให้ครบ 1 หน้ากระดาษพอดี  โดยข้อมูลที่เพิ่มมาจะไม่ได้แสดงใน Report แต่จะทำให้ตีกรอบตาราง ให้สวยงาม

          โดยใช้วิธี  1 หน้ากระดาษ มี Details ได้มากสุด 20   หาก Report ที่แสดงออกมา มี 14 ก็ใช้วิธี 20 - 14 = 6 คือจำนวนของ ช่องเปล่าที่ต้องแสดงออกมาให้ครบ พอดี 1 หน้ากระดาษ โดยเพิ่มข้อมูล ลงไป ให้ครบ แต่ เป็นข้อมูลที่ไม่แสดงที่ Report แต่จะทำให้ตีกรอบข้อมูล

Code
    public DataSet chkdataset(DataSet DS)
        {
            int freerows = 20 - ((DS.Tables["ITR_Topic_db"].Rows.Count) % 20); // หาจำนวนที่เหลือเพื่อให้ ครบ 1 หน้ากระดาษ
            if (((DS.Tables["ITR_Topic_db"].Rows.Count) % 20) != 0)
            {
                for (int i = 0; i < freerows; i++)
                {
                    DataRow tempRow = DS.Tables["ITR_Topic_db"].NewRow();
                    tempRow["Topic_code"] = "temp" + i;                      
                    DS.Tables["ITR_Topic_db"].Rows.Add(tempRow);              //เพิ่มข้อมูล ให้ตรบ 20 บรรทัด  
                }
            }
            return DS;
        }


ไม่มีความคิดเห็น:

แสดงความคิดเห็น