2010-06-16 7 views
5

है, मैं एक डायनेमिक्स सीआरएम 4 क्वेरी बनाने की कोशिश कर रहा हूं ताकि मैं कैलेंडर ईवेंट प्राप्त कर सकूं जिन्हें "इवेंट ए" या "इवेंट बी" नाम दिया गया हो।एक क्वेरी एरिक्शन का निर्माण जहां नाम फ़ील्ड या तो ए या बी

एक QueryByAttribute नौकरी नहीं प्रतीत होता है क्योंकि मैं ऐसी स्थिति निर्दिष्ट नहीं कर सकता जहां फ़ील्ड "event_name" = "event_" "event_name" = "Event B" नामक फ़ील्ड है।

QueryExpression का उपयोग करते समय, मुझे पता चला है कि फ़िल्टरएक्सप्रेस रेफरेंसिंग इकाई पर लागू होता है। मुझे नहीं पता कि फ़िल्टरएक्सप्रेस का संदर्भ संदर्भित इकाई पर बिल्कुल किया जा सकता है या नहीं। नीचे दिया गया उदाहरण कुछ ऐसा है जो मैं प्राप्त करना चाहता हूं, हालांकि यह एक खाली परिणाम सेट वापस कर देगा क्योंकि यह "name" विशेषता के लिए "my_event_response" नामक इकाई में देखेगा। ऐसा लगता है कि इसे पाने के लिए मुझे कई प्रश्नों को चलाने की आवश्यकता होगी, लेकिन अगर मैं इसे एक साथ सबमिट कर सकता हूं तो यह कम कुशल है।

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

मैं डेटा की आवश्यकता के बारे में कुछ सलाह की सराहना करता हूं।

उत्तर

6

QueryExpression ऑब्जेक्ट में एक मानदंड संपत्ति है जिसे आप सेट कर सकते हैं। आप "my_event" अभिलेख नाम ए या बी नाम है के लिए देख रहे हैं, बस इसे सेट अप इस तरह:

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

आप केवल घटनाओं है कि प्रतिक्रिया के लिए देख रहे हैं, में LinkEntity हिस्सा रखने के लिए, लेकिन FilterExpression को ऊपर की तरह QueryExpression ऑब्जेक्ट पर ले जाएं।

संबंधित मुद्दे