2010-06-16 20 views
5

Bir Dynamics CRM 4 sorgusu oluşturmaya çalışıyorum, böylece "Olay A" veya "Olay B" olarak adlandırılan takvim olaylarını alabilirim.Ad alanının A veya B olduğu bir QueryExpression oluşturma

Bir QueryByAttribute, "event_name" = "event_name" = "Event B" alanının "Event A" adlı alanının bulunduğu bir koşul belirtemediğinden işi yapmıyor gibi görünüyor.

QueryExpression kullanıldığında, FilterExpression'un Referans Varlık için geçerli olduğunu buldum. FilterExpression'ın Başvurulan Kuruluşta kullanılabileceğini bilmiyorum. Aşağıdaki örnek, elde etmek istediklerim gibi bir şeydir, ancak bu, "ad" özniteliği için "my_event_response" adı verilen öğeye bakacak şekilde boş bir sonuç döndürecektir. Bunu elde etmek için birkaç soruyu çalıştırmam gerekecek gibi görünmeye başlıyor ama bu, hepsini bir kerede gönderebileceğimden daha az verimlidir.

ColumnSet columns = new ColumnSet(); 
columns.Attributes = new string[]{ "event_name", "eventid", "startdate", "city" }; 

ConditionExpression eventname1 = new ConditionExpression(); 
eventname1.AttributeName = "event_name"; 
eventname1.Operator = ConditionOperator.Equal; 
eventname1.Values = new string[] { "Event A" }; 

ConditionExpression eventname2 = new ConditionExpression(); 
eventname2.AttributeName = "event_name"; 
eventname2.Operator = ConditionOperator.Equal; 
eventname2.Values = new string[] { "Event B" }; 

FilterExpression filter = new FilterExpression(); 
filter.FilterOperator = LogicalOperator.Or; 
filter.Conditions = new ConditionExpression[] { eventname1, eventname2 }; 

LinkEntity link = new LinkEntity(); 

link.LinkCriteria = filter; 

link.LinkFromEntityName = "my_event"; 
link.LinkFromAttributeName = "eventid"; 

link.LinkToEntityName = "my_event_response"; 
link.LinkToAttributeName = "eventid"; 

QueryExpression query = new QueryExpression(); 
query.ColumnSet = columns; 
query.EntityName = EntityName.mbs_event.ToString(); 
query.LinkEntities = new LinkEntity[] { link }; 

RetrieveMultipleRequest request = new RetrieveMultipleRequest(); 
request.Query = query; 

return (RetrieveMultipleResponse)crmService.Execute(request); 

İhtiyacım olan verileri nasıl alacağına dair bazı tavsiyeleri takdir ediyorum.

cevap

6

QueryExpression nesnesinin, ayarlayabileceğiniz bir Kriteri özelliği vardır. ,

yalnızca yanıtları olduğu etkinliklerde arıyorsanız
ColumnSet columns = new ColumnSet(); 
columns.Attributes = new string[]{ "event_name", "eventid", "startdate", "city" }; 

ConditionExpression eventname1 = new ConditionExpression(); 
eventname1.AttributeName = "event_name"; 
eventname1.Operator = ConditionOperator.Equal; 
eventname1.Values = new string[] { "Event A" }; 

ConditionExpression eventname2 = new ConditionExpression(); 
eventname2.AttributeName = "event_name"; 
eventname2.Operator = ConditionOperator.Equal; 
eventname2.Values = new string[] { "Event B" }; 

FilterExpression filter = new FilterExpression(); 
filter.FilterOperator = LogicalOperator.Or; 
filter.Conditions = new ConditionExpression[] { eventname1, eventname2 }; 

QueryExpression query = new QueryExpression(); 
query.ColumnSet = columns; 
query.EntityName = EntityName.mbs_event.ToString(); 
query.Criteria = filter; 

RetrieveMultipleRequest request = new RetrieveMultipleRequest(); 
request.Query = query; 

return (RetrieveMultipleResponse)crmService.Execute(request); 

, içinde LinkEntity parçasını tutmak: Eğer isim A veya adı B'li "my_event" kayıtları arıyorsanız, sadece bu gibi kurmak ancak FilterExpression'u yukarıda sahip olduğum gibi QueryExpression nesnesine taşıyın.

İlgili konular