2012-10-26 43 views
3

我在做一個插件裏面這個簡單的查詢:CRM 2011未知條件運算符:NOTON

QueryExpression query = new QueryExpression(hb_aula.EntityLogicalName); 
query.ColumnSet = new ColumnSet(true); 

query.Criteria = new FilterExpression(LogicalOperator.And); 
query.Criteria.Conditions.Add(new ConditionExpression("hb_datafim", ConditionOperator.NotOn, DateTime.Now)); 

EntityCollection ent = service.RetrieveMultiple(query); 

當我試圖檢索所有hb_aula記錄在hb_datafim日期字段不是今天(或一些其他具體日期,DateTime.Now只是一個例子)。

當我執行此我得到的錯誤

未知條件運算符:NOTON。

我做錯了什麼或者這是未完成的CRM 2011功能嗎?

+0

爲什麼不使用小於00:00今天早上(所以轉換DateTime.Now日期只在00:00並使用它)? – AdamV

+0

這對我來說很好。你有沒有得到任何錯誤的錯誤。時間還是編譯時間? – Daryl

+0

AdamV我不在尋找解決方法我想知道爲什麼我不能使用該特定的運算符。如果無法使用,爲什麼它在那裏?爲了模擬同一個運算符,我總是需要兩個條件,一個是小於一個,另一個是大於,另外還有時間部分問題.Daryl我在運行時得到錯誤。 – budahead

回答

2

我對你的用例做了一些測試,得到了相同的結果。看起來這可能在SDK中還未完成。我建議使用以下解決方法 -

DateTime today = DateTime.Now; 
DateTime yesterday = today.AddDays(-1); 
DateTime tomorrow = today.AddDays(1); 
FilterExpression filter = new FilterExpression(LogicalOperator.Or); 
filter.AddCondition("createdon", ConditionOperator.OnOrBefore, yesterday); 
filter.AddCondition("createdon", ConditionOperator.OnOrAfter, tomorrow); 
QueryExpression query = new QueryExpression("contact") 
    { 
     ColumnSet = new ColumnSet(true), 
     Criteria = filter 
    }; 

EntityCollection ent = service.RetrieveMultiple(query);