18 Mayıs 2010 Salı

Reporting Service'le yapılmış bir raporu pdf çevirme.


Merhaba arkadaşlar bugün işinize çok yarayacak bir kod örneği vereceğim. Bugünkü konumuz Reporting service(.rdl) le yapılmış bir raporu pdf çevirmek. Bu işlemi yapmamdaki amaç Blackberry veya benzer bazı PDA’ lerle Ms crm den Reporting service’le  yapılmış bir raporu çektiğimizde bunu göstermeyecektir  Bu raporu pdf  çevirdiğimizde sorunsuz bir şekilde şeklinde çalışacaktır. Bu konuda fazla ayrıntıya girmeyeceğim. Size bu işlemi nasıl yapacağınızı kısaca anlatacağım. İlk olarak yeni bir Reports Application uygulaması açın. Bu uygulamayı ihtiyacınıza göre şekilendirin ve alacağı parameterleri  yazın. Daha sonra yeni bir .aspx  uygulaması  açın ve page’in load’una aşağıdaki kodu ekleyin. Uygulamanıza  ReportExecution2005.wsdl web service kısmına RSWebReference adıyla ekleyin. Son olarak Ms crm’e bir button ile yaptığınız aspx sayfasını  ekleyin.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using RSWebReference;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
  string oId = Request.QueryString["oId"].ToString();

        ReportExecutionService rs = new ReportExecutionService();
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
        // Render arguments
        byte[] result = null;
        string reportPath = "/Report_Project/Yeni açtığımız raporun adı";//rapaorun bulunduğu path
        string format = "PDF";
        string historyID = null;

//rapor uygulmamıza bir parametre yollayalım. İsterseniz aynı şekilde birden fazla parametre yollayabilirsiniz.
        ParameterValue[] parameters = new ParameterValue[1];
        parameters[0] = new ParameterValue();
        parameters[0].Name = "rapordaki parametrenin adı";//
        parameters[0].Value = oId;


        string encoding;
        string mimeType;
        string extension;
        Warning[] warnings = null;
        string[] streamIDs = null;

        ExecutionInfo execInfo = new ExecutionInfo();
        ExecutionHeader execHeader = new ExecutionHeader();

        rs.ExecutionHeaderValue = execHeader;

        execInfo = rs.LoadReport(reportPath, historyID);

        String SessionId = rs.ExecutionHeaderValue.ExecutionID;
        rs.SetExecutionParameters(parameters, "tr-TR");

        result = rs.Render(format, null, out extension, out encoding, out mimeType, out warnings, out streamIDs);

        Response.ClearContent();
        Response.AppendHeader("content-length", result.Length.ToString());
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(result);
        Response.Flush();
        Response.Close();
    }

}

Umarım işinize yarar. Gelecek yazımda görüşmek üzere...

Hiç yorum yok:

Yorum Gönder