// Created by Microsoft (R) C/C++ Compiler Version 12.00.8168.0 (2de92c35).
//
// msado20.tlh
//
// C++ source equivalent of Win32 type library msado20.tlb
// compiler-generated file created 04/29/12 at 13:26:17 - DO NOT EDIT!

#pragma once
#pragma pack(push, 8)

#include <comdef.h>

//
// Forward references and typedefs
//

typedef enum SearchDirectionEnum SearchDirection;
struct __declspec(uuid("00000512-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Collection;
struct __declspec(uuid("00000513-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _DynaCollection;
struct __declspec(uuid("00000534-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _ADO;
struct __declspec(uuid("00000504-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Properties;
struct __declspec(uuid("00000503-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Property;
struct __declspec(uuid("00000500-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Error;
struct __declspec(uuid("00000501-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Errors;
struct __declspec(uuid("00000508-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Command15;
struct __declspec(uuid("00000550-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Connection;
struct __declspec(uuid("00000515-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Connection15;
struct __declspec(uuid("0000054f-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Recordset;
struct __declspec(uuid("0000050e-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Recordset15;
struct __declspec(uuid("0000054d-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Fields;
struct __declspec(uuid("00000506-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Fields15;
struct __declspec(uuid("0000054c-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Field;
struct __declspec(uuid("0000050c-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Parameter;
struct __declspec(uuid("0000050d-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Parameters;
struct __declspec(uuid("0000054e-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Command;
struct __declspec(uuid("00000402-0000-0010-8000-00aa006d2ea4"))
/* interface */ ConnectionEventsVt;
struct __declspec(uuid("00000403-0000-0010-8000-00aa006d2ea4"))
/* interface */ RecordsetEventsVt;
struct __declspec(uuid("00000400-0000-0010-8000-00aa006d2ea4"))
/* dispinterface */ ConnectionEvents;
struct __declspec(uuid("00000266-0000-0010-8000-00aa006d2ea4"))
/* dispinterface */ RecordsetEvents;
struct __declspec(uuid("00000516-0000-0010-8000-00aa006d2ea4"))
/* interface */ ADOConnectionConstruction15;
struct __declspec(uuid("00000551-0000-0010-8000-00aa006d2ea4"))
/* interface */ ADOConnectionConstruction;
struct /* coclass */ Connection;
struct __declspec(uuid("00000517-0000-0010-8000-00aa006d2ea4"))
/* interface */ ADOCommandConstruction;
struct /* coclass */ Command;
struct /* coclass */ Recordset;
struct __declspec(uuid("00000283-0000-0010-8000-00aa006d2ea4"))
/* interface */ ADORecordsetConstruction;
struct __declspec(uuid("00000505-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ Field15;
struct /* coclass */ Parameter;

//
// Smart pointer typedef declarations
//

_COM_SMARTPTR_TYPEDEF(_Collection, __uuidof(_Collection));
_COM_SMARTPTR_TYPEDEF(_DynaCollection, __uuidof(_DynaCollection));
_COM_SMARTPTR_TYPEDEF(_ADO, __uuidof(_ADO));
_COM_SMARTPTR_TYPEDEF(Properties, __uuidof(Properties));
_COM_SMARTPTR_TYPEDEF(Property, __uuidof(Property));
_COM_SMARTPTR_TYPEDEF(Error, __uuidof(Error));
_COM_SMARTPTR_TYPEDEF(Errors, __uuidof(Errors));
_COM_SMARTPTR_TYPEDEF(_Command15, __uuidof(_Command15));
_COM_SMARTPTR_TYPEDEF(_Connection15, __uuidof(_Connection15));
_COM_SMARTPTR_TYPEDEF(_Connection, __uuidof(_Connection));
_COM_SMARTPTR_TYPEDEF(_Recordset15, __uuidof(_Recordset15));
_COM_SMARTPTR_TYPEDEF(_Recordset, __uuidof(_Recordset));
_COM_SMARTPTR_TYPEDEF(Fields15, __uuidof(Fields15));
_COM_SMARTPTR_TYPEDEF(Fields, __uuidof(Fields));
_COM_SMARTPTR_TYPEDEF(Field, __uuidof(Field));
_COM_SMARTPTR_TYPEDEF(_Parameter, __uuidof(_Parameter));
_COM_SMARTPTR_TYPEDEF(Parameters, __uuidof(Parameters));
_COM_SMARTPTR_TYPEDEF(_Command, __uuidof(_Command));
_COM_SMARTPTR_TYPEDEF(ConnectionEventsVt, __uuidof(ConnectionEventsVt));
_COM_SMARTPTR_TYPEDEF(RecordsetEventsVt, __uuidof(RecordsetEventsVt));
_COM_SMARTPTR_TYPEDEF(ConnectionEvents, __uuidof(IDispatch));
_COM_SMARTPTR_TYPEDEF(RecordsetEvents, __uuidof(IDispatch));
_COM_SMARTPTR_TYPEDEF(ADOConnectionConstruction15, __uuidof(ADOConnectionConstruction15));
_COM_SMARTPTR_TYPEDEF(ADOConnectionConstruction, __uuidof(ADOConnectionConstruction));
_COM_SMARTPTR_TYPEDEF(ADOCommandConstruction, __uuidof(ADOCommandConstruction));
_COM_SMARTPTR_TYPEDEF(ADORecordsetConstruction, __uuidof(ADORecordsetConstruction));
_COM_SMARTPTR_TYPEDEF(Field15, __uuidof(Field15));

//
// Type library items
//

enum CursorTypeEnum
{
    adOpenUnspecified = -1,
    adOpenForwardOnly = 0,
    adOpenKeyset = 1,
    adOpenDynamic = 2,
    adOpenStatic = 3
};

enum CursorOptionEnum
{
    adHoldRecords = 256,
    adMovePrevious = 512,
    adAddNew = 16778240,
    adDelete = 16779264,
    adUpdate = 16809984,
    adBookmark = 8192,
    adApproxPosition = 16384,
    adUpdateBatch = 65536,
    adResync = 131072,
    adNotify = 262144,
    adFind = 524288
};

enum LockTypeEnum
{
    adLockUnspecified = -1,
    adLockReadOnly = 1,
    adLockPessimistic = 2,
    adLockOptimistic = 3,
    adLockBatchOptimistic = 4
};

enum ExecuteOptionEnum
{
    adOptionUnspecified = -1,
    adAsyncExecute = 16,
    adAsyncFetch = 32,
    adAsyncFetchNonBlocking = 64,
    adExecuteNoRecords = 128
};

enum ConnectOptionEnum
{
    adConnectUnspecified = -1,
    adAsyncConnect = 16
};

enum ObjectStateEnum
{
    adStateClosed = 0,
    adStateOpen = 1,
    adStateConnecting = 2,
    adStateExecuting = 4,
    adStateFetching = 8
};

enum CursorLocationEnum
{
    adUseNone = 1,
    adUseServer = 2,
    adUseClient = 3,
    adUseClientBatch = 3
};

enum DataTypeEnum
{
    adEmpty = 0,
    adTinyInt = 16,
    adSmallInt = 2,
    adInteger = 3,
    adBigInt = 20,
    adUnsignedTinyInt = 17,
    adUnsignedSmallInt = 18,
    adUnsignedInt = 19,
    adUnsignedBigInt = 21,
    adSingle = 4,
    adDouble = 5,
    adCurrency = 6,
    adDecimal = 14,
    adNumeric = 131,
    adBoolean = 11,
    adError = 10,
    adUserDefined = 132,
    adVariant = 12,
    adIDispatch = 9,
    adIUnknown = 13,
    adGUID = 72,
    adDate = 7,
    adDBDate = 133,
    adDBTime = 134,
    adDBTimeStamp = 135,
    adBSTR = 8,
    adChar = 129,
    adVarChar = 200,
    adLongVarChar = 201,
    adWChar = 130,
    adVarWChar = 202,
    adLongVarWChar = 203,
    adBinary = 128,
    adVarBinary = 204,
    adLongVarBinary = 205,
    adChapter = 136,
    adFileTime = 64,
    adDBFileTime = 137,
    adPropVariant = 138,
    adVarNumeric = 139
};

enum FieldAttributeEnum
{
    adFldUnspecified = -1,
    adFldMayDefer = 2,
    adFldUpdatable = 4,
    adFldUnknownUpdatable = 8,
    adFldFixed = 16,
    adFldIsNullable = 32,
    adFldMayBeNull = 64,
    adFldLong = 128,
    adFldRowID = 256,
    adFldRowVersion = 512,
    adFldCacheDeferred = 4096,
    adFldNegativeScale = 16384,
    adFldKeyColumn = 32768
};

enum EditModeEnum
{
    adEditNone = 0,
    adEditInProgress = 1,
    adEditAdd = 2,
    adEditDelete = 4
};

enum RecordStatusEnum
{
    adRecOK = 0,
    adRecNew = 1,
    adRecModified = 2,
    adRecDeleted = 4,
    adRecUnmodified = 8,
    adRecInvalid = 16,
    adRecMultipleChanges = 64,
    adRecPendingChanges = 128,
    adRecCanceled = 256,
    adRecCantRelease = 1024,
    adRecConcurrencyViolation = 2048,
    adRecIntegrityViolation = 4096,
    adRecMaxChangesExceeded = 8192,
    adRecObjectOpen = 16384,
    adRecOutOfMemory = 32768,
    adRecPermissionDenied = 65536,
    adRecSchemaViolation = 131072,
    adRecDBDeleted = 262144
};

enum GetRowsOptionEnum
{
    adGetRowsRest = -1
};

enum PositionEnum
{
    adPosUnknown = -1,
    adPosBOF = -2,
    adPosEOF = -3
};

enum BookmarkEnum
{
    adBookmarkCurrent = 0,
    adBookmarkFirst = 1,
    adBookmarkLast = 2
};

enum MarshalOptionsEnum
{
    adMarshalAll = 0,
    adMarshalModifiedOnly = 1
};

enum AffectEnum
{
    adAffectCurrent = 1,
    adAffectGroup = 2,
    adAffectAll = 3,
    adAffectAllChapters = 4
};

enum ResyncEnum
{
    adResyncUnderlyingValues = 1,
    adResyncAllValues = 2
};

enum CompareEnum
{
    adCompareLessThan = 0,
    adCompareEqual = 1,
    adCompareGreaterThan = 2,
    adCompareNotEqual = 3,
    adCompareNotComparable = 4
};

enum FilterGroupEnum
{
    adFilterNone = 0,
    adFilterPendingRecords = 1,
    adFilterAffectedRecords = 2,
    adFilterFetchedRecords = 3,
    adFilterPredicate = 4,
    adFilterConflictingRecords = 5
};

enum SearchDirectionEnum
{
    adSearchForward = 1,
    adSearchBackward = -1
};

enum PersistFormatEnum
{
    adPersistADTG = 0,
    adPersistXML = 1
};

enum StringFormatEnum
{
    adClipString = 2
};

enum ADCPROP_UPDATECRITERIA_ENUM
{
    adCriteriaKey = 0,
    adCriteriaAllCols = 1,
    adCriteriaUpdCols = 2,
    adCriteriaTimeStamp = 3
};

enum ADCPROP_ASYNCTHREADPRIORITY_ENUM
{
    adPriorityLowest = 1,
    adPriorityBelowNormal = 2,
    adPriorityNormal = 3,
    adPriorityAboveNormal = 4,
    adPriorityHighest = 5
};

enum ConnectPromptEnum
{
    adPromptAlways = 1,
    adPromptComplete = 2,
    adPromptCompleteRequired = 3,
    adPromptNever = 4
};

enum ConnectModeEnum
{
    adModeUnknown = 0,
    adModeRead = 1,
    adModeWrite = 2,
    adModeReadWrite = 3,
    adModeShareDenyRead = 4,
    adModeShareDenyWrite = 8,
    adModeShareExclusive = 12,
    adModeShareDenyNone = 16
};

enum IsolationLevelEnum
{
    adXactUnspecified = -1,
    adXactChaos = 16,
    adXactReadUncommitted = 256,
    adXactBrowse = 256,
    adXactCursorStability = 4096,
    adXactReadCommitted = 4096,
    adXactRepeatableRead = 65536,
    adXactSerializable = 1048576,
    adXactIsolated = 1048576
};

enum XactAttributeEnum
{
    adXactCommitRetaining = 131072,
    adXactAbortRetaining = 262144,
    adXactAsyncPhaseOne = 524288,
    adXactSyncPhaseOne = 1048576
};

enum PropertyAttributesEnum
{
    adPropNotSupported = 0,
    adPropRequired = 1,
    adPropOptional = 2,
    adPropRead = 512,
    adPropWrite = 1024
};

enum ErrorValueEnum
{
    adErrInvalidArgument = 3001,
    adErrNoCurrentRecord = 3021,
    adErrIllegalOperation = 3219,
    adErrInTransaction = 3246,
    adErrFeatureNotAvailable = 3251,
    adErrItemNotFound = 3265,
    adErrObjectInCollection = 3367,
    adErrObjectNotSet = 3420,
    adErrDataConversion = 3421,
    adErrObjectClosed = 3704,
    adErrObjectOpen = 3705,
    adErrProviderNotFound = 3706,
    adErrBoundToCommand = 3707,
    adErrInvalidParamInfo = 3708,
    adErrInvalidConnection = 3709,
    adErrNotReentrant = 3710,
    adErrStillExecuting = 3711,
    adErrOperationCancelled = 3712,
    adErrStillConnecting = 3713,
    adErrNotExecuting = 3715,
    adErrUnsafeOperation = 3716
};

enum ParameterAttributesEnum
{
    adParamSigned = 16,
    adParamNullable = 64,
    adParamLong = 128
};

enum ParameterDirectionEnum
{
    adParamUnknown = 0,
    adParamInput = 1,
    adParamOutput = 2,
    adParamInputOutput = 3,
    adParamReturnValue = 4
};

enum CommandTypeEnum
{
    adCmdUnspecified = -1,
    adCmdUnknown = 8,
    adCmdText = 1,
    adCmdTable = 2,
    adCmdStoredProc = 4,
    adCmdFile = 256,
    adCmdTableDirect = 512
};

enum EventStatusEnum
{
    adStatusOK = 1,
    adStatusErrorsOccurred = 2,
    adStatusCantDeny = 3,
    adStatusCancel = 4,
    adStatusUnwantedEvent = 5
};

enum EventReasonEnum
{
    adRsnAddNew = 1,
    adRsnDelete = 2,
    adRsnUpdate = 3,
    adRsnUndoUpdate = 4,
    adRsnUndoAddNew = 5,
    adRsnUndoDelete = 6,
    adRsnRequery = 7,
    adRsnResynch = 8,
    adRsnClose = 9,
    adRsnMove = 10,
    adRsnFirstChange = 11,
    adRsnMoveFirst = 12,
    adRsnMoveNext = 13,
    adRsnMovePrevious = 14,
    adRsnMoveLast = 15
};

enum SchemaEnum
{
    adSchemaProviderSpecific = -1,
    adSchemaAsserts = 0,
    adSchemaCatalogs = 1,
    adSchemaCharacterSets = 2,
    adSchemaCollations = 3,
    adSchemaColumns = 4,
    adSchemaCheckConstraints = 5,
    adSchemaConstraintColumnUsage = 6,
    adSchemaConstraintTableUsage = 7,
    adSchemaKeyColumnUsage = 8,
    adSchemaReferentialContraints = 9,
    adSchemaTableConstraints = 10,
    adSchemaColumnsDomainUsage = 11,
    adSchemaIndexes = 12,
    adSchemaColumnPrivileges = 13,
    adSchemaTablePrivileges = 14,
    adSchemaUsagePrivileges = 15,
    adSchemaProcedures = 16,
    adSchemaSchemata = 17,
    adSchemaSQLLanguages = 18,
    adSchemaStatistics = 19,
    adSchemaTables = 20,
    adSchemaTranslations = 21,
    adSchemaProviderTypes = 22,
    adSchemaViews = 23,
    adSchemaViewColumnUsage = 24,
    adSchemaViewTableUsage = 25,
    adSchemaProcedureParameters = 26,
    adSchemaForeignKeys = 27,
    adSchemaPrimaryKeys = 28,
    adSchemaProcedureColumns = 29,
    adSchemaDBInfoKeywords = 30,
    adSchemaDBInfoLiterals = 31,
    adSchemaCubes = 32,
    adSchemaDimensions = 33,
    adSchemaHierarchies = 34,
    adSchemaLevels = 35,
    adSchemaMeasures = 36,
    adSchemaProperties = 37,
    adSchemaMembers = 38
};

struct __declspec(uuid("00000512-0000-0010-8000-00aa006d2ea4"))
_Collection : IDispatch
{
    //
    // Property data
    //

    __declspec(property(get=GetCount))
    long Count;

    //
    // Wrapper methods for error-handling
    //

    long GetCount ( );
    IUnknownPtr _NewEnum ( );
    HRESULT Refresh ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Count (
        long * c ) = 0;
    virtual HRESULT __stdcall raw__NewEnum (
        IUnknown * * ppvObject ) = 0;
    virtual HRESULT __stdcall raw_Refresh ( ) = 0;
};

struct __declspec(uuid("00000513-0000-0010-8000-00aa006d2ea4"))
_DynaCollection : _Collection
{
    //
    // Wrapper methods for error-handling
    //

    HRESULT Append (
        IDispatch * Object );
    HRESULT Delete (
        const _variant_t & Index );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_Append (
        IDispatch * Object ) = 0;
    virtual HRESULT __stdcall raw_Delete (
        VARIANT Index ) = 0;
};

struct __declspec(uuid("00000534-0000-0010-8000-00aa006d2ea4"))
_ADO : IDispatch
{
    //
    // Property data
    //

    __declspec(property(get=GetProperties))
    PropertiesPtr Properties;

    //
    // Wrapper methods for error-handling
    //

    PropertiesPtr GetProperties ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Properties (
        struct Properties * * ppvObject ) = 0;
};

struct __declspec(uuid("00000504-0000-0010-8000-00aa006d2ea4"))
Properties : _Collection
{
    //
    // Property data
    //

    __declspec(property(get=GetItem))
    PropertyPtr Item[];

    //
    // Wrapper methods for error-handling
    //

    PropertyPtr GetItem (
        const _variant_t & Index );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Item (
        VARIANT Index,
        struct Property * * ppvObject ) = 0;
};

struct __declspec(uuid("00000503-0000-0010-8000-00aa006d2ea4"))
Property : IDispatch
{
    //
    // Property data
    //

    __declspec(property(get=GetValue,put=PutValue))
    _variant_t Value;
    __declspec(property(get=GetName))
    _bstr_t Name;
    __declspec(property(get=GetType))
    enum DataTypeEnum Type;
    __declspec(property(get=GetAttributes,put=PutAttributes))
    long Attributes;

    //
    // Wrapper methods for error-handling
    //

    _variant_t GetValue ( );
    void PutValue (
        const _variant_t & pval );
    _bstr_t GetName ( );
    enum DataTypeEnum GetType ( );
    long GetAttributes ( );
    void PutAttributes (
        long plAttributes );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Value (
        VARIANT * pval ) = 0;
    virtual HRESULT __stdcall put_Value (
        VARIANT pval ) = 0;
    virtual HRESULT __stdcall get_Name (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_Type (
        enum DataTypeEnum * ptype ) = 0;
    virtual HRESULT __stdcall get_Attributes (
        long * plAttributes ) = 0;
    virtual HRESULT __stdcall put_Attributes (
        long plAttributes ) = 0;
};

struct __declspec(uuid("00000500-0000-0010-8000-00aa006d2ea4"))
Error : IDispatch
{
    //
    // Property data
    //

    __declspec(property(get=GetNumber))
    long Number;
    __declspec(property(get=GetSource))
    _bstr_t Source;
    __declspec(property(get=GetDescription))
    _bstr_t Description;
    __declspec(property(get=GetHelpFile))
    _bstr_t HelpFile;
    __declspec(property(get=GetHelpContext))
    long HelpContext;
    __declspec(property(get=GetSQLState))
    _bstr_t SQLState;
    __declspec(property(get=GetNativeError))
    long NativeError;

    //
    // Wrapper methods for error-handling
    //

    long GetNumber ( );
    _bstr_t GetSource ( );
    _bstr_t GetDescription ( );
    _bstr_t GetHelpFile ( );
    long GetHelpContext ( );
    _bstr_t GetSQLState ( );
    long GetNativeError ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Number (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_Source (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_Description (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_HelpFile (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_HelpContext (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_SQLState (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_NativeError (
        long * pl ) = 0;
};

struct __declspec(uuid("00000501-0000-0010-8000-00aa006d2ea4"))
Errors : _Collection
{
    //
    // Property data
    //

    __declspec(property(get=GetItem))
    ErrorPtr Item[];

    //
    // Wrapper methods for error-handling
    //

    ErrorPtr GetItem (
        const _variant_t & Index );
    HRESULT Clear ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Item (
        VARIANT Index,
        struct Error * * ppvObject ) = 0;
    virtual HRESULT __stdcall raw_Clear ( ) = 0;
};

struct __declspec(uuid("00000508-0000-0010-8000-00aa006d2ea4"))
_Command15 : _ADO
{
    //
    // Property data
    //

    __declspec(property(get=GetActiveConnection,put=PutRefActiveConnection))
    _ConnectionPtr ActiveConnection;
    __declspec(property(get=GetParameters))
    ParametersPtr Parameters;
    __declspec(property(get=GetCommandText,put=PutCommandText))
    _bstr_t CommandText;
    __declspec(property(get=GetCommandTimeout,put=PutCommandTimeout))
    long CommandTimeout;
    __declspec(property(get=GetPrepared,put=PutPrepared))
    VARIANT_BOOL Prepared;
    __declspec(property(get=GetCommandType,put=PutCommandType))
    enum CommandTypeEnum CommandType;
    __declspec(property(get=GetName,put=PutName))
    _bstr_t Name;

    //
    // Wrapper methods for error-handling
    //

    _ConnectionPtr GetActiveConnection ( );
    void PutRefActiveConnection (
        struct _Connection * ppvObject );
    void PutActiveConnection (
        const _variant_t & ppvObject );
    _bstr_t GetCommandText ( );
    void PutCommandText (
        _bstr_t pbstr );
    long GetCommandTimeout ( );
    void PutCommandTimeout (
        long pl );
    VARIANT_BOOL GetPrepared ( );
    void PutPrepared (
        VARIANT_BOOL pfPrepared );
    _RecordsetPtr Execute (
        VARIANT * RecordsAffected,
        VARIANT * Parameters,
        long Options );
    _ParameterPtr CreateParameter (
        _bstr_t Name,
        enum DataTypeEnum Type,
        enum ParameterDirectionEnum Direction,
        long Size,
        const _variant_t & Value = vtMissing );
    ParametersPtr GetParameters ( );
    void PutCommandType (
        enum CommandTypeEnum plCmdType );
    enum CommandTypeEnum GetCommandType ( );
    _bstr_t GetName ( );
    void PutName (
        _bstr_t pbstrName );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_ActiveConnection (
        struct _Connection * * ppvObject ) = 0;
    virtual HRESULT __stdcall putref_ActiveConnection (
        struct _Connection * ppvObject ) = 0;
    virtual HRESULT __stdcall put_ActiveConnection (
        VARIANT ppvObject ) = 0;
    virtual HRESULT __stdcall get_CommandText (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall put_CommandText (
        BSTR pbstr ) = 0;
    virtual HRESULT __stdcall get_CommandTimeout (
        long * pl ) = 0;
    virtual HRESULT __stdcall put_CommandTimeout (
        long pl ) = 0;
    virtual HRESULT __stdcall get_Prepared (
        VARIANT_BOOL * pfPrepared ) = 0;
    virtual HRESULT __stdcall put_Prepared (
        VARIANT_BOOL pfPrepared ) = 0;
    virtual HRESULT __stdcall raw_Execute (
        VARIANT * RecordsAffected,
        VARIANT * Parameters,
        long Options,
        struct _Recordset * * ppiRs ) = 0;
    virtual HRESULT __stdcall raw_CreateParameter (
        BSTR Name,
        enum DataTypeEnum Type,
        enum ParameterDirectionEnum Direction,
        long Size,
        VARIANT Value,
        struct _Parameter * * ppiprm ) = 0;
    virtual HRESULT __stdcall get_Parameters (
        struct Parameters * * ppvObject ) = 0;
    virtual HRESULT __stdcall put_CommandType (
        enum CommandTypeEnum plCmdType ) = 0;
    virtual HRESULT __stdcall get_CommandType (
        enum CommandTypeEnum * plCmdType ) = 0;
    virtual HRESULT __stdcall get_Name (
        BSTR * pbstrName ) = 0;
    virtual HRESULT __stdcall put_Name (
        BSTR pbstrName ) = 0;
};

struct __declspec(uuid("00000515-0000-0010-8000-00aa006d2ea4"))
_Connection15 : _ADO
{
    //
    // Property data
    //

    __declspec(property(get=GetConnectionString,put=PutConnectionString))
    _bstr_t ConnectionString;
    __declspec(property(get=GetCommandTimeout,put=PutCommandTimeout))
    long CommandTimeout;
    __declspec(property(get=GetConnectionTimeout,put=PutConnectionTimeout))
    long ConnectionTimeout;
    __declspec(property(get=GetVersion))
    _bstr_t Version;
    __declspec(property(get=GetErrors))
    ErrorsPtr Errors;
    __declspec(property(get=GetDefaultDatabase,put=PutDefaultDatabase))
    _bstr_t DefaultDatabase;
    __declspec(property(get=GetIsolationLevel,put=PutIsolationLevel))
    enum IsolationLevelEnum IsolationLevel;
    __declspec(property(get=GetAttributes,put=PutAttributes))
    long Attributes;
    __declspec(property(get=GetCursorLocation,put=PutCursorLocation))
    enum CursorLocationEnum CursorLocation;
    __declspec(property(get=GetMode,put=PutMode))
    enum ConnectModeEnum Mode;
    __declspec(property(get=GetProvider,put=PutProvider))
    _bstr_t Provider;
    __declspec(property(get=GetState))
    long State;

    //
    // Wrapper methods for error-handling
    //

    _bstr_t GetConnectionString ( );
    void PutConnectionString (
        _bstr_t pbstr );
    long GetCommandTimeout ( );
    void PutCommandTimeout (
        long plTimeout );
    long GetConnectionTimeout ( );
    void PutConnectionTimeout (
        long plTimeout );
    _bstr_t GetVersion ( );
    HRESULT Close ( );
    _RecordsetPtr Execute (
        _bstr_t CommandText,
        VARIANT * RecordsAffected,
        long Options );
    long BeginTrans ( );
    HRESULT CommitTrans ( );
    HRESULT RollbackTrans ( );
    HRESULT Open (
        _bstr_t ConnectionString,
        _bstr_t UserID,
        _bstr_t Password,
        long Options );
    ErrorsPtr GetErrors ( );
    _bstr_t GetDefaultDatabase ( );
    void PutDefaultDatabase (
        _bstr_t pbstr );
    enum IsolationLevelEnum GetIsolationLevel ( );
    void PutIsolationLevel (
        enum IsolationLevelEnum Level );
    long GetAttributes ( );
    void PutAttributes (
        long plAttr );
    enum CursorLocationEnum GetCursorLocation ( );
    void PutCursorLocation (
        enum CursorLocationEnum plCursorLoc );
    enum ConnectModeEnum GetMode ( );
    void PutMode (
        enum ConnectModeEnum plMode );
    _bstr_t GetProvider ( );
    void PutProvider (
        _bstr_t pbstr );
    long GetState ( );
    _RecordsetPtr OpenSchema (
        enum SchemaEnum Schema,
        const _variant_t & Restrictions = vtMissing,
        const _variant_t & SchemaID = vtMissing );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_ConnectionString (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall put_ConnectionString (
        BSTR pbstr ) = 0;
    virtual HRESULT __stdcall get_CommandTimeout (
        long * plTimeout ) = 0;
    virtual HRESULT __stdcall put_CommandTimeout (
        long plTimeout ) = 0;
    virtual HRESULT __stdcall get_ConnectionTimeout (
        long * plTimeout ) = 0;
    virtual HRESULT __stdcall put_ConnectionTimeout (
        long plTimeout ) = 0;
    virtual HRESULT __stdcall get_Version (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall raw_Close ( ) = 0;
    virtual HRESULT __stdcall raw_Execute (
        BSTR CommandText,
        VARIANT * RecordsAffected,
        long Options,
        struct _Recordset * * ppiRset ) = 0;
    virtual HRESULT __stdcall raw_BeginTrans (
        long * TransactionLevel ) = 0;
    virtual HRESULT __stdcall raw_CommitTrans ( ) = 0;
    virtual HRESULT __stdcall raw_RollbackTrans ( ) = 0;
    virtual HRESULT __stdcall raw_Open (
        BSTR ConnectionString,
        BSTR UserID,
        BSTR Password,
        long Options ) = 0;
    virtual HRESULT __stdcall get_Errors (
        struct Errors * * ppvObject ) = 0;
    virtual HRESULT __stdcall get_DefaultDatabase (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall put_DefaultDatabase (
        BSTR pbstr ) = 0;
    virtual HRESULT __stdcall get_IsolationLevel (
        enum IsolationLevelEnum * Level ) = 0;
    virtual HRESULT __stdcall put_IsolationLevel (
        enum IsolationLevelEnum Level ) = 0;
    virtual HRESULT __stdcall get_Attributes (
        long * plAttr ) = 0;
    virtual HRESULT __stdcall put_Attributes (
        long plAttr ) = 0;
    virtual HRESULT __stdcall get_CursorLocation (
        enum CursorLocationEnum * plCursorLoc ) = 0;
    virtual HRESULT __stdcall put_CursorLocation (
        enum CursorLocationEnum plCursorLoc ) = 0;
    virtual HRESULT __stdcall get_Mode (
        enum ConnectModeEnum * plMode ) = 0;
    virtual HRESULT __stdcall put_Mode (
        enum ConnectModeEnum plMode ) = 0;
    virtual HRESULT __stdcall get_Provider (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall put_Provider (
        BSTR pbstr ) = 0;
    virtual HRESULT __stdcall get_State (
        long * plObjState ) = 0;
    virtual HRESULT __stdcall raw_OpenSchema (
        enum SchemaEnum Schema,
        VARIANT Restrictions,
        VARIANT SchemaID,
        struct _Recordset * * pprset ) = 0;
};

struct __declspec(uuid("00000550-0000-0010-8000-00aa006d2ea4"))
_Connection : _Connection15
{
    //
    // Wrapper methods for error-handling
    //

    HRESULT Cancel ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_Cancel ( ) = 0;
};

struct __declspec(uuid("0000050e-0000-0010-8000-00aa006d2ea4"))
_Recordset15 : _ADO
{
    //
    // Property data
    //

    __declspec(property(get=GetFields))
    FieldsPtr Fields;
    __declspec(property(get=GetPageSize,put=PutPageSize))
    long PageSize;
    __declspec(property(get=GetPageCount))
    long PageCount;
    __declspec(property(get=GetCursorLocation,put=PutCursorLocation))
    enum CursorLocationEnum CursorLocation;
    __declspec(property(get=GetState))
    long State;
    __declspec(property(get=GetMarshalOptions,put=PutMarshalOptions))
    enum MarshalOptionsEnum MarshalOptions;
    __declspec(property(get=GetCollect,put=PutCollect))
    _variant_t Collect[];
    __declspec(property(get=GetEditMode))
    enum EditModeEnum EditMode;
    __declspec(property(get=GetStatus))
    long Status;
    __declspec(property(get=GetFilter,put=PutFilter))
    _variant_t Filter;
    __declspec(property(get=GetSort,put=PutSort))
    _bstr_t Sort;
    __declspec(property(get=GetAbsolutePosition,put=PutAbsolutePosition))
    enum PositionEnum AbsolutePosition;
    __declspec(property(get=GetBOF))
    VARIANT_BOOL BOF;
    __declspec(property(get=GetBookmark,put=PutBookmark))
    _variant_t Bookmark;
    __declspec(property(get=GetCacheSize,put=PutCacheSize))
    long CacheSize;
    __declspec(property(get=GetCursorType,put=PutCursorType))
    enum CursorTypeEnum CursorType;
    __declspec(property(get=GetADOEOF))
    VARIANT_BOOL ADOEOF;
    __declspec(property(get=GetAbsolutePage,put=PutAbsolutePage))
    enum PositionEnum AbsolutePage;
    __declspec(property(get=GetLockType,put=PutLockType))
    enum LockTypeEnum LockType;
    __declspec(property(get=GetMaxRecords,put=PutMaxRecords))
    long MaxRecords;
    __declspec(property(get=GetRecordCount))
    long RecordCount;

    //
    // Wrapper methods for error-handling
    //

    enum PositionEnum GetAbsolutePosition ( );
    void PutAbsolutePosition (
        enum PositionEnum pl );
    void PutRefActiveConnection (
        IDispatch * pvar );
    void PutActiveConnection (
        const _variant_t & pvar );
    _variant_t GetActiveConnection ( );
    VARIANT_BOOL GetBOF ( );
    _variant_t GetBookmark ( );
    void PutBookmark (
        const _variant_t & pvBookmark );
    long GetCacheSize ( );
    void PutCacheSize (
        long pl );
    enum CursorTypeEnum GetCursorType ( );
    void PutCursorType (
        enum CursorTypeEnum plCursorType );
    VARIANT_BOOL GetADOEOF ( );
    FieldsPtr GetFields ( );
    enum LockTypeEnum GetLockType ( );
    void PutLockType (
        enum LockTypeEnum plLockType );
    long GetMaxRecords ( );
    void PutMaxRecords (
        long plMaxRecords );
    long GetRecordCount ( );
    void PutRefSource (
        IDispatch * pvSource );
    void PutSource (
        _bstr_t pvSource );
    _variant_t GetSource ( );
    HRESULT AddNew (
        const _variant_t & FieldList = vtMissing,
        const _variant_t & Values = vtMissing );
    HRESULT CancelUpdate ( );
    HRESULT Close ( );
    HRESULT Delete (
        enum AffectEnum AffectRecords );
    _variant_t GetRows (
        long Rows,
        const _variant_t & Start = vtMissing,
        const _variant_t & Fields = vtMissing );
    HRESULT Move (
        long NumRecords,
        const _variant_t & Start = vtMissing );
    HRESULT MoveNext ( );
    HRESULT MovePrevious ( );
    HRESULT MoveFirst ( );
    HRESULT MoveLast ( );
    HRESULT Open (
        const _variant_t & Source,
        const _variant_t & ActiveConnection,
        enum CursorTypeEnum CursorType,
        enum LockTypeEnum LockType,
        long Options );
    HRESULT Requery (
        long Options );
    HRESULT _xResync (
        enum AffectEnum AffectRecords );
    HRESULT Update (
        const _variant_t & Fields = vtMissing,
        const _variant_t & Values = vtMissing );
    enum PositionEnum GetAbsolutePage ( );
    void PutAbsolutePage (
        enum PositionEnum pl );
    enum EditModeEnum GetEditMode ( );
    _variant_t GetFilter ( );
    void PutFilter (
        const _variant_t & Criteria );
    long GetPageCount ( );
    long GetPageSize ( );
    void PutPageSize (
        long pl );
    _bstr_t GetSort ( );
    void PutSort (
        _bstr_t Criteria );
    long GetStatus ( );
    long GetState ( );
    _RecordsetPtr _xClone ( );
    HRESULT UpdateBatch (
        enum AffectEnum AffectRecords );
    HRESULT CancelBatch (
        enum AffectEnum AffectRecords );
    enum CursorLocationEnum GetCursorLocation ( );
    void PutCursorLocation (
        enum CursorLocationEnum plCursorLoc );
    _RecordsetPtr NextRecordset (
        VARIANT * RecordsAffected );
    VARIANT_BOOL Supports (
        enum CursorOptionEnum CursorOptions );
    _variant_t GetCollect (
        const _variant_t & Index );
    void PutCollect (
        const _variant_t & Index,
        const _variant_t & pvar );
    enum MarshalOptionsEnum GetMarshalOptions ( );
    void PutMarshalOptions (
        enum MarshalOptionsEnum peMarshal );
    HRESULT Find (
        _bstr_t Criteria,
        long SkipRecords,
        enum SearchDirectionEnum SearchDirection,
        const _variant_t & Start = vtMissing );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_AbsolutePosition (
        enum PositionEnum * pl ) = 0;
    virtual HRESULT __stdcall put_AbsolutePosition (
        enum PositionEnum pl ) = 0;
    virtual HRESULT __stdcall putref_ActiveConnection (
        IDispatch * pvar ) = 0;
    virtual HRESULT __stdcall put_ActiveConnection (
        VARIANT pvar ) = 0;
    virtual HRESULT __stdcall get_ActiveConnection (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall get_BOF (
        VARIANT_BOOL * pb ) = 0;
    virtual HRESULT __stdcall get_Bookmark (
        VARIANT * pvBookmark ) = 0;
    virtual HRESULT __stdcall put_Bookmark (
        VARIANT pvBookmark ) = 0;
    virtual HRESULT __stdcall get_CacheSize (
        long * pl ) = 0;
    virtual HRESULT __stdcall put_CacheSize (
        long pl ) = 0;
    virtual HRESULT __stdcall get_CursorType (
        enum CursorTypeEnum * plCursorType ) = 0;
    virtual HRESULT __stdcall put_CursorType (
        enum CursorTypeEnum plCursorType ) = 0;
    virtual HRESULT __stdcall get_ADOEOF (
        VARIANT_BOOL * pb ) = 0;
    virtual HRESULT __stdcall get_Fields (
        struct Fields * * ppvObject ) = 0;
    virtual HRESULT __stdcall get_LockType (
        enum LockTypeEnum * plLockType ) = 0;
    virtual HRESULT __stdcall put_LockType (
        enum LockTypeEnum plLockType ) = 0;
    virtual HRESULT __stdcall get_MaxRecords (
        long * plMaxRecords ) = 0;
    virtual HRESULT __stdcall put_MaxRecords (
        long plMaxRecords ) = 0;
    virtual HRESULT __stdcall get_RecordCount (
        long * pl ) = 0;
    virtual HRESULT __stdcall putref_Source (
        IDispatch * pvSource ) = 0;
    virtual HRESULT __stdcall put_Source (
        BSTR pvSource ) = 0;
    virtual HRESULT __stdcall get_Source (
        VARIANT * pvSource ) = 0;
    virtual HRESULT __stdcall raw_AddNew (
        VARIANT FieldList = vtMissing,
        VARIANT Values = vtMissing ) = 0;
    virtual HRESULT __stdcall raw_CancelUpdate ( ) = 0;
    virtual HRESULT __stdcall raw_Close ( ) = 0;
    virtual HRESULT __stdcall raw_Delete (
        enum AffectEnum AffectRecords ) = 0;
    virtual HRESULT __stdcall raw_GetRows (
        long Rows,
        VARIANT Start,
        VARIANT Fields,
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall raw_Move (
        long NumRecords,
        VARIANT Start = vtMissing ) = 0;
    virtual HRESULT __stdcall raw_MoveNext ( ) = 0;
    virtual HRESULT __stdcall raw_MovePrevious ( ) = 0;
    virtual HRESULT __stdcall raw_MoveFirst ( ) = 0;
    virtual HRESULT __stdcall raw_MoveLast ( ) = 0;
    virtual HRESULT __stdcall raw_Open (
        VARIANT Source,
        VARIANT ActiveConnection,
        enum CursorTypeEnum CursorType,
        enum LockTypeEnum LockType,
        long Options ) = 0;
    virtual HRESULT __stdcall raw_Requery (
        long Options ) = 0;
    virtual HRESULT __stdcall raw__xResync (
        enum AffectEnum AffectRecords ) = 0;
    virtual HRESULT __stdcall raw_Update (
        VARIANT Fields = vtMissing,
        VARIANT Values = vtMissing ) = 0;
    virtual HRESULT __stdcall get_AbsolutePage (
        enum PositionEnum * pl ) = 0;
    virtual HRESULT __stdcall put_AbsolutePage (
        enum PositionEnum pl ) = 0;
    virtual HRESULT __stdcall get_EditMode (
        enum EditModeEnum * pl ) = 0;
    virtual HRESULT __stdcall get_Filter (
        VARIANT * Criteria ) = 0;
    virtual HRESULT __stdcall put_Filter (
        VARIANT Criteria ) = 0;
    virtual HRESULT __stdcall get_PageCount (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_PageSize (
        long * pl ) = 0;
    virtual HRESULT __stdcall put_PageSize (
        long pl ) = 0;
    virtual HRESULT __stdcall get_Sort (
        BSTR * Criteria ) = 0;
    virtual HRESULT __stdcall put_Sort (
        BSTR Criteria ) = 0;
    virtual HRESULT __stdcall get_Status (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_State (
        long * plObjState ) = 0;
    virtual HRESULT __stdcall raw__xClone (
        struct _Recordset * * ppvObject ) = 0;
    virtual HRESULT __stdcall raw_UpdateBatch (
        enum AffectEnum AffectRecords ) = 0;
    virtual HRESULT __stdcall raw_CancelBatch (
        enum AffectEnum AffectRecords ) = 0;
    virtual HRESULT __stdcall get_CursorLocation (
        enum CursorLocationEnum * plCursorLoc ) = 0;
    virtual HRESULT __stdcall put_CursorLocation (
        enum CursorLocationEnum plCursorLoc ) = 0;
    virtual HRESULT __stdcall raw_NextRecordset (
        VARIANT * RecordsAffected,
        struct _Recordset * * ppiRs ) = 0;
    virtual HRESULT __stdcall raw_Supports (
        enum CursorOptionEnum CursorOptions,
        VARIANT_BOOL * pb ) = 0;
    virtual HRESULT __stdcall get_Collect (
        VARIANT Index,
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall put_Collect (
        VARIANT Index,
        VARIANT pvar ) = 0;
    virtual HRESULT __stdcall get_MarshalOptions (
        enum MarshalOptionsEnum * peMarshal ) = 0;
    virtual HRESULT __stdcall put_MarshalOptions (
        enum MarshalOptionsEnum peMarshal ) = 0;
    virtual HRESULT __stdcall raw_Find (
        BSTR Criteria,
        long SkipRecords,
        enum SearchDirectionEnum SearchDirection,
        VARIANT Start = vtMissing ) = 0;
};

struct __declspec(uuid("0000054f-0000-0010-8000-00aa006d2ea4"))
_Recordset : _Recordset15
{
    //
    // Property data
    //

    __declspec(property(get=GetDataSource,put=PutRefDataSource))
    IUnknownPtr DataSource;
    __declspec(property(get=GetActiveCommand))
    IDispatchPtr ActiveCommand;
    __declspec(property(get=GetStayInSync,put=PutStayInSync))
    VARIANT_BOOL StayInSync;
    __declspec(property(get=GetDataMember,put=PutDataMember))
    _bstr_t DataMember;

    //
    // Wrapper methods for error-handling
    //

    HRESULT Cancel ( );
    IUnknownPtr GetDataSource ( );
    void PutRefDataSource (
        IUnknown * ppunkDataSource );
    HRESULT Save (
        _bstr_t FileName,
        enum PersistFormatEnum PersistFormat );
    IDispatchPtr GetActiveCommand ( );
    void PutStayInSync (
        VARIANT_BOOL pbStayInSync );
    VARIANT_BOOL GetStayInSync ( );
    _bstr_t GetString (
        enum StringFormatEnum StringFormat,
        long NumRows,
        _bstr_t ColumnDelimeter,
        _bstr_t RowDelimeter,
        _bstr_t NullExpr );
    _bstr_t GetDataMember ( );
    void PutDataMember (
        _bstr_t pbstrDataMember );
    enum CompareEnum CompareBookmarks (
        const _variant_t & Bookmark1,
        const _variant_t & Bookmark2 );
    _RecordsetPtr Clone (
        enum LockTypeEnum LockType );
    HRESULT Resync (
        enum AffectEnum AffectRecords,
        enum ResyncEnum ResyncValues );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_Cancel ( ) = 0;
    virtual HRESULT __stdcall get_DataSource (
        IUnknown * * ppunkDataSource ) = 0;
    virtual HRESULT __stdcall putref_DataSource (
        IUnknown * ppunkDataSource ) = 0;
    virtual HRESULT __stdcall raw_Save (
        BSTR FileName,
        enum PersistFormatEnum PersistFormat ) = 0;
    virtual HRESULT __stdcall get_ActiveCommand (
        IDispatch * * ppCmd ) = 0;
    virtual HRESULT __stdcall put_StayInSync (
        VARIANT_BOOL pbStayInSync ) = 0;
    virtual HRESULT __stdcall get_StayInSync (
        VARIANT_BOOL * pbStayInSync ) = 0;
    virtual HRESULT __stdcall raw_GetString (
        enum StringFormatEnum StringFormat,
        long NumRows,
        BSTR ColumnDelimeter,
        BSTR RowDelimeter,
        BSTR NullExpr,
        BSTR * pRetString ) = 0;
    virtual HRESULT __stdcall get_DataMember (
        BSTR * pbstrDataMember ) = 0;
    virtual HRESULT __stdcall put_DataMember (
        BSTR pbstrDataMember ) = 0;
    virtual HRESULT __stdcall raw_CompareBookmarks (
        VARIANT Bookmark1,
        VARIANT Bookmark2,
        enum CompareEnum * pCompare ) = 0;
    virtual HRESULT __stdcall raw_Clone (
        enum LockTypeEnum LockType,
        struct _Recordset * * ppvObject ) = 0;
    virtual HRESULT __stdcall raw_Resync (
        enum AffectEnum AffectRecords,
        enum ResyncEnum ResyncValues ) = 0;
};

struct __declspec(uuid("00000506-0000-0010-8000-00aa006d2ea4"))
Fields15 : _Collection
{
    //
    // Property data
    //

    __declspec(property(get=GetItem))
    FieldPtr Item[];

    //
    // Wrapper methods for error-handling
    //

    FieldPtr GetItem (
        const _variant_t & Index );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Item (
        VARIANT Index,
        struct Field * * ppvObject ) = 0;
};

struct __declspec(uuid("0000054d-0000-0010-8000-00aa006d2ea4"))
Fields : Fields15
{
    //
    // Wrapper methods for error-handling
    //

    HRESULT Append (
        _bstr_t Name,
        enum DataTypeEnum Type,
        long DefinedSize,
        enum FieldAttributeEnum Attrib );
    HRESULT Delete (
        const _variant_t & Index );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_Append (
        BSTR Name,
        enum DataTypeEnum Type,
        long DefinedSize,
        enum FieldAttributeEnum Attrib ) = 0;
    virtual HRESULT __stdcall raw_Delete (
        VARIANT Index ) = 0;
};

struct __declspec(uuid("0000054c-0000-0010-8000-00aa006d2ea4"))
Field : _ADO
{
    //
    // Property data
    //

    __declspec(property(get=GetValue,put=PutValue))
    _variant_t Value;
    __declspec(property(get=GetPrecision,put=PutPrecision))
    unsigned char Precision;
    __declspec(property(get=GetNumericScale,put=PutNumericScale))
    unsigned char NumericScale;
    __declspec(property(get=GetAttributes,put=PutAttributes))
    long Attributes;
    __declspec(property(get=GetName))
    _bstr_t Name;
    __declspec(property(get=GetType,put=PutType))
    enum DataTypeEnum Type;
    __declspec(property(get=GetDefinedSize,put=PutDefinedSize))
    long DefinedSize;
    __declspec(property(get=GetOriginalValue))
    _variant_t OriginalValue;
    __declspec(property(get=GetUnderlyingValue))
    _variant_t UnderlyingValue;
    __declspec(property(get=GetDataFormat,put=PutRefDataFormat))
    IUnknownPtr DataFormat;
    __declspec(property(get=GetActualSize))
    long ActualSize;

    //
    // Wrapper methods for error-handling
    //

    long GetActualSize ( );
    long GetAttributes ( );
    long GetDefinedSize ( );
    _bstr_t GetName ( );
    enum DataTypeEnum GetType ( );
    _variant_t GetValue ( );
    void PutValue (
        const _variant_t & pvar );
    unsigned char GetPrecision ( );
    unsigned char GetNumericScale ( );
    HRESULT AppendChunk (
        const _variant_t & Data );
    _variant_t GetChunk (
        long Length );
    _variant_t GetOriginalValue ( );
    _variant_t GetUnderlyingValue ( );
    IUnknownPtr GetDataFormat ( );
    void PutRefDataFormat (
        IUnknown * ppiDF );
    void PutPrecision (
        unsigned char pbPrecision );
    void PutNumericScale (
        unsigned char pbNumericScale );
    void PutType (
        enum DataTypeEnum pDataType );
    void PutDefinedSize (
        long pl );
    void PutAttributes (
        long pl );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_ActualSize (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_Attributes (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_DefinedSize (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_Name (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_Type (
        enum DataTypeEnum * pDataType ) = 0;
    virtual HRESULT __stdcall get_Value (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall put_Value (
        VARIANT pvar ) = 0;
    virtual HRESULT __stdcall get_Precision (
        unsigned char * pbPrecision ) = 0;
    virtual HRESULT __stdcall get_NumericScale (
        unsigned char * pbNumericScale ) = 0;
    virtual HRESULT __stdcall raw_AppendChunk (
        VARIANT Data ) = 0;
    virtual HRESULT __stdcall raw_GetChunk (
        long Length,
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall get_OriginalValue (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall get_UnderlyingValue (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall get_DataFormat (
        IUnknown * * ppiDF ) = 0;
    virtual HRESULT __stdcall putref_DataFormat (
        IUnknown * ppiDF ) = 0;
    virtual HRESULT __stdcall put_Precision (
        unsigned char pbPrecision ) = 0;
    virtual HRESULT __stdcall put_NumericScale (
        unsigned char pbNumericScale ) = 0;
    virtual HRESULT __stdcall put_Type (
        enum DataTypeEnum pDataType ) = 0;
    virtual HRESULT __stdcall put_DefinedSize (
        long pl ) = 0;
    virtual HRESULT __stdcall put_Attributes (
        long pl ) = 0;
};

struct __declspec(uuid("0000050c-0000-0010-8000-00aa006d2ea4"))
_Parameter : _ADO
{
    //
    // Property data
    //

    __declspec(property(get=GetName,put=PutName))
    _bstr_t Name;
    __declspec(property(get=GetValue,put=PutValue))
    _variant_t Value;
    __declspec(property(get=GetType,put=PutType))
    enum DataTypeEnum Type;
    __declspec(property(get=GetDirection,put=PutDirection))
    enum ParameterDirectionEnum Direction;
    __declspec(property(get=GetPrecision,put=PutPrecision))
    unsigned char Precision;
    __declspec(property(get=GetNumericScale,put=PutNumericScale))
    unsigned char NumericScale;
    __declspec(property(get=GetSize,put=PutSize))
    long Size;
    __declspec(property(get=GetAttributes,put=PutAttributes))
    long Attributes;

    //
    // Wrapper methods for error-handling
    //

    _bstr_t GetName ( );
    void PutName (
        _bstr_t pbstr );
    _variant_t GetValue ( );
    void PutValue (
        const _variant_t & pvar );
    enum DataTypeEnum GetType ( );
    void PutType (
        enum DataTypeEnum psDataType );
    void PutDirection (
        enum ParameterDirectionEnum plParmDirection );
    enum ParameterDirectionEnum GetDirection ( );
    void PutPrecision (
        unsigned char pbPrecision );
    unsigned char GetPrecision ( );
    void PutNumericScale (
        unsigned char pbScale );
    unsigned char GetNumericScale ( );
    void PutSize (
        long pl );
    long GetSize ( );
    HRESULT AppendChunk (
        const _variant_t & Val );
    long GetAttributes ( );
    void PutAttributes (
        long plParmAttribs );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Name (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall put_Name (
        BSTR pbstr ) = 0;
    virtual HRESULT __stdcall get_Value (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall put_Value (
        VARIANT pvar ) = 0;
    virtual HRESULT __stdcall get_Type (
        enum DataTypeEnum * psDataType ) = 0;
    virtual HRESULT __stdcall put_Type (
        enum DataTypeEnum psDataType ) = 0;
    virtual HRESULT __stdcall put_Direction (
        enum ParameterDirectionEnum plParmDirection ) = 0;
    virtual HRESULT __stdcall get_Direction (
        enum ParameterDirectionEnum * plParmDirection ) = 0;
    virtual HRESULT __stdcall put_Precision (
        unsigned char pbPrecision ) = 0;
    virtual HRESULT __stdcall get_Precision (
        unsigned char * pbPrecision ) = 0;
    virtual HRESULT __stdcall put_NumericScale (
        unsigned char pbScale ) = 0;
    virtual HRESULT __stdcall get_NumericScale (
        unsigned char * pbScale ) = 0;
    virtual HRESULT __stdcall put_Size (
        long pl ) = 0;
    virtual HRESULT __stdcall get_Size (
        long * pl ) = 0;
    virtual HRESULT __stdcall raw_AppendChunk (
        VARIANT Val ) = 0;
    virtual HRESULT __stdcall get_Attributes (
        long * plParmAttribs ) = 0;
    virtual HRESULT __stdcall put_Attributes (
        long plParmAttribs ) = 0;
};

struct __declspec(uuid("0000050d-0000-0010-8000-00aa006d2ea4"))
Parameters : _DynaCollection
{
    //
    // Property data
    //

    __declspec(property(get=GetItem))
    _ParameterPtr Item[];

    //
    // Wrapper methods for error-handling
    //

    _ParameterPtr GetItem (
        const _variant_t & Index );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Item (
        VARIANT Index,
        struct _Parameter * * ppvObject ) = 0;
};

struct __declspec(uuid("0000054e-0000-0010-8000-00aa006d2ea4"))
_Command : _Command15
{
    //
    // Property data
    //

    __declspec(property(get=GetState))
    long State;

    //
    // Wrapper methods for error-handling
    //

    long GetState ( );
    HRESULT Cancel ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_State (
        long * plObjState ) = 0;
    virtual HRESULT __stdcall raw_Cancel ( ) = 0;
};

struct __declspec(uuid("00000402-0000-0010-8000-00aa006d2ea4"))
ConnectionEventsVt : IUnknown
{
    //
    // Wrapper methods for error-handling
    //

    HRESULT InfoMessage (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT BeginTransComplete (
        long TransactionLevel,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT CommitTransComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT RollbackTransComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT WillExecute (
        BSTR * Source,
        enum CursorTypeEnum * CursorType,
        enum LockTypeEnum * LockType,
        long * Options,
        enum EventStatusEnum * adStatus,
        struct _Command * pCommand,
        struct _Recordset * pRecordset,
        struct _Connection * pConnection );
    HRESULT ExecuteComplete (
        long RecordsAffected,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Command * pCommand,
        struct _Recordset * pRecordset,
        struct _Connection * pConnection );
    HRESULT WillConnect (
        BSTR * ConnectionString,
        BSTR * UserID,
        BSTR * Password,
        long * Options,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT ConnectComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT Disconnect (
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_InfoMessage (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_BeginTransComplete (
        long TransactionLevel,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_CommitTransComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_RollbackTransComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_WillExecute (
        BSTR * Source,
        enum CursorTypeEnum * CursorType,
        enum LockTypeEnum * LockType,
        long * Options,
        enum EventStatusEnum * adStatus,
        struct _Command * pCommand,
        struct _Recordset * pRecordset,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_ExecuteComplete (
        long RecordsAffected,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Command * pCommand,
        struct _Recordset * pRecordset,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_WillConnect (
        BSTR * ConnectionString,
        BSTR * UserID,
        BSTR * Password,
        long * Options,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_ConnectComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
    virtual HRESULT __stdcall raw_Disconnect (
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection ) = 0;
};

struct __declspec(uuid("00000403-0000-0010-8000-00aa006d2ea4"))
RecordsetEventsVt : IUnknown
{
    //
    // Wrapper methods for error-handling
    //

    HRESULT WillChangeField (
        long cFields,
        const _variant_t & Fields,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT FieldChangeComplete (
        long cFields,
        const _variant_t & Fields,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT WillChangeRecord (
        enum EventReasonEnum adReason,
        long cRecords,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT RecordChangeComplete (
        enum EventReasonEnum adReason,
        long cRecords,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT WillChangeRecordset (
        enum EventReasonEnum adReason,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT RecordsetChangeComplete (
        enum EventReasonEnum adReason,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT WillMove (
        enum EventReasonEnum adReason,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT MoveComplete (
        enum EventReasonEnum adReason,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT EndOfRecordset (
        VARIANT_BOOL * fMoreData,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT FetchProgress (
        long Progress,
        long MaxProgress,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT FetchComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_WillChangeField (
        long cFields,
        VARIANT Fields,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_FieldChangeComplete (
        long cFields,
        VARIANT Fields,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_WillChangeRecord (
        enum EventReasonEnum adReason,
        long cRecords,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_RecordChangeComplete (
        enum EventReasonEnum adReason,
        long cRecords,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_WillChangeRecordset (
        enum EventReasonEnum adReason,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_RecordsetChangeComplete (
        enum EventReasonEnum adReason,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_WillMove (
        enum EventReasonEnum adReason,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_MoveComplete (
        enum EventReasonEnum adReason,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_EndOfRecordset (
        VARIANT_BOOL * fMoreData,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_FetchProgress (
        long Progress,
        long MaxProgress,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
    virtual HRESULT __stdcall raw_FetchComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset ) = 0;
};

struct __declspec(uuid("00000400-0000-0010-8000-00aa006d2ea4"))
ConnectionEvents : IDispatch
{
    //
    // Wrapper methods for error-handling
    //

    // Methods:
    HRESULT InfoMessage (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT BeginTransComplete (
        long TransactionLevel,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT CommitTransComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT RollbackTransComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT WillExecute (
        BSTR * Source,
        enum CursorTypeEnum * CursorType,
        enum LockTypeEnum * LockType,
        long * Options,
        enum EventStatusEnum * adStatus,
        struct _Command * pCommand,
        struct _Recordset * pRecordset,
        struct _Connection * pConnection );
    HRESULT ExecuteComplete (
        long RecordsAffected,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Command * pCommand,
        struct _Recordset * pRecordset,
        struct _Connection * pConnection );
    HRESULT WillConnect (
        BSTR * ConnectionString,
        BSTR * UserID,
        BSTR * Password,
        long * Options,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT ConnectComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
    HRESULT Disconnect (
        enum EventStatusEnum * adStatus,
        struct _Connection * pConnection );
};

struct __declspec(uuid("00000266-0000-0010-8000-00aa006d2ea4"))
RecordsetEvents : IDispatch
{
    //
    // Wrapper methods for error-handling
    //

    // Methods:
    HRESULT WillChangeField (
        long cFields,
        const _variant_t & Fields,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT FieldChangeComplete (
        long cFields,
        const _variant_t & Fields,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT WillChangeRecord (
        enum EventReasonEnum adReason,
        long cRecords,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT RecordChangeComplete (
        enum EventReasonEnum adReason,
        long cRecords,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT WillChangeRecordset (
        enum EventReasonEnum adReason,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT RecordsetChangeComplete (
        enum EventReasonEnum adReason,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT WillMove (
        enum EventReasonEnum adReason,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT MoveComplete (
        enum EventReasonEnum adReason,
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT EndOfRecordset (
        VARIANT_BOOL * fMoreData,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT FetchProgress (
        long Progress,
        long MaxProgress,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
    HRESULT FetchComplete (
        struct Error * pError,
        enum EventStatusEnum * adStatus,
        struct _Recordset * pRecordset );
};

struct __declspec(uuid("00000516-0000-0010-8000-00aa006d2ea4"))
ADOConnectionConstruction15 : IUnknown
{
    //
    // Property data
    //

    __declspec(property(get=GetDSO))
    IUnknownPtr DSO;
    __declspec(property(get=GetSession))
    IUnknownPtr Session;

    //
    // Wrapper methods for error-handling
    //

    IUnknownPtr GetDSO ( );
    IUnknownPtr GetSession ( );
    HRESULT WrapDSOandSession (
        IUnknown * pDSO,
        IUnknown * pSession );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_DSO (
        IUnknown * * ppDSO ) = 0;
    virtual HRESULT __stdcall get_Session (
        IUnknown * * ppSession ) = 0;
    virtual HRESULT __stdcall raw_WrapDSOandSession (
        IUnknown * pDSO,
        IUnknown * pSession ) = 0;
};

struct __declspec(uuid("00000551-0000-0010-8000-00aa006d2ea4"))
ADOConnectionConstruction : ADOConnectionConstruction15
{};

struct __declspec(uuid("00000514-0000-0010-8000-00aa006d2ea4"))
Connection;
    // [ default ] interface _Connection
    // [ default, source ] dispinterface ConnectionEvents

struct __declspec(uuid("00000517-0000-0010-8000-00aa006d2ea4"))
ADOCommandConstruction : IUnknown
{
    //
    // Property data
    //

    __declspec(property(get=GetOLEDBCommand,put=PutOLEDBCommand))
    IUnknownPtr OLEDBCommand;

    //
    // Wrapper methods for error-handling
    //

    IUnknownPtr GetOLEDBCommand ( );
    void PutOLEDBCommand (
        IUnknown * ppOLEDBCommand );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_OLEDBCommand (
        IUnknown * * ppOLEDBCommand ) = 0;
    virtual HRESULT __stdcall put_OLEDBCommand (
        IUnknown * ppOLEDBCommand ) = 0;
};

struct __declspec(uuid("00000507-0000-0010-8000-00aa006d2ea4"))
Command;
    // [ default ] interface _Command

struct __declspec(uuid("00000535-0000-0010-8000-00aa006d2ea4"))
Recordset;
    // [ default ] interface _Recordset
    // [ default, source ] dispinterface RecordsetEvents

struct __declspec(uuid("00000283-0000-0010-8000-00aa006d2ea4"))
ADORecordsetConstruction : IDispatch
{
    //
    // Property data
    //

    __declspec(property(get=GetRowset,put=PutRowset))
    IUnknownPtr Rowset;
    __declspec(property(get=GetChapter,put=PutChapter))
    long Chapter;
    __declspec(property(get=GetRowPosition,put=PutRowPosition))
    IUnknownPtr RowPosition;

    //
    // Wrapper methods for error-handling
    //

    IUnknownPtr GetRowset ( );
    void PutRowset (
        IUnknown * ppRowset );
    long GetChapter ( );
    void PutChapter (
        long plChapter );
    IUnknownPtr GetRowPosition ( );
    void PutRowPosition (
        IUnknown * ppRowPos );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_Rowset (
        IUnknown * * ppRowset ) = 0;
    virtual HRESULT __stdcall put_Rowset (
        IUnknown * ppRowset ) = 0;
    virtual HRESULT __stdcall get_Chapter (
        long * plChapter ) = 0;
    virtual HRESULT __stdcall put_Chapter (
        long plChapter ) = 0;
    virtual HRESULT __stdcall get_RowPosition (
        IUnknown * * ppRowPos ) = 0;
    virtual HRESULT __stdcall put_RowPosition (
        IUnknown * ppRowPos ) = 0;
};

struct __declspec(uuid("00000505-0000-0010-8000-00aa006d2ea4"))
Field15 : _ADO
{
    //
    // Property data
    //

    __declspec(property(get=GetValue,put=PutValue))
    _variant_t Value;
    __declspec(property(get=GetPrecision))
    unsigned char Precision;
    __declspec(property(get=GetNumericScale))
    unsigned char NumericScale;
    __declspec(property(get=GetAttributes))
    long Attributes;
    __declspec(property(get=GetName))
    _bstr_t Name;
    __declspec(property(get=GetType))
    enum DataTypeEnum Type;
    __declspec(property(get=GetDefinedSize))
    long DefinedSize;
    __declspec(property(get=GetOriginalValue))
    _variant_t OriginalValue;
    __declspec(property(get=GetUnderlyingValue))
    _variant_t UnderlyingValue;
    __declspec(property(get=GetActualSize))
    long ActualSize;

    //
    // Wrapper methods for error-handling
    //

    long GetActualSize ( );
    long GetAttributes ( );
    long GetDefinedSize ( );
    _bstr_t GetName ( );
    enum DataTypeEnum GetType ( );
    _variant_t GetValue ( );
    void PutValue (
        const _variant_t & pvar );
    unsigned char GetPrecision ( );
    unsigned char GetNumericScale ( );
    HRESULT AppendChunk (
        const _variant_t & Data );
    _variant_t GetChunk (
        long Length );
    _variant_t GetOriginalValue ( );
    _variant_t GetUnderlyingValue ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall get_ActualSize (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_Attributes (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_DefinedSize (
        long * pl ) = 0;
    virtual HRESULT __stdcall get_Name (
        BSTR * pbstr ) = 0;
    virtual HRESULT __stdcall get_Type (
        enum DataTypeEnum * pDataType ) = 0;
    virtual HRESULT __stdcall get_Value (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall put_Value (
        VARIANT pvar ) = 0;
    virtual HRESULT __stdcall get_Precision (
        unsigned char * pbPrecision ) = 0;
    virtual HRESULT __stdcall get_NumericScale (
        unsigned char * pbNumericScale ) = 0;
    virtual HRESULT __stdcall raw_AppendChunk (
        VARIANT Data ) = 0;
    virtual HRESULT __stdcall raw_GetChunk (
        long Length,
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall get_OriginalValue (
        VARIANT * pvar ) = 0;
    virtual HRESULT __stdcall get_UnderlyingValue (
        VARIANT * pvar ) = 0;
};

struct __declspec(uuid("0000050b-0000-0010-8000-00aa006d2ea4"))
Parameter;
    // [ default ] interface _Parameter

//
// Wrapper method implementations
//

#include "msado20.tli"

#pragma pack(pop)
