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...

Ms crm'de grid'lerde listelenen kayıtların saysını değiştirmek

Merhaba arkadaşlar bugün sizlere normalde  desteklenmeyen, fakat bazı durumlarda sizi sıkıntılardan kurtaracak bir trick den bahsedeceğim. Hepimiz biliyoruz ki Ms crm de bulunan grid'lerde gelen toplam kayıt sayısı default'da 50 dir. Fakat siz bu sayıyı ayarlardan(settings) 250 kayıda kadar çıkarabilirsiniz.
 Buraya kadar herşey normal, farzedin ki kayıt sayımız çok fazla ve keyfi olarak bu kayıtların sayısını 1500 olarak sayfalamak istiyorsak, bu islemi crm den yapamayız. Bu işlemi SQL Studio'dan Ms crm database'ini  açarak ilgili alanı update ederek yapabiliriz. Bu yöntem default yapıyı bozduğu için fazla tavsiye edilmeyen bir yöntemdir. Bu işlemde update etmeniz gereken tablo UserSettingsBase tablosudur.

                                          update usersettingsbase set paginglimit=2000

11 Mayıs 2010 Salı

CRM v4.0 Reporting Service'in print hatası "Unable to Load Client Print Control"

Merhaba arkadaşlar bugün crm de Report service kullanarak custom bir rapor sayfası yaptım ve daha sonra crm entegre ettim fakat raporu print almak istediğimde  "Unable to Load Client Print Control" diye bir hatayla karşılaştım. Biraz araştırma yaptım ama kimsenin kesin bir çözüm vermediğini veya karşılaşanların farklı yöntemlerle yada vazgeçerek raporu pdf çevirdiklerine rastladım. Biraz uğraş sonrasında hatanın Windows Security Update KB956391 hatası olduğunu buldum.

Çözümü ise aşağıda verdiğim linklerden gereken update leri yaptıkdan sonra çözdüm. Umarım işinize yarar.

CRM Server:
SQL Server: