我必須將我的數據庫pkid保存到outlook。我用UserProperties["TaskId"]
。我試圖通過這個ID來尋找項目,下面的代碼是不工作UserProperties的Outlook項目搜索
tasksFolder.Items.Find(string.Format("[TaskId] = '{0}'", id))
反正有沒有找到我的項目,而不是循環在我所有的名單! 有沒有更好的方法來保存Outlook上的數據庫ID,EntryID是隻讀的。
我必須將我的數據庫pkid保存到outlook。我用UserProperties["TaskId"]
。我試圖通過這個ID來尋找項目,下面的代碼是不工作UserProperties的Outlook項目搜索
tasksFolder.Items.Find(string.Format("[TaskId] = '{0}'", id))
反正有沒有找到我的項目,而不是循環在我所有的名單! 有沒有更好的方法來保存Outlook上的數據庫ID,EntryID是隻讀的。
您可以利用在後臺工作的AdvancedSearch
。
正是你可以開始使用Application.AdvancedSearch
異步搜索任務(見documentation here)
的string scope
參數實際上是在其中進行搜索執行Outlook文件夾。我想你可能會使用默認的任務文件夾(請參閱olDefaultFolder)
對於您的情況,您將不得不使用CustomField創建查詢。這裏是語法(未測試)。這個奇怪的0x0000001f
實際上是CustomProperties
內部ID,see
"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/TaskId/0x0000001f = 'yourid'"
注意與AdvancedSearch
你有背景,而不是凍結UI線程來執行搜索任務的好處。我建議你使用一個ID來標識你的搜索,這樣你就不會搞亂併發搜索或取消。
感謝您的答覆和有用的細節,我感謝你的努力,如果你可以,我有另一個問題幫我,ns.GetItemFromID拋出異常,如果該項目不存在,你知道無論如何,以避免這種情況,我用嘗試和空捕獲,但我討厭這種方式來處理錯誤 –
@mokhAkh考慮try/catch,我不喜歡它但似乎沒有其他選擇。我還在Outlook VSTO產品中使用了這樣一段代碼 –
感謝您的回答,它使我找到了一個可行的解決方案。 如果你正在尋找一個完整的工作過濾器,這裏是我的:'var filter = $「@ SQL = \」http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000- 000000000046}}/MyUserProperty/0000001f \「='{value}'」;' – Yaurthek
對此有何更新? –
感謝您的詢問,我保存用戶自定義屬性文件夾和它工作正常,異常發生只有第一次:) –