2016-03-21 6 views
2

Ich muss meine Datenbank PKID zu Outlook speichern. Ich habe UserProperties["TaskId"] verwendet. Ich habe versucht, das Produkt durch diese ID zu finden, und die folgenden Code funktioniert nichtSuche auf Outlook-Artikel von UserProperties

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

Gibt es trotzdem meine Einzelteile statt Looping auf alle meine Listen zu finden! Gibt es eine bessere Möglichkeit, Datenbank-ID auf Outlook zu speichern, ist EntryID schreibgeschützt.

+0

Irgendwelche Updates zu diesem Thema? –

+0

danke für die frage, ich speichere die User-custom-Eigenschaften im ordner und es funktioniert gut, ausnahme passieren nur 1. mal :) –

Antwort

1

Sie können von der AdvancedSearch profitieren, die im Hintergrund funktioniert.

Gerade können Sie eine Asynchron-Suchaufgabe mit Application.AdvancedSearch (siehe documentation here)

Der string scope Parameter ist eigentlich die Outlook-Ordner starten, wo die Suche wird ausgeführt. Ich denke, dass Sie wahrscheinlich den Standardaufgabenordner verwenden werden (siehe olDefaultFolder)

In Ihrem Fall müssen Sie eine Abfrage mit einem CustomField erstellen. Hier ist die Syntax (nicht getestet). Diese seltsamen 0x0000001f ist eigentlich die interne ID für CustomProperties, see

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

Beachten Sie, dass mit AdvancedSearch Sie den Vorteil haben die Suchaufgabe im Hintergrund und nicht das Einfrieren des UI-Thread auszuführen. Ich empfehle Ihnen, eine ID zu verwenden, um Ihre Suche zu identifizieren, damit Sie nicht mit gleichzeitiger Suche oder Löschung stört.

+0

danke für die antwort und für hilfreiche details, ich schätze ihre bemühung, ich habe eine andere frage, wenn sie können help me, ns.GetItemFromID Ausnahme auslösen, wenn das Element nicht existiert, wissen Sie sowieso, um das zu vermeiden, ich versuchte und leeren Fang, aber ich hasse diesen Weg, um Fehler zu behandeln –

+0

@mokhAkh in Anbetracht der Versuch/fangen, ich mag es nicht entweder, aber es scheint, dass es keine Alternative gibt. Ich benutze auch so ein Stück Code in meinen Outlook VSTO Produkten –

+0

Danke für deine Antwort, es führte mich zu einer funktionierenden Lösung. Wenn Sie nach einem vollständigen funktionierenden Filter suchen, hier ist meiner: 'var filter = $" @ SQL = \ "http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000- 000000000046}}/MyUserProperty/0000001f \ "= '{Wert}'"; ' – Yaurthek