cub-e.net

just coding...

Microsoft Dynamics CRM 3.0 ‘dan Veri Sorgulama Yöntemleri -3 (FetchXML Kullanarak Veritabanına Erişim)

Microsoft Dynamics CRM 3.0 ‘dan Veri Sorgulama Yöntemleri -3 (FetchXML Kullanarak Veritabanına Erişim)

Önceki iki makalemde Microsoft CRM Web Servislerini ve Sql kullanarak veri sorgulama yöntemlerini örnekler vererek açıklamıştım. Son yöntemimiz ise FetcXML kullanarak CRM veri katmanına erişmek. Bu yöntem bir ad-hoc query yaratır ve bu query Microsoft CRM sistemi üzerindeki entityler üzerinde servisler vasıtasıyla icra edilir. Bu yöntemi QueryExpression (yani 1. makalede ele aldığım konu)'den farklı kılan taraf ise Fetch yönteminin bize Microsoft CRM BusinessEntity sinifindan bir XML döndürmesidir. 

FetchXML'in ayrı bir sorgulama dili olduğu ve kendi yazım kuralları olduğu unutulmamalıdır.

Bu yöntemi kullanarak veri okuyabilme işlemi sırasında sorguyu çağıran kişinin sistem erişim hakları (access rights) üzerinde Read privilege yetkisi olması gerekmektedir.

Biçim

			[Visual Basic]Public Function Fetch(  ByVal fetchXml As String) As String
			
			[C#]public string Fetch(  string  fetchXml);
			
			[JScript]public function Fetch(  fetchXml : String) : String;
			
Parametreler fetchXml : İcra edilecek Fetch query.
Dönen Değer String türünde içerisinde sorgu sonucunu bulunduran XML döner.
Sorgu İfadeleri
Koşul
Koşul İfadesi Değer
equals x eq x
does not equal x ne x
is greater than x gt x
is greater than or equal to x ge x
is less than x lt x
is less than or equal to x le x
begins with x like x%
does not begin with x not-like x%
ends with x like %x
does not end with x not-like %x
contains x like %x%
does not contain x not-like %x%
exists not-null  
does not exist null  
anytime not-null  
yesterday yesterday  
today today  
tomorrow tomorrow  
in next 7 days next-seven-days  
in last 7 days last-seven-days  
next week next-week  
last week last-week  
this week this-week  
this month this-month  
last month last-month  
next month next-month  
this year this-year  
next year next-year  
last year last-year  
on x on x
on or after x on-or-after x
on or before x on-or-before x
in between between  
not between not-between  
in in  
not in not-in  
equals user id eq-userid  
does not equal user id ne-userid  
equals business id eq-businessid  
does not equal business id ne-businessid  

Örnek Uygulama :
Yukarıdaki tabloda sorgu ifadeleri kısmında "Koşul İfadesi" kısmında yazan değerler bizim normal sql cümlesinde kullandığımız ifadelere benzemektedir. Tek fark "=","<",">" gibi ifadelerin yerlerine "eq","gt","lt" gibi text bazlı ifadelerin gelmiş olmasıdır. Aşağıdaki örnek kodda ben sql'den bildiğimiz "like" operatörünü kullanacağım.
Herzaman olduğu gibi şimdi de kod üzerinde açıklama yönetimi tercih ediyorum ki kodu uygulamalarınıza kopyalayıp yapıştırdığınızda açıklamalar da beraberinde kodun içinde olsun diye. Unutulmamalıdır ki buradaki uygulamayı çalıştırabilmeniz için Veri Sorgulama Yöntemleri-1 isimli makalemde yer alan CRM Web Servisinin eklenmesi adımının yapılmış olması gerekmektedir.

private
void btnQueryWithFetchXML_Click(object sender, EventArgs e)
{
   
try
    {
       
// CRM Servis'ini cagiriyoruz
       
CrmService service = new CrmService();
       
// servise network'te kim oldugumuzu soyluyoruz. (Eger CRM Server'i ile ayni domainde degilseniz
        // bunu yapmak zorundasiniz yoksa "The request failed with HTTP status 401: Unauthorized." hatasini alirsiniz)
        System.Net.NetworkCredential MyCredential = new System.Net.NetworkCredential();
        MyCredential.UserName = ""; // Domain Kullanici Adi
        MyCredential.Password = ""; //Domain Kullanicisinin Sifresi
        MyCredential.Domain = ""; //Domain Adi
        service.Credentials = MyCredential;
       
// Eger crm server ile ayni domainde iseniz ve sizin crm'de bir rolunuz varsa asagida parantezler icerisinde
        // belirttigim komutu yukaridaki 5 satir yerine kullanabilirsiniz
        // ( service.Credentials = System.Net.CredentialCache.DefaultCredentials; )
       
       
// Geri donecek butun Contact'lardan Contactid ve FullName degerlerini istiyoruz
        // Sehir ismi "Istanbul" olanlar cagiriyoruz.
       
string fetch = "<fetch mapping='logical'>"+
                                       
"<entity name='contact'>"+
                                           
"<attribute name='contactid'/>"+
                                           
"<attribute name='fullname'/>"+
                                               
"<filter type='and'>"+
                                                   
"<condition attribute='address1_city' operator='like' value='İstanbul'/>"+
                                               
"</filter>"+
                                       
"</entity>"+
                               
"</fetch>";
       
// Service'e gonderiyoruz
       
string result = service.Fetch(fetch);
       
MessageBox.Show(result);
        // Gelen result'u XML objeleri ile parse edebiliriz.
    }
   
// Soap yani Web Servisi hatalarini yakalamak icin ilgili Exception sinifimiz ekliyoruz.
   
catch (System.Web.Services.Protocols.SoapException ex)
    {
       
MessageBox.Show(ex.Message + " " + ex.Detail.InnerText);
    }
   
// Soap disindaki Standart hatalari yakalamak icin Exception'i da kodumuza ekliyoruz.
   
catch (Exception ex)
    {
       
MessageBox.Show(ex.Message);
    }
}

Microsoft CRM 3.0'dan veri sorgulama yöntemleri isimli makalemizin sonuna ulaştık. Umarım bu konuları detaylı açıklayabilmişimdir. Bana her türlü sorunda mail adresimden ulaşabilirsiniz. Yeni bir makalede görüşmek üzere.

Barış KANLICA
Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net
Loading