Wednesday, December 4, 2013

Make a Report

রিপোর্ট তৈরি করা অত্যন্ত সহজ একটি কাজ। কিন্তু তা মাথা ঠাণ্ডা রেখে করতে হবে।
কয়েকটি ধাপে এটি করতে হয়।
আমি ধরে নিলাম আমার একটি গ্রিডে আমার কাঙ্ক্ষিত ইউজার আইডিটি আছে। সেই আইডিটি দিয়ে আমি আমার রিপোর্ট বা পিডিএফ বের করে আনব।

প্রথম ধাপ  ঃ


   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')";
         //এখানে Rpt ফোল্ডারের ভিতরে dip_rip.aspx নামে একটি .aspx file তৈরি করতে 
         //হবে। 

        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;




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)
    { 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