2012-11-19 231 views
1

我有一個應用程序使用MS-CRM 2011 Web服務檢索crm實體上的最後更改。此應用程序使用Windows Mobile設備同步上次數據更改。 同步操作每20分鐘定期進行一次。在每次同步操作中,我想通過檢查實體的'modifiedon'字段來檢索先前更新中發生的更改。 問題在於,CRM查詢不使用DateTime對象的時間片段,並且返回了傳遞的DateTime參數的所有更改。檢索查詢時間範圍(FetchXML/QueryExpression)

我會檢查FetchXML和QueryExpression,沒有什麼不同。 有什麼辦法來創建一個查詢運行在Crm WebService上,從指定的日期和時間返回修改的記錄?

樣品(我FetchXml):

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'> 
<entity name='new_brand'> 
<attribute name='new_brandname' /> 
<attribute name='new_pdanumber' /> 
<filter type='and'> 
<condition attribute='modifiedon' operator='on-or-after' value='2012/11/12 23:59'/> 
</filter> 
</entity> 
</fetch> 

看到在代碼中,我想從2012年11月12日23:00所有修改過的實體,但CRM從2012年11月12日00返回所有修改的記錄:00。

回答

0

我們已經爲該實體添加了一個新字段(稱爲ModifiedOnTick),並在該字段中記錄了具有固定日期(2011-01-01)的時間差(以毫秒爲單位)。

0

您的代碼正在查找23:59或之後更改的記錄...您記錄的結果聽起來正確無誤。

在任何情況下,時間部分使用,但我懷疑你看到用戶時間與世界時間的結果。如果用戶時區偏移量!= 0,則用戶在UI中選擇的午夜將與存儲在與UST等效的數據庫中的值不同。

+0

感謝您的回覆。 '23:59'是一個示例,顯示CRM不使用時間,並且在此時間(在選定日期)之前更改的所有記錄都會返回。我需要一個查詢(或高級查找),可以讓實體在一天內的兩次之間修改。 (2012/11/12 00:00至2012/11/12 23:58之間的樣本變更實體不應在結果集中) – Behnam

+0

可能需要創建自定義工作流併爲我的實體創建一個新字段(像ModifiedOnTicks),當實體'modifiedon'字段發生變化時,工作流程將運行並計算其值Ticks並存儲在該字段中,但看起來這將成爲一個循環。 – Behnam

+0

您對時間被忽略([見這裏](http://social.microsoft.com/Forums/uk/crmdevelopment/thread/c5083689-65fb-474f-a7bc-2eff393016fe))是正確的。關於維護Ticks - 如果你把它放在一個預創建和更新前的插件中,你可以將該值作爲事務的一部分注入,從而不會導致後續更新,希望這是有道理的。 –

0

我現在和最老的Dynamics CRM 2011組織有同樣的問題。比較之後或之後沒有比較時間,只有日期。嘗試使用磨碎機或相等(fetchxml中的'ge')。

+0

我們已經添加了一個新字段(稱爲ModifiedOnTick)實體,並在該字段中以固定日期(2011-01-01)記錄以毫秒爲單位的時間差。 – Behnam