Article ID: 186387 - Last Review: August 10, 2004 - Revision: 2.2 Ado2atl.exe Returns ADO Interfaces from COMThis article was previously published under Q186387 SUMMARY The Ado2atl.exe sample demonstrates how to create a simple
Active Template Library (ATL) Component Object Model (COM) object that returns
an ADO recordset interface. The sample also includes a Visual Basic client
project that uses the ATL COM object to create an interface to an ADO
_Recordset. After extracting the files, first build the Visual C++ projects to register the COM Objects, then use Visual Basic to build the client program. For additional information, and for a more complete sample that returns a disconnected recordset, click the article number below to view the article in the Microsoft Knowledge Base: 200122
(http://support.microsoft.com/kb/200122/EN-US/
)
Sample: ATL2ADO.exe Returns Disconnected ADO Recordset
MORE INFORMATIONThe
following file is available for download from the Microsoft Download
Center: Ado2atl.exe
(http://download.microsoft.com/download/vstudio97pro/utility/1.0/w9x2kme/en-us/ado2atl.exe)
For
additional information about how to download Microsoft Support files, click the
following article number to view the article in the Microsoft Knowledge Base: 119591
(http://support.microsoft.com/kb/119591/EN-US/
)
How to Obtain Microsoft Support Files from Online Services
Microsoft scanned this file for viruses. Microsoft used the most
current virus-detection software that was available on the date that the file
was posted. The file is stored on security-enhanced servers that help to
prevent any unauthorized changes to the file.
You must register the ATL COM objects before you can use the
Visual Basic project. The objects automatically register when built. There are
three Visual C++ 6.0 projects: RkADO, VC_ClientTest, and RdADO2. When building
these projects, you may need to remove the _ATL_MIN_CRT preprocessor from the
setting for the release builds. To do this, from the Project menu, click Settings, and then select the preprocessor category from the C/C++ tab. You must include the type libraries from these projects in
the Visual Basic project. From the Visual Basic Project menu, choose References, and then click RkADO 1.0 Type Library and RdADO2 1.0 Type Library. The RdADO project creates a COM object that directly returns an ADO _Recordset interface. To return an ADO interface, you must modify the .idl file that the ATL wizard created. After you add an interface that returns a _Recordset, you must cut the interface from the top of the .idl file and paste it into the library section. You must also import (via importlib) the ADO DLL, which contains the ADO type library information needed to marshal ADO interfaces. Compare the Rdado2.idl file (which requires no modification) to the Rkado.idl file, which requires that you move the interface from the top of the file to the Library section. The RdADO2 project creates a COM object that returns the ADO _Recordset interface as a IDispatch interface. IDispatch interfaces can be returned directly without modification. To use ADO smart pointers in the COM object implementation, you must add the following code to the Stdafx.h files:
...ado2atl\debug\msado15.tlh(409) : warning
C4146: unary minus operator applied to unsigned type, result still unsigned
You must successfully build each ATL project (so it can register the COM objects) before running the Visual Basic project. To activate the Visual Basic client, enter a Graduation Year (88 for example). This enables the Get RS (Get Record Set) and Get RS Id (Get Record Set via IDispatch) buttons. There is minimal error checking in the Visual Basic sample. For additional information, click the article number below to view the article in the Microsoft Knowledge Base: 167957
(http://support.microsoft.com/kb/167957/EN-US/
)
INFO: Extracting Error Information from ADO in VB
CAUTION: The Rkado.idl file uses the importlib directive to bring in the
ADO typelib information. The problem with this is that the import occurs at
run-time, not compile time. This means that every computer where this typelib
is used must have the Msado15.dll file installed in the same location, which is
not something you can always expect. The use of the import directive, which causes the import to occur at compile time instead of the importlib directive, resolves this issue. REFERENCESFor additional information, click the
article numbers below to view the articles in the Microsoft Knowledge Base: 200122
(http://support.microsoft.com/kb/200122/EN-US/
)
SAMPLE: ATL2ADO.exe Returns Disconnected ADO Recordset
181733
(http://support.microsoft.com/kb/181733/EN-US/
)
FILE: Adovcbtd.exe #import Using UpdateBatch and CancelBatch
182389
(http://support.microsoft.com/kb/182389/EN-US/
)
FILE: Adovcbm.exe ADO 1.5 with #import and Getrows/Bookmarks
172403
(http://support.microsoft.com/kb/172403/EN-US/
)
FILE: Adovb.exe Demonstrates How to Use ADO with Visual
(c) Microsoft Corporation 1998, All Rights
Reserved. Contributions by %2, Microsoft Corporation.APPLIES TO
| Article Translations
|

Back to the top
