I'm trying to return a single calendaritem from Outlook from our C# windows desktop application. It keeps returning this error: Redemption.RDOItems Assertion failed: Number of fields == 1.

I use similar code in an Outlook addin I created and it works fine. The main difference is the filterprefix. In the AddIn I use:

string filterprefix ="[" + OurCustomProperty.OurItemId + "] ='";
var filter1 = filterprefix + parentItem.NeedlesId + "'";

var findItem = folder.Items.Find(filter1);

but this code does not work from our desktop app.

Here is the code from the desktop App which is returning the error:

The appointment.Id contains a valid value which we set when we create the item.

string Filterprefix ="@SQL="+"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/OurCustomProperty.OurItemId/0x0000001f ='";

RDOSession rdoSession = new RDOSession();

rdoSession.Logon("", "", false, false, null, false);

RDOFolder folderRDO = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderCalendar);

var filter1 = filterprefix + appointment.Id + "'";

string ls_find = Filterprefix + appointment.Id + "'" ;

var findItem = folderRDO.Items.Find(ls_find);

I've tried several variations of the syntax but can't seem to get it right. I also tried using Sort then Restrict but no luck with that either.

Thanks, Rick


RDOItems.Find takes a SQL statement, please do not use the @SQL= prefix - it is OOM specific. Also do not forget to doublequote the DASL property name:

"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/OurCustomProperty.OurItemId/0x0000001f" ='<some value>'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.