2016-03-21 12 views
2

私はデータベースpkidをOutlookに保存する必要があります。私はUserProperties["TaskId"]を使用しました。私は、このidでアイテムを見つけることを試みている、以下のコードは、すべて私のリストにループするのではなく、私のアイテムを見つけることがとにかくありユーザー属性でoutlookアイテムを検索

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

が動作していません! OutlookでデータベースIDを保存するより良い方法はありますか?EntryIDは読み取り専用です。

+0

これに関するアップデートはありますか? –

+0

質問していただきありがとうございます。私はフォルダにUser-custom-Propertiesを保存しています。正常に動作しています。例外は1回目です:) –

答えて

1

バックグラウンドで動作するAdvancedSearchの利点があります。

まさにあなたがApplication.AdvancedSearchを使用して非同期検索タスクを開始することができます(documentation hereを参照)

string scopeパラメータは、実際に検索が実行されるOutlookフォルダです。私はあなたがおそらくデフォルトのタスクフォルダ(olDefaultFolderを参照)を使用すると思います

あなたのケースでは、CustomFieldでクエリを作成する必要があります。構文は次のとおりです(テストされていません)。この奇妙な0x0000001fあなたはUIスレッドを凍結、バックグラウンドでの検索タスクを実行していないために利益を持っているAdvancedSearchとのことに注意してくださいsee

"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/TaskId/0x0000001f = 'yourid'" 

、実際にCustomPropertiesの内部IDです。私はあなたの検索を識別するためにIDを使用することをお勧めしますので、同時に検索や取り消しをしないでください。

+0

返信いただきありがとうございました、参考にしていただき、ありがとうございます。助けてください、アイテムを見つけられない場合は、例外をスローしてください。それを避けるために、私は試して空のキャッチを使用しましたが、エラーを処理する方法は嫌いです。 –

+0

@mokhAkhはtry/catchを考慮して、いずれかの選択肢はないようです。私はOutlook VSTO製品でもこのようなコードを使用しています –

+0

答えをいただきありがとうございます。 完全なフィルタを探しているなら、ここに私のものがあります: 'var filter = $" @ SQL = \ "http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000- 000000000046}}/MyUserProperty/0000001f \ "= '{値}'"; ' – Yaurthek

関連する問題