Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

PRB: CDO Text Property Does Not Accept CR or LF


View products that this article applies to.

This article was previously published under Q264610

↑ Back to the top


Symptoms

When you append a new line of text to an item's Text property and use a carriage return (CR) and/or line feed (LF) to force them to separate lines, the Text property ignores the CR and LF.

↑ Back to the top


Cause

The Exchange store's Rich Text Format (RTF) synchronization routine groups the existing and appended text in an attempt to preserve any RTF formatting of the existing text. When checking for the existing text, it ignores changes that are white space only; for example, additional line wrapping. In this case, the CR/LF pair is recognized as a part of the existing text, and only the text that follows it is considered to be appended.

↑ Back to the top


Resolution

The workaround is to remove the item's CdoPR_RTF_COMPRESSED property before appending to the Text property, as illustrated by the following Visual Basic code:
With objMyAppt
   'Delete the PR_RTF_COMPRESSED property so that
   'RTF synchronization does not take place.
   .Fields(CdoPR_RTF_COMPRESSED).Delete

   .Text = .Text & vbCrLf & "(Line 2) Drive safely!"
   .Update
End With
				

↑ Back to the top


Status

This behavior is by design.

↑ Back to the top


More information

Steps to Reproduce Behavior

'NOTE: Assumes your project includes a reference to 
'      "Microsoft CDO 1.21 Library".

Dim objSession As MAPI.Session
Dim objCalendar As MAPI.Folder
Dim objMyAppt As MAPI.AppointmentItem

Set objSession = CreateObject("MAPI.Session")
objSession.Logon

Set objCalendar = objSession.GetDefaultFolder(CdoDefaultFolderCalendar)
Set objMyAppt = objCalendar.Messages.Add

With objMyAppt
   'Add the first line.
   .Subject = "Test appointment"
   .Location = "Downtown"
   .Text = "(Line 1) Go for a drive."
   .Update
   MsgBox Prompt:=.Text, Title:="Before updating"

   'Add the second line.
   .Subject = "Updated test appointment"
   .Text = .Text & vbCrLf & "(Line 2) Drive safely!"
   .Update
   MsgBox Prompt:=.Text, Title:="After updating"
End With

'Log off and clean up.
objSession.Logoff
Set objMyAppt = Nothing
Set objCalendar = Nothing
Set objSession = Nothing
				

↑ Back to the top


Keywords: kbmsg, kbprb, KB264610

↑ Back to the top

Article Info
Article ID : 264610
Revision : 5
Created on : 3/11/2004
Published on : 3/11/2004
Exists online : False
Views : 374