2011-06-20 32 views
2

正如標題所示,我需要從列表中排除成員。我已經嘗試使用高級查找來提出XML查詢,但我沒有取得很大進展。從Dynamics CRM 4和2011中的列表中排除成員

我想要做的是根據用戶是否想要發生的行爲發生在那些誰已經明確接受了協議,只有那些成員或第二個選項來處理該行動每個沒有特別拒絕協議的人,不管他們是否接受或不接受。

我需要的是尋找拒絕協議的所有人並從列表中選擇其他人。當成員拒絕協議時,創建一個實體來反映這一點。這對那些接受協議的人很有效。不過,我無法選擇所有沒有與其關聯的實體的人。

我希望這不是太混亂...

回答

2

在SQL實現這一點,你通常做一個LEFT OUTER JOIN給人以協議相結合,然後篩選出大家一個非空的協議。

當我告訴你這個在Dynamics CRM中不可能的時候,你不會相信我。

雖然它需要通過導出/導入手動編輯XML查詢,但可以執行外連接。但是,由於FetchXML無法在頂級<filter>子句中引用來自<linked-entity>內部的項目,因此外部聯接是無用的。如果在<link-entity>之內,則將其轉換爲Join的ON子句,該子句不等於外連接的WHERE子句。

這是來自Dynamics CRM的令人震驚的遺漏。

在這篇文章底部的神祕音符試圖解釋這一點:http://msdn.microsoft.com/en-us/library/ms936574.aspx

0

嗯,首先......他們爲什麼不包括一種方法來從列表中排除成員這博格爾斯我的心..有什麼理由讓我只是沒有看到?我無法想象有,但我仍然知道這麼少...

雖然經過幾次重新設計,我已經設法使這項工作。我們抓住所有人的名單,並與拒絕的人加入,並將拒絕的日期添加到其中。

declinedNode = entityNode.GetChildNode("link-entity", "link-entity[@name='xx_decline_{0}']".FormatWith(memberType)); 
declinedNode.SetAttribute("name", "xx_decline_{0}".FormatWith(memberType)); 
declinedNode.SetAttribute("from", "xx_parent_{0}id".FormatWith(memberType)); 
declinedNode.SetAttribute("to", "{0}id".FormatWith(memberType)); 
declinedNode.SetAttribute("link-type", "outer"); 
declinedNode.SetAttribute("alias", "declined"); 

var declinedDateNode = fetchXmlDoc.CreateNode(XmlNodeType.Element, "attribute", string.Empty); 
declinedDateNode .SetAttribute("name", "xx_declineddate"); 
declinedNode.AppendChild(declinedDateNode); 

然後服務器端已經通過列表中的所有成員循環,所以我們只是把一個條件,如果它已經爲我們忽略了它的下降日期的值。