2016-03-21 80 views
2

我必須將我的數據庫pkid保存到outlook。我用UserProperties["TaskId"]。我試圖通過這個ID來尋找項目,下面的代碼是不工作UserProperties的Outlook項目搜索

tasksFolder.Items.Find(string.Format("[TaskId] = '{0}'", id)) 

反正有沒有找到我的項目,而不是循環在我所有的名單! 有沒有更好的方法來保存Outlook上的數據庫ID,EntryID是隻讀的。

+0

對此有何更新? –

+0

感謝您的詢問,我保存用戶自定義屬性文件夾和它工作正常,異常發生只有第一次:) –

回答

1

您可以利用在後臺工作的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來標識你的搜索,這樣你就不會搞亂併發搜索或取消。

+0

感謝您的答覆和有用的細節,我感謝你的努力,如果你可以,我有另一個問題幫我,ns.GetItemFromID拋出異常,如果該項目不存在,你知道無論如何,以避免這種情況,我用嘗試和空捕獲,但我討厭這種方式來處理錯誤 –

+0

@mokhAkh考慮try/catch,我不喜歡它但似乎沒有其他選擇。我還在Outlook VSTO產品中使用了這樣一段代碼 –

+0

感謝您的回答,它使我找到了一個可行的解決方案。 如果你正在尋找一個完整的工作過濾器,這裏是我的:'var filter = $「@ SQL = \」http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000- 000000000046}}/MyUserProperty/0000001f \「='{value}'」;' – Yaurthek