Accessing Folders and Items
Accessing Folders and Items
This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.
The following task shows how to get an existing item in the Exchange store. The example function performs the following steps:
- Attempts to bind to the item at this URL. If an error occurs, the function fails.
- Returns a reference to the Record object bound to the new item.
VBScript
<job id="getitem"> <reference object="adodb.record"/> <script language="vbscript"> Dim Rec Dim InfoNT Dim sUrl Dim sRelPath Set InfoNT = CreateObject("WinNTSystemInfo") sRelPath = "/public/test_folder/item1.txt" sUrl = "http://" & InfoNT.Computername & sRelPath Set Rec = getItem_rw(sUrl, Nothing) WScript.echo "Opened " & Rec.Fields("DAV:displayname") & " at URL: " & Rec.Fields("DAV:href") ' ... Dim Conn Set Conn = CreateObject("ADODB.Connection") Conn.Provider = "ExOLEDB.DataSource" Conn.Open sUrl Set Rec = getItem_ro(sUrl, Conn) WScript.echo "Opened " & Rec.Fields("DAV:displayname") & " at URL: " & Rec.Fields("DAV:href") ' Close connection. Conn.Close '''''''''''''''''''''''''''''''''''''''''''''''''''' ' getItem_rw ' sUrl - The URL to the item (http). ' Conn - An open Connection object, or Nothing. ' '''''''''''''''''''''''''''''''''''''''''''''''''''' Function getItem_rw( sUrl, Conn ) Dim Rec Set Rec = CreateObject("ADODB.Record") ' Did caller pass a Connection object reference? If Not ( VarType(Conn) = vbObject AND TypeName(Conn) = "Connection" ) Then Set Conn = CreateObject("ADODB.Connection") Conn.Provider = "ExOLEDB.DataSource" Conn.Open sUrl End If ' Try to bind to the item. Rec.Open sUrl, Conn, adModeReadWrite Set getItem_rw = Rec End Function '''''''''''''''''''''''''''''''''''''''''''''''''''' ' getItem_ro ' sUrl - The URL to the item (http). ' Conn - An open Connection object, or Nothing. ' '''''''''''''''''''''''''''''''''''''''''''''''''''' Function getItem_ro( sUrl, Conn ) Dim Rec Set Rec = CreateObject("ADODB.Record") ' Did caller pass a Connection object reference? If Not ( VarType(Conn) = vbObject AND TypeName(Conn) = "Connection" ) Then Set Conn = CreateObject("ADODB.Connection") Conn.Provider = "ExOLEDB.DataSource" Conn.Open sUrl End If ' Try to bind to the item. Rec.Open sUrl, Conn Set getItem_ro = Rec End Function </script> </job>
The following example demonstrates how to bind to an existing item using the native OLE DB interfaces directly when using Microsoft® Visual C++®. If the item is successfully bound, the OLE DB IRow interface address is returned.
C++
#include <oledb.h> #include <msdasc.h> #pragma comment(lib,"oledb.lib") #pragma comment(lib,"msdasc.lib") #define BUF_SIZE 4096 HRESULT getItem(BSTR url, IRow** ppRow) { if(url == NULL) return E_INVALIDARG; HRESULT hr = S_OK; IBindResource* pBRes = NULL; IUnknown* pUnk = NULL; DBBINDURLSTATUS dwBindStatus = 0; CLSID clsid_ExOLEDBProviderBinder; if(FAILED(hr = CLSIDFromProgID(L"ExOLEDB.Binder", &clsid_ExOLEDBProviderBinder))) return hr; hr = CoCreateInstance( clsid_ExOLEDBProviderBinder, NULL, CLSCTX_INPROC_SERVER, IID_IBindResource, (void**)&pBRes); if(FAILED(hr)) return hr; hr = pBRes->Bind( NULL, url, DBBINDURLFLAG_READWRITE, DBGUID_ROW, IID_IRow, NULL, NULL, &dwBindStatus, (IUnknown**) &pUnk); if(FAILED(hr)){ pBRes->Release(); return hr; } hr = pUnk->QueryInterface(ppRow); pBRes->Release(); return hr; }
Related Topics
- Traversing Folders with ADO
- Accessing Public Folders with ADO
- Getting a List of Folders
- Getting a List of Folders (WebDAV)
Send us your feedback about the Microsoft Exchange Server 2003 SDK.
Build: June 2007 (2007.618.1)
© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.