রিপোর্ট তৈরি করা অত্যন্ত সহজ একটি কাজ। কিন্তু তা মাথা ঠাণ্ডা রেখে করতে হবে।
কয়েকটি ধাপে এটি করতে হয়।
আমি ধরে নিলাম আমার একটি গ্রিডে আমার কাঙ্ক্ষিত ইউজার আইডিটি আছে। সেই আইডিটি দিয়ে আমি আমার রিপোর্ট বা পিডিএফ বের করে আনব।
প্রথম ধাপ ঃ
//এখানে Rpt ফোল্ডারের ভিতরে dip_rip.aspx নামে একটি .aspx file তৈরি করতে
কয়েকটি ধাপে এটি করতে হয়।
আমি ধরে নিলাম আমার একটি গ্রিডে আমার কাঙ্ক্ষিত ইউজার আইডিটি আছে। সেই আইডিটি দিয়ে আমি আমার রিপোর্ট বা পিডিএফ বের করে আনব।
প্রথম ধাপ ঃ
protected void print_Click(object
sender, EventArgs e)
{
//এইটা প্রথমে করতে হবে।
string[]
fiv = new string[1];
fiv[0] =
GV_evalute_cv.Rows[0].Cells[0].Text;
Session["dip_id"]
= fiv[0];
//StringBuilder
Script = new StringBuilder();
String
script = "window.open('../Rpt/dip_rip.aspx?que=dip',
'popup', 'location=1, status=1, scrollbars=1')";
//হবে।
ScriptManager.RegisterClientScriptBlock(this, GetType(), UniqueID, script, true);
}
২য় ধাপ ঃ
// window.open('../Rpt/dip_rip.aspx?
তার মানে Rpt নামে একটি folder তৈরি করতে হবে । তার ভিতরে report_cv নামে একটি
.aspx নিতে হবে।
যার Content এর ভিতরে Toolbox থেকে একটি CrystalReportViewer নিতে হবে।
যা কিনা উপরের দৃশ্বীয় মান ছবিটির মন হবে।
এবার ওয়েব সাইট বা প্রোজেক্টের উপর রাইট ক্লিক করে একটি xml ফাইল নেই । আমি এখানে ফাইলটার নাম দিলাম cv.xml
CrystalReportViewer এর উপর মাউসের রাইট ক্লিক করে কোড ভিউ তে যেতে হবে ।
এবার report_cv.aspx.cs ফাইলটিতে একটি লাইবেরি ফাংশন যোগ করতে হবে।
using CrystalDecisions.CrystalReports.Engine;
২য় ধাপ ঃ
// window.open('../Rpt/dip_rip.aspx?
তার মানে Rpt নামে একটি folder তৈরি করতে হবে । তার ভিতরে report_cv নামে একটি
.aspx নিতে হবে।
যার Content এর ভিতরে Toolbox থেকে একটি CrystalReportViewer নিতে হবে।
যা কিনা উপরের দৃশ্বীয় মান ছবিটির মন হবে।
এবার ওয়েব সাইট বা প্রোজেক্টের উপর রাইট ক্লিক করে একটি xml ফাইল নেই । আমি এখানে ফাইলটার নাম দিলাম cv.xml
CrystalReportViewer এর উপর মাউসের রাইট ক্লিক করে কোড ভিউ তে যেতে হবে ।
এবার report_cv.aspx.cs ফাইলটিতে একটি লাইবেরি ফাংশন যোগ করতে হবে।
using CrystalDecisions.CrystalReports.Engine;
public partial
class Rpt_report_cv
: System.Web.UI.Page
{
ReportDocument
doc=new ReportDocument();
DAL
mycls=new DAL();
protected void Page_Load(object
sender, EventArgs e)
{
//Session["cv_id"]
= fiv[0];
string
sql = "";
DataTable
dt = new DataTable();
sql=@"select p.position_name,r.religon_name
from tbl_cv c
left
join tbl_emp_stat_cv cv_s on cv_s.p_s_cv_id=c.id
left
join tbl_status s on s.id=cv_s.p_s_id
where
c.id IN (" + Session["dip_id"]
+ ")";
dt = mycls.report_employee_list(sql);
//DAL পেজে এই কোড লিখতে হবে
public DataTable report_employee_list(string sql)
// এই পর্যন্ত । ডাটা টেবিল এর কানেকশন এর জন্য
//DAL পেজে এই কোড লিখতে হবে
public DataTable report_employee_list(string sql)
{ SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["mehedi_dbConnectionString"].ConnectionString); SqlCommand cmd = new SqlCommand(sql, cn); DataTable dt = new DataTable(); SqlDataAdapter ad = new SqlDataAdapter(cmd); ad.Fill(dt); return dt;}
// এই পর্যন্ত । ডাটা টেবিল এর কানেকশন এর জন্য
dt.TableName = "cv";
//dt.WriteXmlSchema(Server.MapPath("~/cv.xml"));
//এটি এখন বন্ধ করা আছে। প্রথম বার চালানোর পর এটি বন্ধ করে দিতে হয়। এটি দ্বারা cv.xml ফাইলে xml রাইট হয়।এই লাইনটি চালানোর পর নিচের ছবির মত করে cv.xml এ কোড অটো লিখা হয়ে যাবে। এটি একবারই করতে হয় । তাই এই লাইনটি বন্ধ করা।
doc.Load(Server.MapPath("rpt_cv.rpt"));
//এই লাইনটির মানে হল rpt_cv.rpt ফিলেটা লোড করবে। যা ৩য় ধাপে আলোচনা করব।
doc.SetDataSource(dt);
MemoryStream
oStream;
oStream= (MemoryStream)doc.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.BinaryWrite(oStream.ToArray());
Response.End();
}
}
৩য় ধাপ ঃ
Rpt নামে folder টি তে rpt_cv.rpt নামে একটি .rpt নিতে হবে.
No comments:
Post a Comment