Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Outlook / Contacts / June 2006

Tip: Looking for answers? Try searching our database.

showing contact by StoreID / EntryID from favourite folders

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Johannes Franke - 08 Jun 2006 10:51 GMT
Hello all,

I'm desperately looking for a solution on how to show contacts (not
AddressEntries) via CDO session. I have the EntryID and StoreID of the
contacts in a database. When trying to open the contacts with

   Application.GetNameSpace("MAPI").GetItemFromID(EntryID, StoreID).Display

Outlook just returns that "the client operation has failed", giving me
different error codes every time, such as

   DCD4010F, E514010F, ED54010F on trying to get items by StoreID + EntryID
   E0F4010F, E934010F, F174010F on trying to get items with EntryID only

Getting the IDs from the contacts I can see in the folder is working though.
Using these IDs later for displaying as descibed above fails.

The alternative way I have implemented uses CDO and the
MAPI.Session.GetMessage function. Unfortunately, this also fails.

   Error code 8004010F and Err.Description "MAPI -
[MAPI_E_NOT_FOUND(8004010F)]" is returned when using StoreID + EntryID
   The same error code but Err.Description "the client operation has
failed. [Microsoft Exchange Server Information Store -
[MAPI_E_NOT_FOUND(8004010F)]" is returned when using EntryID only

Even if it didn't fail, I would still miss the function to display the
message object (a Details function is only implemented for MAPI.AddressEntry
as far as I know, but the contacts are just messages, right?)
Maybe the approach is all wrong. If Outlook fails to display the contact
item although it is in one of the user's Favourites folders, and Exchange
Cache Mode is active, something else may be out of order.

Thanks for any help!

Best regards,
Joe
Sue Mosher [MVP-Outlook] - 08 Jun 2006 12:30 GMT
You should always test whether you have a valid object before you execute any methods on it. Also, the code you cited is Outlook object model code, not CDO. Is Outlook running when you run this code? If not, you'll need to get the Namespace object and use the Logon method.

FYI, there is a newsgroup specifically for general Outlook programming issues "down the hall" at microsoft.public.outlook.program_vba or, via web interface, at http://www.microsoft.com/office/community/en-us/default.mspx?dg=microsoft.public
.outlook.program_vba


Signature

Sue Mosher, Outlook MVP
  Author of Configuring Microsoft Outlook 2003
    http://www.turtleflock.com/olconfig/index.htm
  and Microsoft Outlook Programming - Jumpstart for
    Administrators, Power Users, and Developers
    http://www.outlookcode.com/jumpstart.aspx
 

> Hello all,
>
[quoted text clipped - 33 lines]
> Best regards,
> Joe
Johannes Franke - 08 Jun 2006 15:19 GMT
Dear Sue,

thanks for your reply. Well, actually my problem is to get the object which
I'd like to display. The object I use to do that is the MAPI NameSpace
object from Outlook in the first attempt, and the CDO MAPI.Session object in
the second. My idea was to get hold of the object with CDO Session if I
cannot get a reference to it by using the Outlook object model.
Unfortunately, even if this worked perfectly, I had the problem of
displaying the contact as CDO returns a MAPI.Message object to me which does
not support displaying.
Another possibility is that the customer's system is corrupted in some way,
causing Outlook to fail accessing objects inside the user's favourite
contacts folder. I am sure that this is an Outlook Client related issue
because Exchange Cache Mode is used, and favourite folders are used to make
sure that no additional network traffic is generated when trying to access
one of the contacts in the favourites. One idea I read about was timeout
errors on accessing the Exchange system because it is fragmented. This
definitely does not apply for my customer. Opening contacts in the Outlook
front-end by double clicking is a matter of milliseconds, and the cache mode
should prevent unneeded Exchange access, too.
Unfortunately, the error "the client operation has failed" is thrown in
multiple situations, and I cannot find information on the error codes that
were returned by Outlook. Knowing more about them might help me find out
what I need to change, or what the customer has done wrong.

Regards,
Joe

You should always test whether you have a valid object before you execute
any methods on it. Also, the code you cited is Outlook object model code,
not CDO. Is Outlook running when you run this code? If not, you'll need to
get the Namespace object and use the Logon method.

FYI, there is a newsgroup specifically for general Outlook programming
issues "down the hall" at microsoft.public.outlook.program_vba or, via web
interface, at
http://www.microsoft.com/office/community/en-us/default.mspx?dg=microsoft.public
.outlook.program_vba


Signature

Sue Mosher, Outlook MVP
  Author of Configuring Microsoft Outlook 2003
    http://www.turtleflock.com/olconfig/index.htm
  and Microsoft Outlook Programming - Jumpstart for
    Administrators, Power Users, and Developers
    http://www.outlookcode.com/jumpstart.aspx

> Hello all,
>
[quoted text clipped - 37 lines]
> Best regards,
> Joe
Sue Mosher [MVP-Outlook] - 08 Jun 2006 15:37 GMT
> Well, actually my problem is to get the object which
> I'd like to display.

So, what are the details? Where do the EntryID and StoreID come from? Have you checked their values?

> My idea was to get hold of the object with CDO Session if I
> cannot get a reference to it by using the Outlook object model.

Why? If Outlook can't get it, CDO isn't going to have much luck either.
Signature

Sue Mosher, Outlook MVP
  Author of Configuring Microsoft Outlook 2003
    http://www.turtleflock.com/olconfig/index.htm
  and Microsoft Outlook Programming - Jumpstart for
    Administrators, Power Users, and Developers
    http://www.outlookcode.com/jumpstart.aspx
 

> Dear Sue,
>
[quoted text clipped - 70 lines]
>> Best regards,
>> Joe
Johannes Franke - 08 Jun 2006 16:27 GMT
Sue,

the EntryID and StoreID are scanned in a synchronization routine from all
items in all folders as configured by the user, and put into an Access
database along with all telephone numbers stored in each contact. My add-in
is a tool which displays the contact matching an incoming phone number (from
TAPI). If a matching contact is found in the database, Outlook is used to
display the contact item. This is faster because I can index the Access
tables which hold the telephone numbers. Scanning all items directly in
Outlook would take too long. It works pretty well when using the user's
personal folders but fails frequently when working on Exchange or with
favourite folders... we can read all items and put their IDs and information
to the database, but later attempts to recall such an item by EntryID and
StoreID fail with errors as shown below...

Best regards,
Joe

> Well, actually my problem is to get the object which
> I'd like to display.

So, what are the details? Where do the EntryID and StoreID come from? Have
you checked their values?

> My idea was to get hold of the object with CDO Session if I
> cannot get a reference to it by using the Outlook object model.

Why? If Outlook can't get it, CDO isn't going to have much luck either.
Signature

Sue Mosher, Outlook MVP
  Author of Configuring Microsoft Outlook 2003
    http://www.turtleflock.com/olconfig/index.htm
  and Microsoft Outlook Programming - Jumpstart for
    Administrators, Power Users, and Developers
    http://www.outlookcode.com/jumpstart.aspx

> Dear Sue,
>
[quoted text clipped - 80 lines]
>> Best regards,
>> Joe
Sue Mosher [MVP-Outlook] - 08 Jun 2006 18:23 GMT
Have you actually checked the ID values for some of these items? Maybe you didn't make the fields long enough in Access?

Signature

Sue Mosher, Outlook MVP
  Author of Configuring Microsoft Outlook 2003
    http://www.turtleflock.com/olconfig/index.htm
  and Microsoft Outlook Programming - Jumpstart for
    Administrators, Power Users, and Developers
    http://www.outlookcode.com/jumpstart.aspx
 

> Sue,
>
[quoted text clipped - 109 lines]
>>> Best regards,
>>> Joe
Ken Slovak - [MVP - Outlook] - 08 Jun 2006 21:07 GMT
I've seen one 0 in the real folder become an 8 in the favorites folder in
cached mode (or vice versa, I forget). It doesn't happen in non-cached mode.
I hacked my code to replace the 0 with an 8 or vice versa if I detect cached
mode and am going for a favorites folder.

Signature

Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm

Have you actually checked the ID values for some of these items? Maybe you
didn't make the fields long enough in Access?

Signature

Sue Mosher, Outlook MVP
  Author of Configuring Microsoft Outlook 2003
    http://www.turtleflock.com/olconfig/index.htm
  and Microsoft Outlook Programming - Jumpstart for
    Administrators, Power Users, and Developers
    http://www.outlookcode.com/jumpstart.aspx

Johannes Franke - 08 Jun 2006 15:22 GMT
uhm... by the way, I do use the Session.Logon method, and Outlook is
definitely running during the operation because all this is done by an
Outlook add-in.

"Johannes Franke" <johannes_franke@arcor.de> schrieb im Newsbeitrag news:...
> Dear Sue,
>
[quoted text clipped - 77 lines]
>> Best regards,
>> Joe
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.