2015-12-29 4 views
6

मैं एक दृष्टिकोण VSTO ऐड है आदि एक EntryId दिया एक appointmentItem के लिए एक संदर्भ, प्राप्त कर सकते हैं और मैं इस कोड का उपयोग करके कैलेंडर अपॉइंटमेंट की सूची प्राप्त करने में सक्षम हूँ:आउटलुक सी # VSTO में, मैं कैसे

private Items GetAppointmentsInRange(Folder folder, DateTime startTime, DateTime endTime) 
    { 
     string filter = "[Start] >= '" 
         + startTime.ToString("g") 
         + "' AND [End] <= '" 
         + endTime.ToString("g") + "'"; 
     Debug.WriteLine(filter); 
     try 
     { 
      Items calItems = folder.Items; 
      calItems.IncludeRecurrences = true; 
      calItems.Sort("[Start]", Type.Missing); 
      Items restrictItems = calItems.Restrict(filter); 
      if (restrictItems.Count > 0) 
      { 
       return restrictItems; 
      } 
      else 
      { 
       return null; 
      } 
     } 
     catch 
     { 
      return null; 
     } 
    } 

और मैं इस नियुक्ति के माध्यम से लूप कर सकता हूं और एंट्री प्राप्त कर सकता हूं जो मुझे बताया गया है वह श्रृंखला के लिए अद्वितीय पहचानकर्ता है।

मैं अब यह पता लगाने की कोशिश कर रहा हूँ, यह देखते हुए एक EntryId, "ग्राहक के पक्ष"

पर सब कुछ और फिल्टर के लिए खोज करने के लिए बिना appointmentItem श्रृंखला (के लिए एक सीधा संदर्भ प्राप्त करने के लिए सही कोड क्या है

दृष्टिकोण VSTO में यह संभव है?

+0

क्या आपको एंट्रीआईडी ​​को डेटाबेस में स्टोर करने और बाद में इसका उपयोग करने की आवश्यकता है? या क्या आपको बस सत्र की अवधि में इसकी आवश्यकता है? –

+0

@YacoubMassad - मैं EntryId संग्रहीत कर रहा हूं (लेकिन ईमानदार होने के लिए, मुझे नहीं लगता कि यह मेरे प्रश्न का एक अलग जवाब कैसे देगा) – leora

+0

विभिन्न प्रकार के एंट्रीआईड्स हैं, उनमें से कुछ अलग-अलग सत्रों और उनमें से कुछ को फैला सकते हैं केवल एक सत्र का विस्तार कर सकते हैं –

उत्तर

2

यदि आप आप GetItemFromID() उपयोग करने की आवश्यकता EntryID द्वारा आइटम (MailItem, FolderItem, AppoinmentItem, ...) हो जाता है करना चाहते हैं, इस विधि एक माइक्रोसॉफ्ट आउटलुक आइटम से पहचान देता है निर्दिष्ट प्रविष्टि आईडी (यदि मान्य है)

इस समारोह NameSpace वस्तुओं में उपलब्ध है, आप Application.Session संपत्ति या app.GetNamespace("MAPI") कॉल का उपयोग कर इसे प्राप्त कर सकते हैं:

var app = new Microsoft.Office.Interop.Outlook.Application(); 
... 

var ns = app.Session; // or app.GetNamespace("MAPI"); 

var entryID = "<apppoinment entry id>"; 
var appoinment = ns.GetItemFromID(entryID) as AppointmentItem; 

लेकिन यह सिफारिश की है कि प्रदान करता है फ़ोल्डर के क्रमांक:

var entryID = "<apppoinment entry id>"; 
var storeID = "<folder store id>"; 
var appoinment = ns.GetItemFromID(entryID, store) as AppointmentItem; 

ध्यान रखें EntryID हो सकता है यदि आप आइटम को किसी अन्य स्टोर में ले जाते हैं तो परिवर्तन।

इसके अलावा, माइक्रोसॉफ्ट सिफारिश की है कि समाधान EntryID संपत्ति पर निर्भर होना चाहिए नहीं अद्वितीय होने की जब तक आइटम नहीं ले जाया जाएगा, उदाहरण के लिए यदि आप olMeetingAccepted या olMeetingTentative अलग EntryID के साथ एक नई नियुक्ति आइटम बनाई गई है और मूल के साथ Respond() विधि कॉल हटा दी है।

-1

आप नामस्थान ऑब्जेक्ट (सहज, इस Application.Session संपत्ति के माध्यम से पहुँचा जा सकता है) की GetItemFromID विधि का उपयोग करना चाहते

आप होगा MAPI दुकान के स्टोर आईडी की जरूरत है जिसमें से आप प्राप्त करना चाहते हैं आइटम।

संबंधित मुद्दे