OL2000: Can't Display or Save Item Using GetItemFromID
ID: Q228512
|
The information in this article applies to:
SYMPTOMS
You try to programmatically display or save an item, but the Display or Save methods in the Outlook object model do not seem to work.
CAUSE
This behavior occurs when all of the following conditions are true:
- You referenced the item using the GetItemFromID method.
-and-
- The item is based on a custom form containing Visual Basic Scripting Edition (VBScript) code.
-and-
- The form definition is not stored within the item.
RESOLUTION
Depending on the needs of your solution, you may be able to work around the problem by using an alternate method of referencing the item. For additional information about how to programmatically reference items, please see the following article in the Microsoft Knowledge Base:
Q208520 OL2000: Programming Examples for Referencing Items and Folders
STATUS
Microsoft has confirmed this to be a problem in the Microsoft products listed
at the beginning of this article.
MORE INFORMATION
This problem is not related to the type of folder the items are stored in. The problem occurs regardless of whether the folder is stored in a Personal Folders (.pst) file, Microsoft Exchange public folders, or a Microsoft Exchange mailbox.
Steps to Reproduce Behavior
- Create a new folder, in this case a Contacts folder.
- Open a new contact.
- On the Tools menu, point to Forms, and then click Design This Form.
- On the Form menu, click View Code. Enter the following VBScript code into the Script Editor and then close the Script Editor:
Dim x
- On the Tools menu, point to Forms, and then click Publish Form. The default is to store the Contact form in the folder you created in step 1. Type GetItemFromID Test1 as the Display Name, and then click Publish.
- Close and do not save changes to the form.
- On the Actions menu, click New GetItemFromID Test1. Enter some contact information and save the contact.
- Open a new, default contact.
- On the Tools menu, point to Forms, and then click Design This Form.
- Click the P.2 page of the form.
- On the Form menu, click Control Toolbox. Drag a CommandButton control onto the P.2 page of the form.
- On the Form menu, click View Code. Enter the following VBScript code into the Script Editor and then close the Script Editor:
Sub CommandButton1_Click()
Dim ns, myFolder, myItem, myEntryID, myStoreID
Set ns = Application.GetNamespace("MAPI")
Set myFolder = Application.ActiveExplorer.CurrentFolder
Set myItem = myFolder.Items(1)
MsgBox "First item in folder: " & myItem.Subject
myEntryID = myItem.EntryID
myStoreID = myItem.Parent.StoreID
Set myItem = Nothing
Set myItem = ns.GetItemFromID(myEntryID, myStoreID)
MsgBox "Item found using GetItemFromID: " & myItem.Subject
myItem.Display
Set myItem = Nothing
Set myFolder = Nothing
Set ns = Nothing
End Sub
- On the Tools menu, point to Forms, and then click Publish Form. The default is to store the Contact form in the folder you created in step 1. Type GetItemFromID Test2 as the Display Name, and then click Publish.
- Close and do not save changes to the form.
- On the Actions menu, click New GetItemFromID Test2. Switch to the P.2 page of the form and click the CommandButton.
Result: You receive two message boxes indicating that Outlook has referenced the first item in the folder, but then the item is not displayed.
REFERENCES
For additional information about saving the form definition with an item, please see the following article in the Microsoft Knowledge Base:
Q207896 OL2000: Working with Form Definitions and One-Off Forms
For additional information about available resources and answers
to commonly asked questions about Microsoft Outlook 2000 solutions,
please see the following article in the Microsoft Knowledge Base:
Q146636 OL2000: Questions About Custom Forms and Outlook Solutions
Additional query words:
kbMsg kbOutlook98bug kbOutlookObj kbGrpMsg OutSol OutSol2000 vbscript
Keywords : kbMsg kbOutlook98bug kbOutlookObj kbGrpMsg
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbbug