SaveToObject Method
Topic Last Modified: 2006-06-13
Binds to and saves data into the specified object.
Applies To
Type Library
Microsoft CDO for Exchange 2000 Library
DLL Implemented In
CDOEX.DLL
Syntax
Sub SaveToObject( Source As Object,
InterfaceName As String)
HRESULT SaveToObject
(
Object* Source,
BSTR InterfaceName
);
Parameters
- Source
A reference to the object in which to save.
- InterfaceName
A string indicating the type of interface passed in the first argument.
Return Value
Returns S_OK if successful, or an error value otherwise.
Remarks
Implementations of this method are intended to allow you to easily save data into another object at run time, rather that from a particular store or database.
A sample use for SaveToObject is embedding messages into other messages. To embed a message, call IDataSource.SaveToObject passing the IBodyPart interface on a BodyPart object that is to contain the embedded message. If you subsequently want to save changes you make to the message data into the embedded location, call Save Method, and the modified message contents are saved back to the bound BodyPart object.
Note
Circular binding is not supported. You cannot use SaveToObject to bind the same object, such as:
Set iDsrc = iSomeInterface
iDsrc.SaveToObject iSomeInterface, "ISomeInterface"
If circular binding is attempted, the CDO_E_SELF_BINDING exception is raised.
After a successful binding, the Source Property is the object reference passed to the method. Avoid passing interfaces that are not OLE Automation compatible, such as Istream, if languages such as Microsoft® Visual Basic®, Microsoft Visual J++®, and Visual Basic Scripting Edition (VBScript) will attempt to access the bound source object through the Source property. If you pass interfaces that are not OLE Automation compatible, the object reference returned by the Source property will be unusable by these languages.
If the string passed as the interface type name (the InterfaceName parameter) is not recognized, the method must raise an exception.
Examples
Sub EmbedMessageIntoBodyPart(iBp As CDO.IBodyPart, iMsg As CDO.message)
Dim iDsrc As CDO.IDataSource
Set iDsrc = iMsg ' get IDataSource interface
' Save the message to the BodyPart object.
' This embeds the message in the MIME
' hierarchy with content-type="message/rfc822"
iDsrc.SaveToObject iBp, "IBodyPart"
End Sub
/*
You must have the following paths in your
INCLUDE path.
%CommonProgramFiles%\system\ado
%CommonProgramFiles%\microsoft shared\cdo
*/
#ifndef _CORE_EXAMPLE_HEADERS_INCLUDED
#define _CORE_EXAMPLE_HEADERS_INCLUDED
#import <msado15.dll> no_namespace
#import <cdoex.dll> no_namespace
#include <iostream.h>
#endif
void EmbedMessage(IBodyPartPtr pBp, IMessagePtr pMsg) {
if(pBp == NULL || pMsg == NULL)
throw _com_error(E_POINTER);
IDataSourcePtr pDsrc;
try {
pDsrc = pMsg;
pDsrc->SaveToObject(pBp,_bstr_t("IBodyPart"));
}
catch(_com_error e) {
cerr << "Error embedding message!" << endl;
throw e;
}
}
Sub EmbedMessageIntoBodyPart(iBp, iMsg)
Dim iDsrc
Set iDsrc = iMsg.DataSource ' get IDataSource interface
' Save the message to the BodyPart object.
' This embeds the message in the MIME
' hierarchy with content-type="message/rfc822"
iDsrc.SaveToObject iBp, "IBodyPart"
End Sub