![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Search this Thread | Display Modes |
#1
|
|||
|
|||
![]()
Hi All
I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
Ads |
#2
|
|||
|
|||
![]() Interestingly, using Outlook Spy, it does not see the UserProperties either on the contact item, when it is in the folder ( selected ) but DOES when the item is open in the Form Region ( Outllook 2007 ) Looking at the item useing Outlook Spy's IMessage view, all the properties are there. Very Odd... Any Ideas? "Jeff" wrote in message ... Hi All I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
#3
|
|||
|
|||
![]()
Alright.... Using Dmitry Streblechenko's excellent Outlook Spy product I
discovered what the problem was / is. I modified one of the Contact's using OL's All Properties page and what ya know... the UserProperties were all saved and accessible via the Item? So I used Outlook Spy to compare this Contact to one that didn't have the UserProperties. The Contact showing the problem was missing the IMAP "UserProperties" PT_BINARY tag. So, even though all the UserProperties themselves were stored in the IMAP IMessage Properties, since this particular tag was missing, accessing the item via the Outlook objects did not return the UserProperties collection. I assume the IMAP "UserProperties" tag is some kind of internal tab used by OL. It seems ( at least via Native C++ ) if you have a custom Form Region connected to ContactItem, OL will NOT save the UserProperties collection. But, you can force it to by adding a "UserProperty" programmatically and then saving the item ( the workaround ). Oddly, OL WILL save Form Region generated UserProperties as IMAP Properties in the {00020329-0000-0000-C000-000000000046} namespace. I hope my explanation is a little clearer than mud and this helps someone else. Personally, I think this behaviour is an Outlook 2007 Form Region related bug. Thanks Dmitry! "Jeff" wrote in message ... Interestingly, using Outlook Spy, it does not see the UserProperties either on the contact item, when it is in the folder ( selected ) but DOES when the item is open in the Form Region ( Outllook 2007 ) Looking at the item useing Outlook Spy's IMessage view, all the properties are there. Very Odd... Any Ideas? "Jeff" wrote in message ... Hi All I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
#4
|
|||
|
|||
![]()
Well... it get's weireder.... It appears to happen only with the FormRegions
I am making, using OL's form designer. If I use a FormRegion from sample code, it all works fine. But if I create a new FormRegion using Tools-Forms-Design a Form the new form will not save the UserProperties :S VERY STRANGE! Any ideas anyone? "Jeff" wrote in message ... Alright.... Using Dmitry Streblechenko's excellent Outlook Spy product I discovered what the problem was / is. I modified one of the Contact's using OL's All Properties page and what ya know... the UserProperties were all saved and accessible via the Item? So I used Outlook Spy to compare this Contact to one that didn't have the UserProperties. The Contact showing the problem was missing the IMAP "UserProperties" PT_BINARY tag. So, even though all the UserProperties themselves were stored in the IMAP IMessage Properties, since this particular tag was missing, accessing the item via the Outlook objects did not return the UserProperties collection. I assume the IMAP "UserProperties" tag is some kind of internal tab used by OL. It seems ( at least via Native C++ ) if you have a custom Form Region connected to ContactItem, OL will NOT save the UserProperties collection. But, you can force it to by adding a "UserProperty" programmatically and then saving the item ( the workaround ). Oddly, OL WILL save Form Region generated UserProperties as IMAP Properties in the {00020329-0000-0000-C000-000000000046} namespace. I hope my explanation is a little clearer than mud and this helps someone else. Personally, I think this behaviour is an Outlook 2007 Form Region related bug. Thanks Dmitry! "Jeff" wrote in message ... Interestingly, using Outlook Spy, it does not see the UserProperties either on the contact item, when it is in the folder ( selected ) but DOES when the item is open in the Form Region ( Outllook 2007 ) Looking at the item useing Outlook Spy's IMessage view, all the properties are there. Very Odd... Any Ideas? "Jeff" wrote in message ... Hi All I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
#5
|
|||
|
|||
![]()
How are you trying to save the user properties? Are you binding the fields
on the form region to already existing user properties or one created when you bind the fields? -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Jeff" wrote in message ... Well... it get's weireder.... It appears to happen only with the FormRegions I am making, using OL's form designer. If I use a FormRegion from sample code, it all works fine. But if I create a new FormRegion using Tools-Forms-Design a Form the new form will not save the UserProperties :S VERY STRANGE! Any ideas anyone? "Jeff" wrote in message ... Alright.... Using Dmitry Streblechenko's excellent Outlook Spy product I discovered what the problem was / is. I modified one of the Contact's using OL's All Properties page and what ya know... the UserProperties were all saved and accessible via the Item? So I used Outlook Spy to compare this Contact to one that didn't have the UserProperties. The Contact showing the problem was missing the IMAP "UserProperties" PT_BINARY tag. So, even though all the UserProperties themselves were stored in the IMAP IMessage Properties, since this particular tag was missing, accessing the item via the Outlook objects did not return the UserProperties collection. I assume the IMAP "UserProperties" tag is some kind of internal tab used by OL. It seems ( at least via Native C++ ) if you have a custom Form Region connected to ContactItem, OL will NOT save the UserProperties collection. But, you can force it to by adding a "UserProperty" programmatically and then saving the item ( the workaround ). Oddly, OL WILL save Form Region generated UserProperties as IMAP Properties in the {00020329-0000-0000-C000-000000000046} namespace. I hope my explanation is a little clearer than mud and this helps someone else. Personally, I think this behaviour is an Outlook 2007 Form Region related bug. Thanks Dmitry! "Jeff" wrote in message ... Interestingly, using Outlook Spy, it does not see the UserProperties either on the contact item, when it is in the folder ( selected ) but DOES when the item is open in the Form Region ( Outllook 2007 ) Looking at the item useing Outlook Spy's IMessage view, all the properties are there. Very Odd... Any Ideas? "Jeff" wrote in message ... Hi All I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
#6
|
|||
|
|||
![]()
Hello Ken
I use the "New" button to create a new field, from the control's Properties Value page. Thanks Jeff "Ken Slovak - [MVP - Outlook]" wrote in message ... How are you trying to save the user properties? Are you binding the fields on the form region to already existing user properties or one created when you bind the fields? -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Jeff" wrote in message ... Well... it get's weireder.... It appears to happen only with the FormRegions I am making, using OL's form designer. If I use a FormRegion from sample code, it all works fine. But if I create a new FormRegion using Tools-Forms-Design a Form the new form will not save the UserProperties :S VERY STRANGE! Any ideas anyone? "Jeff" wrote in message ... Alright.... Using Dmitry Streblechenko's excellent Outlook Spy product I discovered what the problem was / is. I modified one of the Contact's using OL's All Properties page and what ya know... the UserProperties were all saved and accessible via the Item? So I used Outlook Spy to compare this Contact to one that didn't have the UserProperties. The Contact showing the problem was missing the IMAP "UserProperties" PT_BINARY tag. So, even though all the UserProperties themselves were stored in the IMAP IMessage Properties, since this particular tag was missing, accessing the item via the Outlook objects did not return the UserProperties collection. I assume the IMAP "UserProperties" tag is some kind of internal tab used by OL. It seems ( at least via Native C++ ) if you have a custom Form Region connected to ContactItem, OL will NOT save the UserProperties collection. But, you can force it to by adding a "UserProperty" programmatically and then saving the item ( the workaround ). Oddly, OL WILL save Form Region generated UserProperties as IMAP Properties in the {00020329-0000-0000-C000-000000000046} namespace. I hope my explanation is a little clearer than mud and this helps someone else. Personally, I think this behaviour is an Outlook 2007 Form Region related bug. Thanks Dmitry! "Jeff" wrote in message ... Interestingly, using Outlook Spy, it does not see the UserProperties either on the contact item, when it is in the folder ( selected ) but DOES when the item is open in the Form Region ( Outllook 2007 ) Looking at the item useing Outlook Spy's IMessage view, all the properties are there. Very Odd... Any Ideas? "Jeff" wrote in message ... Hi All I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
#7
|
|||
|
|||
![]()
What is this, a separate or adjoining form region? Have you reviewed
http://support.microsoft.com/kb/929592? Have you looked at Ryan's walkthrough example at http://msdn2.microsoft.com/en-us/library/bb206785.aspx? -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Jeff" wrote in message ... Hello Ken I use the "New" button to create a new field, from the control's Properties Value page. Thanks Jeff |
#8
|
|||
|
|||
![]()
Just now... once again...
![]() Seperate Region The only thing I see from the walk-through different than I, is they use the fields dialog to add the new field and I used the properties page. From the known issues: "The UserProperties collection may not be valid in the GetFormRegionStorage event" shouldn't be an issue, since I'm looking at them during the BeforeFormRegionShow and besides, they are there, once I "work around" the problem. The "Custom fields may not persist on separate form regions" might be a part cause of the issue I suppose, but I don't see how. I add the new values on the custom form region and then save the item, yet the values do not persist. So I think not. I'm lost... ![]() "Ken Slovak - [MVP - Outlook]" wrote in message ... What is this, a separate or adjoining form region? Have you reviewed http://support.microsoft.com/kb/929592? Have you looked at Ryan's walkthrough example at http://msdn2.microsoft.com/en-us/library/bb206785.aspx? -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Jeff" wrote in message ... Hello Ken I use the "New" button to create a new field, from the control's Properties Value page. Thanks Jeff |
#9
|
|||
|
|||
![]()
See if using the fields dialog to add the user properties makes a
difference. To be honest that's how I do it and I haven't had problems (I don't use the Properties page usually to add user properties). I'm wondering if the user properties added the way you're doing it might not be adding the fields to the folder and just to the items. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Jeff" wrote in message ... Just now... once again... ![]() Seperate Region The only thing I see from the walk-through different than I, is they use the fields dialog to add the new field and I used the properties page. From the known issues: "The UserProperties collection may not be valid in the GetFormRegionStorage event" shouldn't be an issue, since I'm looking at them during the BeforeFormRegionShow and besides, they are there, once I "work around" the problem. The "Custom fields may not persist on separate form regions" might be a part cause of the issue I suppose, but I don't see how. I add the new values on the custom form region and then save the item, yet the values do not persist. So I think not. I'm lost... ![]() |
#10
|
|||
|
|||
![]()
I have encountered the same problem identified by Jeff. I am using Visual
Basic to interact with a FormRegion on a Contact form. I created four UserProperty fields in the FormRegion by dragging them from the Field Chooser, with the filter set to "UserProperties in this folder" (so I know the problem is not due to the UserProperties not having been added to the Contact folder). I have written a dialog which, based on user input to the dialog, in code sets the UserProperties in the FormRegion. I have tried setting each UserProperty directly: Dim oProp As Outlook.UserProperty Set oProp = ContactItem.UserProperties.Find("Group") oProp.Value = strGroup and also tried setting each UserProperty by manipulating the text box in the FormRegion that displays the UserProperty: olkGroup.Value = strGroup Either way, the UserProperties are saved in the ContactItem and are redisplayed when I reopen the Contact form. However, when I access the ContactItem in code (i.e., without opening the Contact form), the UserProperties.Count is 0 and UserProperties.Find cannot find any UserProperties. Jeff's workaround solves the problem. Before setting the UserProperties in the FormRegion in an open Contact form, I do the following: oItem.UserProperties.Add "Bogus", olText oItem.UserProperties.Find("Bogus").Delete After I do that, when I access the ContactItem in code, the ContactItem returns the correct UserProperties.Count, and UserProperties.Find retrieves the UserProperties. "Jeff" wrote: Alright.... Using Dmitry Streblechenko's excellent Outlook Spy product I discovered what the problem was / is. I modified one of the Contact's using OL's All Properties page and what ya know... the UserProperties were all saved and accessible via the Item? So I used Outlook Spy to compare this Contact to one that didn't have the UserProperties. The Contact showing the problem was missing the IMAP "UserProperties" PT_BINARY tag. So, even though all the UserProperties themselves were stored in the IMAP IMessage Properties, since this particular tag was missing, accessing the item via the Outlook objects did not return the UserProperties collection. I assume the IMAP "UserProperties" tag is some kind of internal tab used by OL. It seems ( at least via Native C++ ) if you have a custom Form Region connected to ContactItem, OL will NOT save the UserProperties collection. But, you can force it to by adding a "UserProperty" programmatically and then saving the item ( the workaround ). Oddly, OL WILL save Form Region generated UserProperties as IMAP Properties in the {00020329-0000-0000-C000-000000000046} namespace. I hope my explanation is a little clearer than mud and this helps someone else. Personally, I think this behaviour is an Outlook 2007 Form Region related bug. Thanks Dmitry! "Jeff" wrote in message ... Interestingly, using Outlook Spy, it does not see the UserProperties either on the contact item, when it is in the folder ( selected ) but DOES when the item is open in the Form Region ( Outllook 2007 ) Looking at the item useing Outlook Spy's IMessage view, all the properties are there. Very Odd... Any Ideas? "Jeff" wrote in message ... Hi All I've got the following strange problem. Language == C++ I've added custom properties to the containg outlook contact folder and create the contact item using replacement form regions. Within the form regions all the custom values are saved and redisplayed every time you open and close the contact item. BUT, if I grab the items collection for the folder and access each contact item, the UserProperties items are "empty". ie: have no value and a the count for the collection is 0 ie: _ItemsPtr spItems = NULL; MAPIFolderPtr spFdr = GetListingsFolder(m_spApp); if(spFdr){ spItems = spFdr-Items; } if(spItems){ _ContactItemPtr spContact; for(int i=1; i=spItems-Count; i++){ spContact = spItems-Item(i); UserPropertiesPtr spProps = spContact-UserProperties; int ic = spProps-Count; ie: UserPropertyPtr spProp = spContact-UserProperties-Item("RE MY Value"); if(spProp ==NULL){ Barf.... Allways... } Strangly, I can access most of the custom properties using the PropertyAccessor: ie: PropertyAccessor-GetProperty(http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/RE%20MY%20Value); But NOT if the custom property is a Currancy value. In the case of currancy values, I can access them if I have just resaved them using the form region, but not if Outlook has been shut down and restarted. :S It seems to me, that the UserProperties are not being loaded when the items collection is filled. Is there any way to "Force" the loading of the UserProperties for each item in the items collection? Any ideas? Thanks! |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
More on UserProperties | Steve | Add-ins for Outlook | 13 | November 20th 07 11:12 PM |
Can I use PropertyAccessor in Outlook 2007 to add x-headers? | Jeff Graves | Add-ins for Outlook | 2 | April 5th 07 10:30 PM |
UserProperties | j | Add-ins for Outlook | 0 | February 12th 07 07:06 AM |
PropertyAccessor.GetProperty | Peter Marchert | Outlook and VBA | 4 | January 10th 07 09:14 PM |
VB.net Cannot add userproperties | Ben | Add-ins for Outlook | 2 | February 24th 06 10:32 AM |