// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// C++ TLBWRTR : 1.28
// File generated on 2/14/2006 12:34:41 PM from Type Library described below.

// ************************************************************************  //
// Type Lib: C:\Program Files\Common Files\system\ado\msado21.tlb (1)
// LIBID: {00000201-0000-0010-8000-00AA006D2EA4}
// LCID: 0
// Helpfile: C:\WINDOWS\HELP\ado210.chm
// HelpString: Microsoft ActiveX Data Objects 2.1 Library
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINDOWS\System32\stdole2.tlb)
// Parent TypeLibrary:
//   (0) v9.0 Access, (c:\Program Files\Microsoft OfficeXP\Office10\MSACC.olb)
// ************************************************************************ //
#ifndef   ADODB_XPH
#define   ADODB_XPH

#pragma option push -b -w-inl

#if !defined(__UTILCLS_H)
#include <utilcls.h>
#endif
#if !defined(__UTILCLS_H_VERSION) || (__UTILCLS_H_VERSION < 0x0700)
//
// The code generated by the TLIBIMP utility or the Import|TypeLibrary 
// and Import|ActiveX feature of C++Builder rely on specific versions of
// the header file UTILCLS.H found in the INCLUDE\VCL directory. If an 
// older version of the file is detected, you probably need an update/patch.
//
#error "This file requires a newer version of the header UTILCLS.H" \
       "You need to apply an update/patch to your copy of C++Builder"
#endif
#include <olectl.h>
#include <ocidl.h>
#if defined(USING_ATLVCL) || defined(USING_ATL)
#if !defined(__TLB_NO_EVENT_WRAPPERS)
#include <atl/atlmod.h>
#endif
#endif


// *********************************************************************//
// Forward reference of some VCL types (to avoid including STDVCL.HPP)    
// *********************************************************************//
namespace Stdvcl {class IStrings; class IStringsDisp;}
using namespace Stdvcl;
typedef TComInterface<IStrings> IStringsPtr;
typedef TComInterface<IStringsDisp> IStringsDispPtr;

namespace Adodb_xp
{

// *********************************************************************//
// HelpString: Microsoft ActiveX Data Objects 2.1 Library
// Version:    2.1
// *********************************************************************//


// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLSID_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
extern __declspec (package) const GUID LIBID_ADODB;
extern __declspec (package) const GUID GUID_CursorTypeEnum;
extern __declspec (package) const GUID GUID_CursorOptionEnum;
extern __declspec (package) const GUID GUID_LockTypeEnum;
extern __declspec (package) const GUID GUID_ExecuteOptionEnum;
extern __declspec (package) const GUID GUID_ConnectOptionEnum;
extern __declspec (package) const GUID GUID_ObjectStateEnum;
extern __declspec (package) const GUID GUID_CursorLocationEnum;
extern __declspec (package) const GUID GUID_DataTypeEnum;
extern __declspec (package) const GUID GUID_FieldAttributeEnum;
extern __declspec (package) const GUID GUID_EditModeEnum;
extern __declspec (package) const GUID GUID_RecordStatusEnum;
extern __declspec (package) const GUID GUID_GetRowsOptionEnum;
extern __declspec (package) const GUID GUID_PositionEnum;
extern __declspec (package) const GUID GUID_BookmarkEnum;
extern __declspec (package) const GUID GUID_MarshalOptionsEnum;
extern __declspec (package) const GUID GUID_AffectEnum;
extern __declspec (package) const GUID GUID_ResyncEnum;
extern __declspec (package) const GUID GUID_CompareEnum;
extern __declspec (package) const GUID GUID_FilterGroupEnum;
extern __declspec (package) const GUID GUID_SearchDirectionEnum;
extern __declspec (package) const GUID GUID_SearchDirection;
extern __declspec (package) const GUID GUID_PersistFormatEnum;
extern __declspec (package) const GUID GUID_StringFormatEnum;
extern __declspec (package) const GUID GUID_ConnectPromptEnum;
extern __declspec (package) const GUID GUID_ConnectModeEnum;
extern __declspec (package) const GUID GUID_IsolationLevelEnum;
extern __declspec (package) const GUID GUID_XactAttributeEnum;
extern __declspec (package) const GUID GUID_PropertyAttributesEnum;
extern __declspec (package) const GUID GUID_ErrorValueEnum;
extern __declspec (package) const GUID GUID_ParameterAttributesEnum;
extern __declspec (package) const GUID GUID_ParameterDirectionEnum;
extern __declspec (package) const GUID GUID_CommandTypeEnum;
extern __declspec (package) const GUID GUID_EventStatusEnum;
extern __declspec (package) const GUID GUID_EventReasonEnum;
extern __declspec (package) const GUID GUID_SchemaEnum;
extern __declspec (package) const GUID GUID_SeekEnum;
extern __declspec (package) const GUID GUID_ADCPROP_UPDATECRITERIA_ENUM;
extern __declspec (package) const GUID GUID_ADCPROP_ASYNCTHREADPRIORITY_ENUM;
extern __declspec (package) const GUID GUID_CEResyncEnum;
extern __declspec (package) const GUID GUID_ADCPROP_AUTORECALC_ENUM;
extern __declspec (package) const GUID IID__Collection;
extern __declspec (package) const GUID IID__DynaCollection;
extern __declspec (package) const GUID IID__ADO;
extern __declspec (package) const GUID IID_Properties;
extern __declspec (package) const GUID IID_Property;
extern __declspec (package) const GUID IID_Error;
extern __declspec (package) const GUID IID_Errors;
extern __declspec (package) const GUID IID_Command15;
extern __declspec (package) const GUID IID_Connection15;
extern __declspec (package) const GUID IID__Connection;
extern __declspec (package) const GUID IID_Recordset15;
extern __declspec (package) const GUID IID_Recordset20;
extern __declspec (package) const GUID IID__Recordset;
extern __declspec (package) const GUID IID_Fields15;
extern __declspec (package) const GUID IID_Fields;
extern __declspec (package) const GUID IID_Field;
extern __declspec (package) const GUID IID__Parameter;
extern __declspec (package) const GUID IID_Parameters;
extern __declspec (package) const GUID IID__Command;
extern __declspec (package) const GUID IID_ConnectionEventsVt;
extern __declspec (package) const GUID IID_RecordsetEventsVt;
extern __declspec (package) const GUID DIID_ConnectionEvents;
extern __declspec (package) const GUID DIID_RecordsetEvents;
extern __declspec (package) const GUID IID_ADOConnectionConstruction15;
extern __declspec (package) const GUID IID_ADOConnectionConstruction;
extern __declspec (package) const GUID CLSID_Connection;
extern __declspec (package) const GUID IID_ADOCommandConstruction;
extern __declspec (package) const GUID CLSID_Command;
extern __declspec (package) const GUID CLSID_Recordset;
extern __declspec (package) const GUID IID_ADORecordsetConstruction;
extern __declspec (package) const GUID IID_Field15;
extern __declspec (package) const GUID CLSID_Parameter;

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
enum      CursorTypeEnum;
enum      CursorOptionEnum;
enum      LockTypeEnum;
enum      ExecuteOptionEnum;
enum      ConnectOptionEnum;
enum      ObjectStateEnum;
enum      CursorLocationEnum;
enum      DataTypeEnum;
enum      FieldAttributeEnum;
enum      EditModeEnum;
enum      RecordStatusEnum;
enum      GetRowsOptionEnum;
enum      PositionEnum;
enum      BookmarkEnum;
enum      MarshalOptionsEnum;
enum      AffectEnum;
enum      ResyncEnum;
enum      CompareEnum;
enum      FilterGroupEnum;
enum      SearchDirectionEnum;
enum      PersistFormatEnum;
enum      StringFormatEnum;
enum      ConnectPromptEnum;
enum      ConnectModeEnum;
enum      IsolationLevelEnum;
enum      XactAttributeEnum;
enum      PropertyAttributesEnum;
enum      ErrorValueEnum;
enum      ParameterAttributesEnum;
enum      ParameterDirectionEnum;
enum      CommandTypeEnum;
enum      EventStatusEnum;
enum      EventReasonEnum;
enum      SchemaEnum;
enum      SeekEnum;
enum      ADCPROP_UPDATECRITERIA_ENUM;
enum      ADCPROP_ASYNCTHREADPRIORITY_ENUM;
enum      CEResyncEnum;
enum      ADCPROP_AUTORECALC_ENUM;
interface DECLSPEC_UUID("{00000512-0000-0010-8000-00AA006D2EA4}") _Collection;
typedef TComInterface<_Collection, &IID__Collection> _CollectionPtr;

interface DECLSPEC_UUID("{00000513-0000-0010-8000-00AA006D2EA4}") _DynaCollection;
typedef TComInterface<_DynaCollection, &IID__DynaCollection> _DynaCollectionPtr;

interface DECLSPEC_UUID("{00000534-0000-0010-8000-00AA006D2EA4}") _ADO;
typedef TComInterface<_ADO, &IID__ADO> _ADOPtr;

interface DECLSPEC_UUID("{00000504-0000-0010-8000-00AA006D2EA4}") Properties;
typedef TComInterface<Properties, &IID_Properties> PropertiesPtr;

interface DECLSPEC_UUID("{00000503-0000-0010-8000-00AA006D2EA4}") Property;
typedef TComInterface<Property, &IID_Property> PropertyPtr;

interface DECLSPEC_UUID("{00000500-0000-0010-8000-00AA006D2EA4}") Error;
typedef TComInterface<Error, &IID_Error> ErrorPtr;

interface DECLSPEC_UUID("{00000501-0000-0010-8000-00AA006D2EA4}") Errors;
typedef TComInterface<Errors, &IID_Errors> ErrorsPtr;

interface DECLSPEC_UUID("{00000508-0000-0010-8000-00AA006D2EA4}") Command15;
typedef TComInterface<Command15, &IID_Command15> Command15Ptr;

interface DECLSPEC_UUID("{00000515-0000-0010-8000-00AA006D2EA4}") Connection15;
typedef TComInterface<Connection15, &IID_Connection15> Connection15Ptr;

interface DECLSPEC_UUID("{00000550-0000-0010-8000-00AA006D2EA4}") _Connection;
typedef TComInterface<_Connection, &IID__Connection> _ConnectionPtr;

interface DECLSPEC_UUID("{0000050E-0000-0010-8000-00AA006D2EA4}") Recordset15;
typedef TComInterface<Recordset15, &IID_Recordset15> Recordset15Ptr;

interface DECLSPEC_UUID("{0000054F-0000-0010-8000-00AA006D2EA4}") Recordset20;
typedef TComInterface<Recordset20, &IID_Recordset20> Recordset20Ptr;

interface DECLSPEC_UUID("{00000555-0000-0010-8000-00AA006D2EA4}") _Recordset;
typedef TComInterface<_Recordset, &IID__Recordset> _RecordsetPtr;

interface DECLSPEC_UUID("{00000506-0000-0010-8000-00AA006D2EA4}") Fields15;
typedef TComInterface<Fields15, &IID_Fields15> Fields15Ptr;

interface DECLSPEC_UUID("{0000054D-0000-0010-8000-00AA006D2EA4}") Fields;
typedef TComInterface<Fields, &IID_Fields> FieldsPtr;

interface DECLSPEC_UUID("{0000054C-0000-0010-8000-00AA006D2EA4}") Field;
typedef TComInterface<Field, &IID_Field> FieldPtr;

interface DECLSPEC_UUID("{0000050C-0000-0010-8000-00AA006D2EA4}") _Parameter;
typedef TComInterface<_Parameter, &IID__Parameter> _ParameterPtr;

interface DECLSPEC_UUID("{0000050D-0000-0010-8000-00AA006D2EA4}") Parameters;
typedef TComInterface<Parameters, &IID_Parameters> ParametersPtr;

interface DECLSPEC_UUID("{0000054E-0000-0010-8000-00AA006D2EA4}") _Command;
typedef TComInterface<_Command, &IID__Command> _CommandPtr;

interface DECLSPEC_UUID("{00000402-0000-0010-8000-00AA006D2EA4}") ConnectionEventsVt;
typedef TComInterface<ConnectionEventsVt, &IID_ConnectionEventsVt> ConnectionEventsVtPtr;

interface DECLSPEC_UUID("{00000403-0000-0010-8000-00AA006D2EA4}") RecordsetEventsVt;
typedef TComInterface<RecordsetEventsVt, &IID_RecordsetEventsVt> RecordsetEventsVtPtr;

interface DECLSPEC_UUID("{00000400-0000-0010-8000-00AA006D2EA4}") ConnectionEvents;
typedef TComInterface<ConnectionEvents, &DIID_ConnectionEvents> ConnectionEventsPtr;

interface DECLSPEC_UUID("{00000266-0000-0010-8000-00AA006D2EA4}") RecordsetEvents;
typedef TComInterface<RecordsetEvents, &DIID_RecordsetEvents> RecordsetEventsPtr;

interface DECLSPEC_UUID("{00000516-0000-0010-8000-00AA006D2EA4}") ADOConnectionConstruction15;
typedef TComInterface<ADOConnectionConstruction15, &IID_ADOConnectionConstruction15> ADOConnectionConstruction15Ptr;

interface DECLSPEC_UUID("{00000551-0000-0010-8000-00AA006D2EA4}") ADOConnectionConstruction;
typedef TComInterface<ADOConnectionConstruction, &IID_ADOConnectionConstruction> ADOConnectionConstructionPtr;

interface DECLSPEC_UUID("{00000517-0000-0010-8000-00AA006D2EA4}") ADOCommandConstruction;
typedef TComInterface<ADOCommandConstruction, &IID_ADOCommandConstruction> ADOCommandConstructionPtr;

interface DECLSPEC_UUID("{00000283-0000-0010-8000-00AA006D2EA4}") ADORecordsetConstruction;
typedef TComInterface<ADORecordsetConstruction, &IID_ADORecordsetConstruction> ADORecordsetConstructionPtr;

interface DECLSPEC_UUID("{00000505-0000-0010-8000-00AA006D2EA4}") Field15;
typedef TComInterface<Field15, &IID_Field15> Field15Ptr;


// *********************************************************************//
// Declaration of CoClasses defined in Type Library                       
// (NOTE: Here we map each CoClass to its Default Interface)              
//                                                                        
// The LIBID_OF_ macro(s) map a LIBID_OF_CoClassName to the GUID of this  
// TypeLibrary. It simplifies the updating of macros when CoClass name    
// change.                                                                
// *********************************************************************//
typedef _Connection Connection;
typedef _ConnectionPtr ConnectionPtr;
typedef _Command Command;
typedef _CommandPtr CommandPtr;
typedef _Recordset Recordset;
typedef _RecordsetPtr RecordsetPtr;
typedef _Parameter Parameter;
typedef _ParameterPtr ParameterPtr;

#define LIBID_OF_Connection (&LIBID_ADODB)
#define LIBID_OF_Command (&LIBID_ADODB)
#define LIBID_OF_Recordset (&LIBID_ADODB)
#define LIBID_OF_Parameter (&LIBID_ADODB)

// *********************************************************************//
// Declaration of Aliases defined in Type Library                         
// *********************************************************************//
typedef Adodb_xp::SearchDirectionEnum SearchDirection;

// *********************************************************************//
// Declaration of Enumerations defined in Type Library                    
// *********************************************************************//
typedef enum CursorTypeEnum
{
  adOpenUnspecified = 0xFFFFFFFF, 
  adOpenForwardOnly = 0, 
  adOpenKeyset = 1, 
  adOpenDynamic = 2, 
  adOpenStatic = 3
} CursorTypeEnum;

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

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

typedef enum ExecuteOptionEnum
{
  adOptionUnspecified = 0xFFFFFFFF, 
  adAsyncExecute = 16, 
  adAsyncFetch = 32, 
  adAsyncFetchNonBlocking = 64, 
  adExecuteNoRecords = 128
} ExecuteOptionEnum;

typedef enum ConnectOptionEnum
{
  adConnectUnspecified = 0xFFFFFFFF, 
  adAsyncConnect = 16
} ConnectOptionEnum;

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

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

typedef 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
} DataTypeEnum;

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

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

typedef 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
} RecordStatusEnum;

typedef enum GetRowsOptionEnum
{
  adGetRowsRest = 0xFFFFFFFF
} GetRowsOptionEnum;

typedef enum PositionEnum
{
  adPosUnknown = 0xFFFFFFFF, 
  adPosBOF = 0xFFFFFFFE, 
  adPosEOF = 0xFFFFFFFD
} PositionEnum;

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

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

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

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

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

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

typedef enum SearchDirectionEnum
{
  adSearchForward = 1, 
  adSearchBackward = 0xFFFFFFFF
} SearchDirectionEnum;

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

typedef enum StringFormatEnum
{
  adClipString = 2
} StringFormatEnum;

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

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

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

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

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

typedef 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
} ErrorValueEnum;

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

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

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

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

typedef 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
} EventReasonEnum;

typedef enum SchemaEnum
{
  adSchemaProviderSpecific = 0xFFFFFFFF, 
  adSchemaAsserts = 0, 
  adSchemaCatalogs = 1, 
  adSchemaCharacterSets = 2, 
  adSchemaCollations = 3, 
  adSchemaColumns = 4, 
  adSchemaCheckConstraints = 5, 
  adSchemaConstraintColumnUsage = 6, 
  adSchemaConstraintTableUsage = 7, 
  adSchemaKeyColumnUsage = 8, 
  adSchemaReferentialContraints = 9, 
  adSchemaReferentialConstraints = 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, 
  adSchemaTrustees = 39
} SchemaEnum;

typedef enum SeekEnum
{
  adSeekFirstEQ = 1, 
  adSeekLastEQ = 2, 
  adSeekAfterEQ = 4, 
  adSeekAfter = 8, 
  adSeekBeforeEQ = 16, 
  adSeekBefore = 32
} SeekEnum;

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

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

typedef enum CEResyncEnum
{
  adResyncNone = 0, 
  adResyncAutoIncrement = 1, 
  adResyncConflicts = 2, 
  adResyncUpdates = 4, 
  adResyncInserts = 8, 
  adResyncAll = 15
} CEResyncEnum;

typedef enum ADCPROP_AUTORECALC_ENUM
{
  adRecalcUpFront = 0, 
  adRecalcAlways = 1
} ADCPROP_AUTORECALC_ENUM;

// *********************************************************************//
// Interface: _Collection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000512-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Collection  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Count(long* c/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/) = 0; // [-4]
  virtual HRESULT STDMETHODCALLTYPE Refresh(void) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_Count(void)
  {
    long c;
    OLECHECK(this->get_Count((long*)&c));
    return c;
  }

  LPUNKNOWN __fastcall _NewEnum(void)
  {
    LPUNKNOWN ppvObject;
    OLECHECK(this->_NewEnum((LPUNKNOWN*)&ppvObject));
    return ppvObject;
  }


  __property   long            Count = {read = get_Count};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _DynaCollection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000513-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _DynaCollection  : public Adodb_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE Append(LPDISPATCH Object/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Delete(VARIANT Index/*[in]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _ADO
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000534-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _ADO  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/) = 0; // [500]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::PropertiesPtr __fastcall get_Properties(void)
  {
    Adodb_xp::PropertiesPtr ppvObject;
    OLECHECK(this->get_Properties(&ppvObject));
    return ppvObject;
  }


  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Properties
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000504-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Properties  : public Adodb_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Index/*[in]*/, 
                                             Adodb_xp::Property** ppvObject/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::Property* __fastcall get_Item(VARIANT Index/*[in]*/)
  {
    Adodb_xp::Property* ppvObject = 0;
    OLECHECK(this->get_Item(Index, (Adodb_xp::Property**)&ppvObject));
    return ppvObject;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Property
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000503-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Property  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Value(VARIANT* pval/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE set_Value(VARIANT pval/*[in]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Type(Adodb_xp::DataTypeEnum* ptype/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* plAttributes/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long plAttributes/*[in]*/) = 0; // [1610743812]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  VARIANT __fastcall get_Value(void)
  {
    VARIANT pval;
    OLECHECK(this->get_Value((VARIANT*)&pval));
    return pval;
  }

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstr));
    return pbstr;
  }

  Adodb_xp::DataTypeEnum __fastcall get_Type(void)
  {
    Adodb_xp::DataTypeEnum ptype;
    OLECHECK(this->get_Type((Adodb_xp::DataTypeEnum*)&ptype));
    return ptype;
  }

  long __fastcall get_Attributes(void)
  {
    long plAttributes;
    OLECHECK(this->get_Attributes((long*)&plAttributes));
    return plAttributes;
  }


  __property   BSTR            Name = {read = get_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Error
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000500-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Error  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Number(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Source(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Description(BSTR* pbstr/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_HelpFile(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_HelpContext(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_SQLState(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_NativeError(long* pl/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_Number(void)
  {
    long pl;
    OLECHECK(this->get_Number((long*)&pl));
    return pl;
  }

  BSTR __fastcall get_Source(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Source((BSTR*)&pbstr));
    return pbstr;
  }

  BSTR __fastcall get_Description(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Description((BSTR*)&pbstr));
    return pbstr;
  }

  BSTR __fastcall get_HelpFile(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_HelpFile((BSTR*)&pbstr));
    return pbstr;
  }

  long __fastcall get_HelpContext(void)
  {
    long pl;
    OLECHECK(this->get_HelpContext((long*)&pl));
    return pl;
  }

  BSTR __fastcall get_SQLState(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_SQLState((BSTR*)&pbstr));
    return pbstr;
  }

  long __fastcall get_NativeError(void)
  {
    long pl;
    OLECHECK(this->get_NativeError((long*)&pl));
    return pl;
  }


  __property   long            Number = {read = get_Number};
  __property   BSTR            Source = {read = get_Source};
  __property   BSTR            Description = {read = get_Description};
  __property   BSTR            HelpFile = {read = get_HelpFile};
  __property   long            HelpContext = {read = get_HelpContext};
  __property   BSTR            SQLState = {read = get_SQLState};
  __property   long            NativeError = {read = get_NativeError};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Errors
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000501-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Errors  : public Adodb_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Index/*[in]*/, 
                                             Adodb_xp::Error** ppvObject/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE Clear(void) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::Error* __fastcall get_Item(VARIANT Index/*[in]*/)
  {
    Adodb_xp::Error* ppvObject = 0;
    OLECHECK(this->get_Item(Index, (Adodb_xp::Error**)&ppvObject));
    return ppvObject;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Command15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000508-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Command15  : public Adodb_xp::_ADO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_ActiveConnection(Adodb_xp::_Connection** ppvObject/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _set_ActiveConnection(Adodb_xp::_Connection* ppvObject/*[in]*/) = 0; // [1610809344]
  virtual HRESULT STDMETHODCALLTYPE set_ActiveConnection(VARIANT ppvObject/*[in]*/) = 0; // [1610809344]
  virtual HRESULT STDMETHODCALLTYPE get_CommandText(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_CommandText(BSTR pbstr/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE get_CommandTimeout(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_CommandTimeout(long pl/*[in]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE get_Prepared(VARIANT_BOOL* pfPrepared/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Prepared(VARIANT_BOOL pfPrepared/*[in]*/) = 0; // [1610809351]
  virtual HRESULT STDMETHODCALLTYPE Execute(VARIANT* RecordsAffected/*[out,opt]*/, 
                                            VARIANT* Parameters/*[in,opt]*/, 
                                            long Options/*[in,def,opt]*/, 
                                            Adodb_xp::_Recordset** ppiRs/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                                    Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                                    Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                                    long Size/*[in,def,opt]*/, 
                                                    VARIANT Value/*[in,opt]*/, 
                                                    Adodb_xp::_Parameter** ppiprm/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Parameters(Adodb_xp::Parameters** ppvObject/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE set_CommandType(Adodb_xp::CommandTypeEnum plCmdType/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_CommandType(Adodb_xp::CommandTypeEnum* plCmdType/*[out,retval]*/) = 0; // [1610809356]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstrName/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Name(BSTR pbstrName/*[in]*/) = 0; // [1610809358]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::_ConnectionPtr __fastcall get_ActiveConnection(void)
  {
    Adodb_xp::_ConnectionPtr ppvObject;
    OLECHECK(this->get_ActiveConnection(&ppvObject));
    return ppvObject;
  }

  BSTR __fastcall get_CommandText(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_CommandText((BSTR*)&pbstr));
    return pbstr;
  }

  long __fastcall get_CommandTimeout(void)
  {
    long pl;
    OLECHECK(this->get_CommandTimeout((long*)&pl));
    return pl;
  }

  VARIANT_BOOL __fastcall get_Prepared(void)
  {
    VARIANT_BOOL pfPrepared;
    OLECHECK(this->get_Prepared((VARIANT_BOOL*)&pfPrepared));
    return pfPrepared;
  }

  Adodb_xp::_Recordset* __fastcall Execute(VARIANT* RecordsAffected/*[out,opt]*/, 
                                           VARIANT* Parameters/*[in,opt]*/, 
                                           long Options/*[in,def,opt]*/)
  {
    Adodb_xp::_Recordset* ppiRs = 0;
    OLECHECK(this->Execute(RecordsAffected, Parameters, Options, (Adodb_xp::_Recordset**)&ppiRs));
    return ppiRs;
  }

  Adodb_xp::_Parameter* __fastcall CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                                   Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                                   Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                                   long Size/*[in,def,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/= TNoParam())
  {
    Adodb_xp::_Parameter* ppiprm = 0;
    OLECHECK(this->CreateParameter(Name, Type, Direction, Size, Value, (Adodb_xp::_Parameter**)&ppiprm));
    return ppiprm;
  }

  Adodb_xp::ParametersPtr __fastcall get_Parameters(void)
  {
    Adodb_xp::ParametersPtr ppvObject;
    OLECHECK(this->get_Parameters(&ppvObject));
    return ppvObject;
  }

  Adodb_xp::CommandTypeEnum __fastcall get_CommandType(void)
  {
    Adodb_xp::CommandTypeEnum plCmdType;
    OLECHECK(this->get_CommandType((Adodb_xp::CommandTypeEnum*)&plCmdType));
    return plCmdType;
  }

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstrName = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstrName));
    return pbstrName;
  }


  __property   Adodb_xp::_ConnectionPtr ActiveConnection = {read = get_ActiveConnection};
  __property   BSTR            CommandText = {read = get_CommandText, write = set_CommandText};
  __property   long            CommandTimeout = {read = get_CommandTimeout, write = set_CommandTimeout};
  __property   VARIANT_BOOL    Prepared = {read = get_Prepared, write = set_Prepared};
  __property   Adodb_xp::ParametersPtr Parameters = {read = get_Parameters};
  __property   Adodb_xp::CommandTypeEnum CommandType = {read = get_CommandType, write = set_CommandType};
  __property   BSTR            Name = {read = get_Name, write = set_Name};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Connection15
// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
// GUID:      {00000515-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Connection15  : public Adodb_xp::_ADO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_ConnectionString(BSTR* pbstr/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE set_ConnectionString(BSTR pbstr/*[in]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_CommandTimeout(long* plTimeout/*[out,retval]*/) = 0; // [2]
  virtual HRESULT STDMETHODCALLTYPE set_CommandTimeout(long plTimeout/*[in]*/) = 0; // [2]
  virtual HRESULT STDMETHODCALLTYPE get_ConnectionTimeout(long* plTimeout/*[out,retval]*/) = 0; // [3]
  virtual HRESULT STDMETHODCALLTYPE set_ConnectionTimeout(long plTimeout/*[in]*/) = 0; // [3]
  virtual HRESULT STDMETHODCALLTYPE get_Version(BSTR* pbstr/*[out,retval]*/) = 0; // [4]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [5]
  virtual HRESULT STDMETHODCALLTYPE Execute(BSTR CommandText/*[in]*/, 
                                            VARIANT* RecordsAffected/*[out,opt]*/, 
                                            long Options/*[in,def,opt]*/, 
                                            Adodb_xp::_Recordset** ppiRset/*[out,retval]*/) = 0; // [6]
  virtual HRESULT STDMETHODCALLTYPE BeginTrans(long* TransactionLevel/*[out,retval]*/) = 0; // [7]
  virtual HRESULT STDMETHODCALLTYPE CommitTrans(void) = 0; // [8]
  virtual HRESULT STDMETHODCALLTYPE RollbackTrans(void) = 0; // [9]
  virtual HRESULT STDMETHODCALLTYPE Open(BSTR ConnectionString/*[in,def,opt]*/, 
                                         BSTR UserID/*[in,def,opt]*/, BSTR Password/*[in,def,opt]*/, 
                                         long Options/*[in,def,opt]*/) = 0; // [10]
  virtual HRESULT STDMETHODCALLTYPE get_Errors(Adodb_xp::Errors** ppvObject/*[out,retval]*/) = 0; // [11]
  virtual HRESULT STDMETHODCALLTYPE get_DefaultDatabase(BSTR* pbstr/*[out,retval]*/) = 0; // [12]
  virtual HRESULT STDMETHODCALLTYPE set_DefaultDatabase(BSTR pbstr/*[in]*/) = 0; // [12]
  virtual HRESULT STDMETHODCALLTYPE get_IsolationLevel(Adodb_xp::IsolationLevelEnum* Level/*[out,retval]*/) = 0; // [13]
  virtual HRESULT STDMETHODCALLTYPE set_IsolationLevel(Adodb_xp::IsolationLevelEnum Level/*[in]*/) = 0; // [13]
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* plAttr/*[out,retval]*/) = 0; // [14]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long plAttr/*[in]*/) = 0; // [14]
  virtual HRESULT STDMETHODCALLTYPE get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/) = 0; // [15]
  virtual HRESULT STDMETHODCALLTYPE set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/) = 0; // [15]
  virtual HRESULT STDMETHODCALLTYPE get_Mode(Adodb_xp::ConnectModeEnum* plMode/*[out,retval]*/) = 0; // [16]
  virtual HRESULT STDMETHODCALLTYPE set_Mode(Adodb_xp::ConnectModeEnum plMode/*[in]*/) = 0; // [16]
  virtual HRESULT STDMETHODCALLTYPE get_Provider(BSTR* pbstr/*[out,retval]*/) = 0; // [17]
  virtual HRESULT STDMETHODCALLTYPE set_Provider(BSTR pbstr/*[in]*/) = 0; // [17]
  virtual HRESULT STDMETHODCALLTYPE get_State(long* plObjState/*[out,retval]*/) = 0; // [18]
  virtual HRESULT STDMETHODCALLTYPE OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                               VARIANT Restrictions/*[in,opt]*/, 
                                               VARIANT SchemaID/*[in,opt]*/, 
                                               Adodb_xp::_Recordset** pprset/*[out,retval]*/) = 0; // [19]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  BSTR __fastcall get_ConnectionString(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_ConnectionString((BSTR*)&pbstr));
    return pbstr;
  }

  long __fastcall get_CommandTimeout(void)
  {
    long plTimeout;
    OLECHECK(this->get_CommandTimeout((long*)&plTimeout));
    return plTimeout;
  }

  long __fastcall get_ConnectionTimeout(void)
  {
    long plTimeout;
    OLECHECK(this->get_ConnectionTimeout((long*)&plTimeout));
    return plTimeout;
  }

  BSTR __fastcall get_Version(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Version((BSTR*)&pbstr));
    return pbstr;
  }

  Adodb_xp::_Recordset* __fastcall Execute(BSTR CommandText/*[in]*/, 
                                           VARIANT* RecordsAffected/*[out,opt]*/, 
                                           long Options/*[in,def,opt]*/)
  {
    Adodb_xp::_Recordset* ppiRset = 0;
    OLECHECK(this->Execute(CommandText, RecordsAffected, Options, (Adodb_xp::_Recordset**)&ppiRset));
    return ppiRset;
  }

  long __fastcall BeginTrans(void)
  {
    long TransactionLevel;
    OLECHECK(this->BeginTrans((long*)&TransactionLevel));
    return TransactionLevel;
  }

  Adodb_xp::ErrorsPtr __fastcall get_Errors(void)
  {
    Adodb_xp::ErrorsPtr ppvObject;
    OLECHECK(this->get_Errors(&ppvObject));
    return ppvObject;
  }

  BSTR __fastcall get_DefaultDatabase(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_DefaultDatabase((BSTR*)&pbstr));
    return pbstr;
  }

  Adodb_xp::IsolationLevelEnum __fastcall get_IsolationLevel(void)
  {
    Adodb_xp::IsolationLevelEnum Level;
    OLECHECK(this->get_IsolationLevel((Adodb_xp::IsolationLevelEnum*)&Level));
    return Level;
  }

  long __fastcall get_Attributes(void)
  {
    long plAttr;
    OLECHECK(this->get_Attributes((long*)&plAttr));
    return plAttr;
  }

  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void)
  {
    Adodb_xp::CursorLocationEnum plCursorLoc;
    OLECHECK(this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc));
    return plCursorLoc;
  }

  Adodb_xp::ConnectModeEnum __fastcall get_Mode(void)
  {
    Adodb_xp::ConnectModeEnum plMode;
    OLECHECK(this->get_Mode((Adodb_xp::ConnectModeEnum*)&plMode));
    return plMode;
  }

  BSTR __fastcall get_Provider(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Provider((BSTR*)&pbstr));
    return pbstr;
  }

  long __fastcall get_State(void)
  {
    long plObjState;
    OLECHECK(this->get_State((long*)&plObjState));
    return plObjState;
  }

  Adodb_xp::_Recordset* __fastcall OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                              VARIANT Restrictions/*[in,opt]*/= TNoParam(), 
                                              VARIANT SchemaID/*[in,opt]*/= TNoParam())
  {
    Adodb_xp::_Recordset* pprset = 0;
    OLECHECK(this->OpenSchema(Schema, Restrictions, SchemaID, (Adodb_xp::_Recordset**)&pprset));
    return pprset;
  }


  __property   BSTR            ConnectionString = {read = get_ConnectionString, write = set_ConnectionString};
  __property   long            CommandTimeout = {read = get_CommandTimeout, write = set_CommandTimeout};
  __property   long            ConnectionTimeout = {read = get_ConnectionTimeout, write = set_ConnectionTimeout};
  __property   BSTR            Version = {read = get_Version};
  __property   Adodb_xp::ErrorsPtr Errors = {read = get_Errors};
  __property   BSTR            DefaultDatabase = {read = get_DefaultDatabase, write = set_DefaultDatabase};
  __property   Adodb_xp::IsolationLevelEnum IsolationLevel = {read = get_IsolationLevel, write = set_IsolationLevel};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::ConnectModeEnum Mode = {read = get_Mode, write = set_Mode};
  __property   BSTR            Provider = {read = get_Provider, write = set_Provider};
  __property   long            State = {read = get_State};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Connection
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {00000550-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Connection  : public Adodb_xp::Connection15
{
public:
  virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0; // [21]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Recordset15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050E-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Recordset15  : public Adodb_xp::_ADO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/) = 0; // [1000]
  virtual HRESULT STDMETHODCALLTYPE set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/) = 0; // [1000]
  virtual HRESULT STDMETHODCALLTYPE _set_ActiveConnection(LPDISPATCH pvar/*[in]*/) = 0; // [1001]
  virtual HRESULT STDMETHODCALLTYPE set_ActiveConnection(VARIANT pvar/*[in]*/) = 0; // [1001]
  virtual HRESULT STDMETHODCALLTYPE get_ActiveConnection(VARIANT* pvar/*[out,retval]*/) = 0; // [1001]
  virtual HRESULT STDMETHODCALLTYPE get_BOF(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [1002]
  virtual HRESULT STDMETHODCALLTYPE get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/) = 0; // [1003]
  virtual HRESULT STDMETHODCALLTYPE set_Bookmark(VARIANT pvBookmark/*[in]*/) = 0; // [1003]
  virtual HRESULT STDMETHODCALLTYPE get_CacheSize(long* pl/*[out,retval]*/) = 0; // [1004]
  virtual HRESULT STDMETHODCALLTYPE set_CacheSize(long pl/*[in]*/) = 0; // [1004]
  virtual HRESULT STDMETHODCALLTYPE get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/) = 0; // [1005]
  virtual HRESULT STDMETHODCALLTYPE set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/) = 0; // [1005]
  virtual HRESULT STDMETHODCALLTYPE get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [1006]
  virtual HRESULT STDMETHODCALLTYPE get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/) = 0; // [1008]
  virtual HRESULT STDMETHODCALLTYPE set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/) = 0; // [1008]
  virtual HRESULT STDMETHODCALLTYPE get_MaxRecords(long* plMaxRecords/*[out,retval]*/) = 0; // [1009]
  virtual HRESULT STDMETHODCALLTYPE set_MaxRecords(long plMaxRecords/*[in]*/) = 0; // [1009]
  virtual HRESULT STDMETHODCALLTYPE get_RecordCount(long* pl/*[out,retval]*/) = 0; // [1010]
  virtual HRESULT STDMETHODCALLTYPE _set_Source(LPDISPATCH pvSource/*[in]*/) = 0; // [1011]
  virtual HRESULT STDMETHODCALLTYPE set_Source(BSTR pvSource/*[in]*/) = 0; // [1011]
  virtual HRESULT STDMETHODCALLTYPE get_Source(VARIANT* pvSource/*[out,retval]*/) = 0; // [1011]
  virtual HRESULT STDMETHODCALLTYPE AddNew(VARIANT FieldList/*[in,opt]*/= TNoParam(), 
                                           VARIANT Values/*[in,opt]*/= TNoParam()) = 0; // [1012]
  virtual HRESULT STDMETHODCALLTYPE CancelUpdate(void) = 0; // [1013]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [1014]
  virtual HRESULT STDMETHODCALLTYPE Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/) = 0; // [1015]
  virtual HRESULT STDMETHODCALLTYPE GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                                            VARIANT Fields/*[in,opt]*/, 
                                            VARIANT* pvar/*[out,retval]*/) = 0; // [1016]
  virtual HRESULT STDMETHODCALLTYPE Move(long NumRecords/*[in]*/, 
                                         VARIANT Start/*[in,opt]*/= TNoParam()) = 0; // [1017]
  virtual HRESULT STDMETHODCALLTYPE MoveNext(void) = 0; // [1018]
  virtual HRESULT STDMETHODCALLTYPE MovePrevious(void) = 0; // [1019]
  virtual HRESULT STDMETHODCALLTYPE MoveFirst(void) = 0; // [1020]
  virtual HRESULT STDMETHODCALLTYPE MoveLast(void) = 0; // [1021]
  virtual HRESULT STDMETHODCALLTYPE Open(VARIANT Source/*[in,opt]*/, 
                                         VARIANT ActiveConnection/*[in,opt]*/, 
                                         Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                                         Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                         long Options/*[in,def,opt]*/) = 0; // [1022]
  virtual HRESULT STDMETHODCALLTYPE Requery(long Options/*[in,def,opt]*/) = 0; // [1023]
  virtual HRESULT STDMETHODCALLTYPE _xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _Update(VARIANT Fields/*[in,opt]*/= TNoParam(), 
                                            VARIANT Values/*[in,opt]*/= TNoParam()) = 0; // [1025]
  virtual HRESULT STDMETHODCALLTYPE get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/) = 0; // [1047]
  virtual HRESULT STDMETHODCALLTYPE set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/) = 0; // [1047]
  virtual HRESULT STDMETHODCALLTYPE get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/) = 0; // [1026]
  virtual HRESULT STDMETHODCALLTYPE get_Filter(VARIANT* Criteria/*[out,retval]*/) = 0; // [1030]
  virtual HRESULT STDMETHODCALLTYPE set_Filter(VARIANT Criteria/*[in]*/) = 0; // [1030]
  virtual HRESULT STDMETHODCALLTYPE get_PageCount(long* pl/*[out,retval]*/) = 0; // [1050]
  virtual HRESULT STDMETHODCALLTYPE get_PageSize(long* pl/*[out,retval]*/) = 0; // [1048]
  virtual HRESULT STDMETHODCALLTYPE set_PageSize(long pl/*[in]*/) = 0; // [1048]
  virtual HRESULT STDMETHODCALLTYPE get_Sort(BSTR* Criteria/*[out,retval]*/) = 0; // [1031]
  virtual HRESULT STDMETHODCALLTYPE set_Sort(BSTR Criteria/*[in]*/) = 0; // [1031]
  virtual HRESULT STDMETHODCALLTYPE get_Status(long* pl/*[out,retval]*/) = 0; // [1029]
  virtual HRESULT STDMETHODCALLTYPE get_State(long* plObjState/*[out,retval]*/) = 0; // [1054]
  virtual HRESULT STDMETHODCALLTYPE _xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/) = 0; // [1035]
  virtual HRESULT STDMETHODCALLTYPE CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/) = 0; // [1049]
  virtual HRESULT STDMETHODCALLTYPE get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/) = 0; // [1051]
  virtual HRESULT STDMETHODCALLTYPE set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/) = 0; // [1051]
  virtual HRESULT STDMETHODCALLTYPE NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                                  Adodb_xp::_Recordset** ppiRs/*[out,retval]*/) = 0; // [1052]
  virtual HRESULT STDMETHODCALLTYPE Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                                             VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [1036]
  virtual HRESULT STDMETHODCALLTYPE get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/) = 0; // [-8]
  virtual HRESULT STDMETHODCALLTYPE set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/) = 0; // [-8]
  virtual HRESULT STDMETHODCALLTYPE get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/) = 0; // [1053]
  virtual HRESULT STDMETHODCALLTYPE set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/) = 0; // [1053]
  virtual HRESULT STDMETHODCALLTYPE Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                                         Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                                         VARIANT Start/*[in,opt]*/= TNoParam()) = 0; // [1058]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::PositionEnum __fastcall get_AbsolutePosition(void)
  {
    Adodb_xp::PositionEnum pl;
    OLECHECK(this->get_AbsolutePosition((Adodb_xp::PositionEnum*)&pl));
    return pl;
  }

  VARIANT __fastcall get_ActiveConnection(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_ActiveConnection((VARIANT*)&pvar));
    return pvar;
  }

  VARIANT_BOOL __fastcall get_BOF(void)
  {
    VARIANT_BOOL pb;
    OLECHECK(this->get_BOF((VARIANT_BOOL*)&pb));
    return pb;
  }

  VARIANT __fastcall get_Bookmark(void)
  {
    VARIANT pvBookmark;
    OLECHECK(this->get_Bookmark((VARIANT*)&pvBookmark));
    return pvBookmark;
  }

  long __fastcall get_CacheSize(void)
  {
    long pl;
    OLECHECK(this->get_CacheSize((long*)&pl));
    return pl;
  }

  Adodb_xp::CursorTypeEnum __fastcall get_CursorType(void)
  {
    Adodb_xp::CursorTypeEnum plCursorType;
    OLECHECK(this->get_CursorType((Adodb_xp::CursorTypeEnum*)&plCursorType));
    return plCursorType;
  }

  VARIANT_BOOL __fastcall get_EOF_(void)
  {
    VARIANT_BOOL pb;
    OLECHECK(this->get_EOF_((VARIANT_BOOL*)&pb));
    return pb;
  }

  Adodb_xp::FieldsPtr __fastcall get_Fields(void)
  {
    Adodb_xp::FieldsPtr ppvObject;
    OLECHECK(this->get_Fields(&ppvObject));
    return ppvObject;
  }

  Adodb_xp::LockTypeEnum __fastcall get_LockType(void)
  {
    Adodb_xp::LockTypeEnum plLockType;
    OLECHECK(this->get_LockType((Adodb_xp::LockTypeEnum*)&plLockType));
    return plLockType;
  }

  long __fastcall get_MaxRecords(void)
  {
    long plMaxRecords;
    OLECHECK(this->get_MaxRecords((long*)&plMaxRecords));
    return plMaxRecords;
  }

  long __fastcall get_RecordCount(void)
  {
    long pl;
    OLECHECK(this->get_RecordCount((long*)&pl));
    return pl;
  }

  VARIANT __fastcall get_Source(void)
  {
    VARIANT pvSource;
    OLECHECK(this->get_Source((VARIANT*)&pvSource));
    return pvSource;
  }

  VARIANT __fastcall GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/= TNoParam(), 
                             VARIANT Fields/*[in,opt]*/= TNoParam())
  {
    VARIANT pvar;
    OLECHECK(this->GetRows(Rows, Start, Fields, (VARIANT*)&pvar));
    return pvar;
  }

  Adodb_xp::PositionEnum __fastcall get_AbsolutePage(void)
  {
    Adodb_xp::PositionEnum pl;
    OLECHECK(this->get_AbsolutePage((Adodb_xp::PositionEnum*)&pl));
    return pl;
  }

  Adodb_xp::EditModeEnum __fastcall get_EditMode(void)
  {
    Adodb_xp::EditModeEnum pl;
    OLECHECK(this->get_EditMode((Adodb_xp::EditModeEnum*)&pl));
    return pl;
  }

  VARIANT __fastcall get_Filter(void)
  {
    VARIANT Criteria;
    OLECHECK(this->get_Filter((VARIANT*)&Criteria));
    return Criteria;
  }

  long __fastcall get_PageCount(void)
  {
    long pl;
    OLECHECK(this->get_PageCount((long*)&pl));
    return pl;
  }

  long __fastcall get_PageSize(void)
  {
    long pl;
    OLECHECK(this->get_PageSize((long*)&pl));
    return pl;
  }

  BSTR __fastcall get_Sort(void)
  {
    BSTR Criteria = 0;
    OLECHECK(this->get_Sort((BSTR*)&Criteria));
    return Criteria;
  }

  long __fastcall get_Status(void)
  {
    long pl;
    OLECHECK(this->get_Status((long*)&pl));
    return pl;
  }

  long __fastcall get_State(void)
  {
    long plObjState;
    OLECHECK(this->get_State((long*)&plObjState));
    return plObjState;
  }

  Adodb_xp::_Recordset* __fastcall _xClone(void)
  {
    Adodb_xp::_Recordset* ppvObject = 0;
    OLECHECK(this->_xClone((Adodb_xp::_Recordset**)&ppvObject));
    return ppvObject;
  }

  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void)
  {
    Adodb_xp::CursorLocationEnum plCursorLoc;
    OLECHECK(this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc));
    return plCursorLoc;
  }

  Adodb_xp::_Recordset* __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/= TNoParam())
  {
    Adodb_xp::_Recordset* ppiRs = 0;
    OLECHECK(this->NextRecordset(RecordsAffected, (Adodb_xp::_Recordset**)&ppiRs));
    return ppiRs;
  }

  VARIANT_BOOL __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/)
  {
    VARIANT_BOOL pb;
    OLECHECK(this->Supports(CursorOptions, (VARIANT_BOOL*)&pb));
    return pb;
  }

  VARIANT __fastcall get_Collect(VARIANT Index/*[in]*/)
  {
    VARIANT pvar;
    OLECHECK(this->get_Collect(Index, (VARIANT*)&pvar));
    return pvar;
  }

  Adodb_xp::MarshalOptionsEnum __fastcall get_MarshalOptions(void)
  {
    Adodb_xp::MarshalOptionsEnum peMarshal;
    OLECHECK(this->get_MarshalOptions((Adodb_xp::MarshalOptionsEnum*)&peMarshal));
    return peMarshal;
  }


  __property   Adodb_xp::PositionEnum AbsolutePosition = {read = get_AbsolutePosition, write = set_AbsolutePosition};
  __property   LPDISPATCH      ActiveConnection = {write = _set_ActiveConnection};
  __property   VARIANT_BOOL    BOF = {read = get_BOF};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
  __property   Adodb_xp::CursorTypeEnum CursorType = {read = get_CursorType, write = set_CursorType};
  __property   VARIANT_BOOL    EOF_ = {read = get_EOF_};
  __property   Adodb_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Adodb_xp::LockTypeEnum LockType = {read = get_LockType, write = set_LockType};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   LPDISPATCH      Source = {write = _set_Source};
  __property   Adodb_xp::PositionEnum AbsolutePage = {read = get_AbsolutePage, write = set_AbsolutePage};
  __property   Adodb_xp::EditModeEnum EditMode = {read = get_EditMode};
  __property   long            PageCount = {read = get_PageCount};
  __property   long            PageSize = {read = get_PageSize, write = set_PageSize};
  __property   BSTR            Sort = {read = get_Sort, write = set_Sort};
  __property   long            Status = {read = get_Status};
  __property   long            State = {read = get_State};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::MarshalOptionsEnum MarshalOptions = {read = get_MarshalOptions, write = set_MarshalOptions};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Recordset20
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054F-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Recordset20  : public Adodb_xp::Recordset15
{
public:
  virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0; // [1055]
  virtual HRESULT STDMETHODCALLTYPE get_DataSource(LPUNKNOWN* ppunkDataSource/*[out,retval]*/) = 0; // [1056]
  virtual HRESULT STDMETHODCALLTYPE _set_DataSource(LPUNKNOWN ppunkDataSource/*[in]*/) = 0; // [1056]
  virtual HRESULT STDMETHODCALLTYPE Save(BSTR FileName/*[in,opt]*/, 
                                         Adodb_xp::PersistFormatEnum PersistFormat/*[in,def,opt]*/) = 0; // [1057]
  virtual HRESULT STDMETHODCALLTYPE get_ActiveCommand(LPDISPATCH* ppCmd/*[out,retval]*/) = 0; // [1061]
  virtual HRESULT STDMETHODCALLTYPE set_StayInSync(VARIANT_BOOL pbStayInSync/*[in]*/) = 0; // [1063]
  virtual HRESULT STDMETHODCALLTYPE get_StayInSync(VARIANT_BOOL* pbStayInSync/*[out,retval]*/) = 0; // [1063]
  virtual HRESULT STDMETHODCALLTYPE GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                                              long NumRows/*[in,def,opt]*/, 
                                              BSTR ColumnDelimeter/*[in,opt]*/, 
                                              BSTR RowDelimeter/*[in,opt]*/, 
                                              BSTR NullExpr/*[in,opt]*/, 
                                              BSTR* pRetString/*[out,retval]*/) = 0; // [1062]
  virtual HRESULT STDMETHODCALLTYPE get_DataMember(BSTR* pbstrDataMember/*[out,retval]*/) = 0; // [1064]
  virtual HRESULT STDMETHODCALLTYPE set_DataMember(BSTR pbstrDataMember/*[in]*/) = 0; // [1064]
  virtual HRESULT STDMETHODCALLTYPE CompareBookmarks(VARIANT Bookmark1/*[in]*/, 
                                                     VARIANT Bookmark2/*[in]*/, 
                                                     Adodb_xp::CompareEnum* pCompare/*[out,retval]*/) = 0; // [1065]
  virtual HRESULT STDMETHODCALLTYPE Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                          Adodb_xp::_Recordset** ppvObject/*[out,retval]*/) = 0; // [1034]
  virtual HRESULT STDMETHODCALLTYPE Resync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/, 
                                           Adodb_xp::ResyncEnum ResyncValues/*[in,def,opt]*/) = 0; // [1024]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  LPUNKNOWN __fastcall get_DataSource(void)
  {
    LPUNKNOWN ppunkDataSource;
    OLECHECK(this->get_DataSource((LPUNKNOWN*)&ppunkDataSource));
    return ppunkDataSource;
  }

  LPDISPATCH __fastcall get_ActiveCommand(void)
  {
    LPDISPATCH ppCmd;
    OLECHECK(this->get_ActiveCommand((LPDISPATCH*)&ppCmd));
    return ppCmd;
  }

  VARIANT_BOOL __fastcall get_StayInSync(void)
  {
    VARIANT_BOOL pbStayInSync;
    OLECHECK(this->get_StayInSync((VARIANT_BOOL*)&pbStayInSync));
    return pbStayInSync;
  }

  BSTR __fastcall GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                            long NumRows/*[in,def,opt]*/, BSTR ColumnDelimeter/*[in,opt]*/, 
                            BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/)
  {
    BSTR pRetString = 0;
    OLECHECK(this->GetString(StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, (BSTR*)&pRetString));
    return pRetString;
  }

  BSTR __fastcall get_DataMember(void)
  {
    BSTR pbstrDataMember = 0;
    OLECHECK(this->get_DataMember((BSTR*)&pbstrDataMember));
    return pbstrDataMember;
  }

  Adodb_xp::CompareEnum __fastcall CompareBookmarks(VARIANT Bookmark1/*[in]*/, 
                                                    VARIANT Bookmark2/*[in]*/)
  {
    Adodb_xp::CompareEnum pCompare;
    OLECHECK(this->CompareBookmarks(Bookmark1, Bookmark2, (Adodb_xp::CompareEnum*)&pCompare));
    return pCompare;
  }

  Adodb_xp::_Recordset* __fastcall Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/)
  {
    Adodb_xp::_Recordset* ppvObject = 0;
    OLECHECK(this->Clone(LockType, (Adodb_xp::_Recordset**)&ppvObject));
    return ppvObject;
  }


  __property   LPUNKNOWN       DataSource = {read = get_DataSource, write = _set_DataSource};
  __property   LPDISPATCH      ActiveCommand = {read = get_ActiveCommand};
  __property   VARIANT_BOOL    StayInSync = {read = get_StayInSync, write = set_StayInSync};
  __property   BSTR            DataMember = {read = get_DataMember, write = set_DataMember};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Recordset
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000555-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Recordset  : public Adodb_xp::Recordset20
{
public:
  virtual HRESULT STDMETHODCALLTYPE Seek(VARIANT KeyValues/*[in]*/, 
                                         Adodb_xp::SeekEnum SeekOption/*[in,def,opt]*/) = 0; // [1066]
  virtual HRESULT STDMETHODCALLTYPE set_Index(BSTR pbstrIndex/*[in]*/) = 0; // [1067]
  virtual HRESULT STDMETHODCALLTYPE get_Index(BSTR* pbstrIndex/*[out,retval]*/) = 0; // [1067]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  BSTR __fastcall get_Index(void)
  {
    BSTR pbstrIndex = 0;
    OLECHECK(this->get_Index((BSTR*)&pbstrIndex));
    return pbstrIndex;
  }


  __property   BSTR            Index = {read = get_Index, write = set_Index};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Fields15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000506-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Fields15  : public Adodb_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Index/*[in]*/, 
                                             Adodb_xp::Field** ppvObject/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::Field* __fastcall get_Item(VARIANT Index/*[in]*/)
  {
    Adodb_xp::Field* ppvObject = 0;
    OLECHECK(this->get_Item(Index, (Adodb_xp::Field**)&ppvObject));
    return ppvObject;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Fields
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Fields  : public Adodb_xp::Fields15
{
public:
  virtual HRESULT STDMETHODCALLTYPE Append(BSTR Name/*[in]*/, Adodb_xp::DataTypeEnum Type/*[in]*/, 
                                           long DefinedSize/*[in,def,opt]*/, 
                                           Adodb_xp::FieldAttributeEnum Attrib/*[in,def,opt]*/) = 0; // [1610874880]
  virtual HRESULT STDMETHODCALLTYPE Delete(VARIANT Index/*[in]*/) = 0; // [1610874881]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Field
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054C-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Field  : public Adodb_xp::_ADO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_ActualSize(long* pl/*[out,retval]*/) = 0; // [1109]
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* pl/*[out,retval]*/) = 0; // [1036]
  virtual HRESULT STDMETHODCALLTYPE get_DefinedSize(long* pl/*[out,retval]*/) = 0; // [1103]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [1100]
  virtual HRESULT STDMETHODCALLTYPE get_Type(Adodb_xp::DataTypeEnum* pDataType/*[out,retval]*/) = 0; // [1102]
  virtual HRESULT STDMETHODCALLTYPE get_Value(VARIANT* pvar/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE set_Value(VARIANT pvar/*[in]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Precision(unsigned_char* pbPrecision/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_NumericScale(unsigned_char* pbNumericScale/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE AppendChunk(VARIANT Data/*[in]*/) = 0; // [1107]
  virtual HRESULT STDMETHODCALLTYPE GetChunk(long Length/*[in]*/, VARIANT* pvar/*[out,retval]*/) = 0; // [1108]
  virtual HRESULT STDMETHODCALLTYPE get_OriginalValue(VARIANT* pvar/*[out,retval]*/) = 0; // [1104]
  virtual HRESULT STDMETHODCALLTYPE get_UnderlyingValue(VARIANT* pvar/*[out,retval]*/) = 0; // [1105]
  virtual HRESULT STDMETHODCALLTYPE get_DataFormat(LPUNKNOWN* ppiDF/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _set_DataFormat(LPUNKNOWN ppiDF/*[in]*/) = 0; // [1610809357]
  virtual HRESULT STDMETHODCALLTYPE set_Precision(unsigned_char pbPrecision/*[in]*/) = 0; // [1610809351]
  virtual HRESULT STDMETHODCALLTYPE set_NumericScale(unsigned_char pbNumericScale/*[in]*/) = 0; // [1610809352]
  virtual HRESULT STDMETHODCALLTYPE set_Type(Adodb_xp::DataTypeEnum pDataType/*[in]*/) = 0; // [1102]
  virtual HRESULT STDMETHODCALLTYPE set_DefinedSize(long pl/*[in]*/) = 0; // [1103]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long pl/*[in]*/) = 0; // [1036]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_ActualSize(void)
  {
    long pl;
    OLECHECK(this->get_ActualSize((long*)&pl));
    return pl;
  }

  long __fastcall get_Attributes(void)
  {
    long pl;
    OLECHECK(this->get_Attributes((long*)&pl));
    return pl;
  }

  long __fastcall get_DefinedSize(void)
  {
    long pl;
    OLECHECK(this->get_DefinedSize((long*)&pl));
    return pl;
  }

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstr));
    return pbstr;
  }

  Adodb_xp::DataTypeEnum __fastcall get_Type(void)
  {
    Adodb_xp::DataTypeEnum pDataType;
    OLECHECK(this->get_Type((Adodb_xp::DataTypeEnum*)&pDataType));
    return pDataType;
  }

  VARIANT __fastcall get_Value(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_Value((VARIANT*)&pvar));
    return pvar;
  }

  unsigned_char __fastcall get_Precision(void)
  {
    unsigned_char pbPrecision;
    OLECHECK(this->get_Precision((unsigned_char*)&pbPrecision));
    return pbPrecision;
  }

  unsigned_char __fastcall get_NumericScale(void)
  {
    unsigned_char pbNumericScale;
    OLECHECK(this->get_NumericScale((unsigned_char*)&pbNumericScale));
    return pbNumericScale;
  }

  VARIANT __fastcall GetChunk(long Length/*[in]*/)
  {
    VARIANT pvar;
    OLECHECK(this->GetChunk(Length, (VARIANT*)&pvar));
    return pvar;
  }

  VARIANT __fastcall get_OriginalValue(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_OriginalValue((VARIANT*)&pvar));
    return pvar;
  }

  VARIANT __fastcall get_UnderlyingValue(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_UnderlyingValue((VARIANT*)&pvar));
    return pvar;
  }

  LPUNKNOWN __fastcall get_DataFormat(void)
  {
    LPUNKNOWN ppiDF;
    OLECHECK(this->get_DataFormat((LPUNKNOWN*)&ppiDF));
    return ppiDF;
  }


  __property   long            ActualSize = {read = get_ActualSize};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   long            DefinedSize = {read = get_DefinedSize, write = set_DefinedSize};
  __property   BSTR            Name = {read = get_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type, write = set_Type};
  __property   unsigned_char   Precision = {read = get_Precision, write = set_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale, write = set_NumericScale};
  __property   LPUNKNOWN       DataFormat = {read = get_DataFormat, write = _set_DataFormat};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Parameter
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050C-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Parameter  : public Adodb_xp::_ADO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Name(BSTR pbstr/*[in]*/) = 0; // [1610809344]
  virtual HRESULT STDMETHODCALLTYPE get_Value(VARIANT* pvar/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE set_Value(VARIANT pvar/*[in]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Type(Adodb_xp::DataTypeEnum* psDataType/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Type(Adodb_xp::DataTypeEnum psDataType/*[in]*/) = 0; // [1610809348]
  virtual HRESULT STDMETHODCALLTYPE set_Direction(Adodb_xp::ParameterDirectionEnum plParmDirection/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Direction(Adodb_xp::ParameterDirectionEnum* plParmDirection/*[out,retval]*/) = 0; // [1610809350]
  virtual HRESULT STDMETHODCALLTYPE set_Precision(unsigned_char pbPrecision/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Precision(unsigned_char* pbPrecision/*[out,retval]*/) = 0; // [1610809352]
  virtual HRESULT STDMETHODCALLTYPE set_NumericScale(unsigned_char pbScale/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_NumericScale(unsigned_char* pbScale/*[out,retval]*/) = 0; // [1610809354]
  virtual HRESULT STDMETHODCALLTYPE set_Size(long pl/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Size(long* pl/*[out,retval]*/) = 0; // [1610809356]
  virtual HRESULT STDMETHODCALLTYPE AppendChunk(VARIANT Val/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* plParmAttribs/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long plParmAttribs/*[in]*/) = 0; // [1610809359]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstr));
    return pbstr;
  }

  VARIANT __fastcall get_Value(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_Value((VARIANT*)&pvar));
    return pvar;
  }

  Adodb_xp::DataTypeEnum __fastcall get_Type(void)
  {
    Adodb_xp::DataTypeEnum psDataType;
    OLECHECK(this->get_Type((Adodb_xp::DataTypeEnum*)&psDataType));
    return psDataType;
  }

  Adodb_xp::ParameterDirectionEnum __fastcall get_Direction(void)
  {
    Adodb_xp::ParameterDirectionEnum plParmDirection;
    OLECHECK(this->get_Direction((Adodb_xp::ParameterDirectionEnum*)&plParmDirection));
    return plParmDirection;
  }

  unsigned_char __fastcall get_Precision(void)
  {
    unsigned_char pbPrecision;
    OLECHECK(this->get_Precision((unsigned_char*)&pbPrecision));
    return pbPrecision;
  }

  unsigned_char __fastcall get_NumericScale(void)
  {
    unsigned_char pbScale;
    OLECHECK(this->get_NumericScale((unsigned_char*)&pbScale));
    return pbScale;
  }

  long __fastcall get_Size(void)
  {
    long pl;
    OLECHECK(this->get_Size((long*)&pl));
    return pl;
  }

  long __fastcall get_Attributes(void)
  {
    long plParmAttribs;
    OLECHECK(this->get_Attributes((long*)&plParmAttribs));
    return plParmAttribs;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type, write = set_Type};
  __property   Adodb_xp::ParameterDirectionEnum Direction = {read = get_Direction, write = set_Direction};
  __property   unsigned_char   Precision = {read = get_Precision, write = set_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale, write = set_NumericScale};
  __property   long            Size = {read = get_Size, write = set_Size};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Parameters
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Parameters  : public Adodb_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Index/*[in]*/, 
                                             Adodb_xp::_Parameter** ppvObject/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Adodb_xp::_Parameter* __fastcall get_Item(VARIANT Index/*[in]*/)
  {
    Adodb_xp::_Parameter* ppvObject = 0;
    OLECHECK(this->get_Item(Index, (Adodb_xp::_Parameter**)&ppvObject));
    return ppvObject;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Command
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054E-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Command  : public Adodb_xp::Command15
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_State(long* plObjState/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_State(void)
  {
    long plObjState;
    OLECHECK(this->get_State((long*)&plObjState));
    return plObjState;
  }


  __property   long            State = {read = get_State};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: ConnectionEventsVt
// Flags:     (16) Hidden
// GUID:      {00000402-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface ConnectionEventsVt  : public IUnknown
{
public:
  virtual HRESULT STDMETHODCALLTYPE InfoMessage(Adodb_xp::Error* pError/*[in]*/, 
                                                Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE BeginTransComplete(long TransactionLevel/*[in]*/, 
                                                       Adodb_xp::Error* pError/*[in]*/, 
                                                       Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                       Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [1]
  virtual HRESULT STDMETHODCALLTYPE CommitTransComplete(Adodb_xp::Error* pError/*[in]*/, 
                                                        Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                        Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [3]
  virtual HRESULT STDMETHODCALLTYPE RollbackTransComplete(Adodb_xp::Error* pError/*[in]*/, 
                                                          Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                          Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [2]
  virtual HRESULT STDMETHODCALLTYPE WillExecute(BSTR* Source/*[in,out]*/, 
                                                Adodb_xp::CursorTypeEnum* CursorType/*[in,out]*/, 
                                                Adodb_xp::LockTypeEnum* LockType/*[in,out]*/, 
                                                long* Options/*[in,out]*/, 
                                                Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                Adodb_xp::_Command* pCommand/*[in]*/, 
                                                Adodb_xp::_Recordset* pRecordset/*[in]*/, 
                                                Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [4]
  virtual HRESULT STDMETHODCALLTYPE ExecuteComplete(long RecordsAffected/*[in]*/, 
                                                    Adodb_xp::Error* pError/*[in]*/, 
                                                    Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                    Adodb_xp::_Command* pCommand/*[in]*/, 
                                                    Adodb_xp::_Recordset* pRecordset/*[in]*/, 
                                                    Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [5]
  virtual HRESULT STDMETHODCALLTYPE WillConnect(BSTR* ConnectionString/*[in,out]*/, 
                                                BSTR* UserID/*[in,out]*/, BSTR* Password/*[in,out]*/, 
                                                long* Options/*[in,out]*/, 
                                                Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [6]
  virtual HRESULT STDMETHODCALLTYPE ConnectComplete(Adodb_xp::Error* pError/*[in]*/, 
                                                    Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                    Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [7]
  virtual HRESULT STDMETHODCALLTYPE Disconnect(Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                               Adodb_xp::_Connection* pConnection/*[in]*/) = 0; // [8]
};

// *********************************************************************//
// Interface: RecordsetEventsVt
// Flags:     (16) Hidden
// GUID:      {00000403-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface RecordsetEventsVt  : public IUnknown
{
public:
  virtual HRESULT STDMETHODCALLTYPE WillChangeField(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                                    Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                    Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [9]
  virtual HRESULT STDMETHODCALLTYPE FieldChangeComplete(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                                        Adodb_xp::Error* pError/*[in]*/, 
                                                        Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                        Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [10]
  virtual HRESULT STDMETHODCALLTYPE WillChangeRecord(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                     long cRecords/*[in]*/, 
                                                     Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                     Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [11]
  virtual HRESULT STDMETHODCALLTYPE RecordChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                         long cRecords/*[in]*/, 
                                                         Adodb_xp::Error* pError/*[in]*/, 
                                                         Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                         Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [12]
  virtual HRESULT STDMETHODCALLTYPE WillChangeRecordset(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                        Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                        Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [13]
  virtual HRESULT STDMETHODCALLTYPE RecordsetChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                            Adodb_xp::Error* pError/*[in]*/, 
                                                            Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                            Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [14]
  virtual HRESULT STDMETHODCALLTYPE WillMove(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                             Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                             Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [15]
  virtual HRESULT STDMETHODCALLTYPE MoveComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                 Adodb_xp::Error* pError/*[in]*/, 
                                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                 Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [16]
  virtual HRESULT STDMETHODCALLTYPE EndOfRecordset(VARIANT_BOOL* fMoreData/*[in,out]*/, 
                                                   Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                   Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [17]
  virtual HRESULT STDMETHODCALLTYPE FetchProgress(long Progress/*[in]*/, long MaxProgress/*[in]*/, 
                                                  Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                  Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [18]
  virtual HRESULT STDMETHODCALLTYPE FetchComplete(Adodb_xp::Error* pError/*[in]*/, 
                                                  Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                  Adodb_xp::_Recordset* pRecordset/*[in]*/) = 0; // [19]
};

// *********************************************************************//
// Interface: ConnectionEvents
// Flags:     (4096) Dispatchable
// GUID:      {00000400-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface ConnectionEvents : public TDispWrapper<IDispatch>
{
  HRESULT __fastcall InfoMessage(Adodb_xp::Error* pError/*[in]*/, 
                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                 Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* InfoMessage */ DISPID(0));
    TAutoArgs<3> _args;
    _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall BeginTransComplete(long TransactionLevel/*[in]*/, 
                                        Adodb_xp::Error* pError/*[in]*/, 
                                        Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                        Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* BeginTransComplete */ DISPID(1));
    TAutoArgs<4> _args;
    _args[1] = TransactionLevel /*[VT_I4:0]*/;
    _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall CommitTransComplete(Adodb_xp::Error* pError/*[in]*/, 
                                         Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                         Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* CommitTransComplete */ DISPID(3));
    TAutoArgs<3> _args;
    _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall RollbackTransComplete(Adodb_xp::Error* pError/*[in]*/, 
                                           Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                           Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* RollbackTransComplete */ DISPID(2));
    TAutoArgs<3> _args;
    _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall WillExecute(BSTR* Source/*[in,out]*/, 
                                 Adodb_xp::CursorTypeEnum* CursorType/*[in,out]*/, 
                                 Adodb_xp::LockTypeEnum* LockType/*[in,out]*/, 
                                 long* Options/*[in,out]*/, 
                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                 Adodb_xp::_Command* pCommand/*[in]*/, 
                                 Adodb_xp::_Recordset* pRecordset/*[in]*/, 
                                 Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* WillExecute */ DISPID(4));
    TAutoArgs<8> _args;
    _args[1] = Source /*[VT_BSTR:1]*/;
    _args[2] = (int*)CursorType /*[VT_USERDEFINED:1]*/;
    _args[3] = (int*)LockType /*[VT_USERDEFINED:1]*/;
    _args[4] = Options /*[VT_I4:1]*/;
    _args[5] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[6] = (LPDISPATCH)(Adodb_xp::_Command*)pCommand /*[VT_USERDEFINED:1]*/;
    _args[7] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    _args[8] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall ExecuteComplete(long RecordsAffected/*[in]*/, Adodb_xp::Error* pError/*[in]*/, 
                                     Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                     Adodb_xp::_Command* pCommand/*[in]*/, 
                                     Adodb_xp::_Recordset* pRecordset/*[in]*/, 
                                     Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* ExecuteComplete */ DISPID(5));
    TAutoArgs<6> _args;
    _args[1] = RecordsAffected /*[VT_I4:0]*/;
    _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Command*)pCommand /*[VT_USERDEFINED:1]*/;
    _args[5] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    _args[6] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall WillConnect(BSTR* ConnectionString/*[in,out]*/, BSTR* UserID/*[in,out]*/, 
                                 BSTR* Password/*[in,out]*/, long* Options/*[in,out]*/, 
                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                 Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* WillConnect */ DISPID(6));
    TAutoArgs<6> _args;
    _args[1] = ConnectionString /*[VT_BSTR:1]*/;
    _args[2] = UserID /*[VT_BSTR:1]*/;
    _args[3] = Password /*[VT_BSTR:1]*/;
    _args[4] = Options /*[VT_I4:1]*/;
    _args[5] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[6] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall ConnectComplete(Adodb_xp::Error* pError/*[in]*/, 
                                     Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                     Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* ConnectComplete */ DISPID(7));
    TAutoArgs<3> _args;
    _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall Disconnect(Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                Adodb_xp::_Connection* pConnection/*[in]*/)
  {
    _TDispID _dispid(/* Disconnect */ DISPID(8));
    TAutoArgs<2> _args;
    _args[1] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[2] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }


};
// *********************************************************************//
// Interface: RecordsetEvents
// Flags:     (4096) Dispatchable
// GUID:      {00000266-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface RecordsetEvents : public TDispWrapper<IDispatch>
{
  HRESULT __fastcall WillChangeField(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                     Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                     Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* WillChangeField */ DISPID(9));
    TAutoArgs<4> _args;
    _args[1] = cFields /*[VT_I4:0]*/;
    _args[2] = Fields /*[VT_VARIANT:0]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall FieldChangeComplete(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                         Adodb_xp::Error* pError/*[in]*/, 
                                         Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                         Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* FieldChangeComplete */ DISPID(10));
    TAutoArgs<5> _args;
    _args[1] = cFields /*[VT_I4:0]*/;
    _args[2] = Fields /*[VT_VARIANT:0]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[4] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[5] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall WillChangeRecord(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                      long cRecords/*[in]*/, 
                                      Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                      Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* WillChangeRecord */ DISPID(11));
    TAutoArgs<4> _args;
    _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
    _args[2] = cRecords /*[VT_I4:0]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall RecordChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                          long cRecords/*[in]*/, Adodb_xp::Error* pError/*[in]*/, 
                                          Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                          Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* RecordChangeComplete */ DISPID(12));
    TAutoArgs<5> _args;
    _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
    _args[2] = cRecords /*[VT_I4:0]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[4] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[5] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall WillChangeRecordset(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                         Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                         Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* WillChangeRecordset */ DISPID(13));
    TAutoArgs<3> _args;
    _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall RecordsetChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                             Adodb_xp::Error* pError/*[in]*/, 
                                             Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                             Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* RecordsetChangeComplete */ DISPID(14));
    TAutoArgs<4> _args;
    _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
    _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall WillMove(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                              Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                              Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* WillMove */ DISPID(15));
    TAutoArgs<3> _args;
    _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall MoveComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                  Adodb_xp::Error* pError/*[in]*/, 
                                  Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                  Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* MoveComplete */ DISPID(16));
    TAutoArgs<4> _args;
    _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
    _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall EndOfRecordset(VARIANT_BOOL* fMoreData/*[in,out]*/, 
                                    Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                    Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* EndOfRecordset */ DISPID(17));
    TAutoArgs<3> _args;
    _args[1] = fMoreData /*[VT_BOOL:1]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall FetchProgress(long Progress/*[in]*/, long MaxProgress/*[in]*/, 
                                   Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                   Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* FetchProgress */ DISPID(18));
    TAutoArgs<4> _args;
    _args[1] = Progress /*[VT_I4:0]*/;
    _args[2] = MaxProgress /*[VT_I4:0]*/;
    _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall FetchComplete(Adodb_xp::Error* pError/*[in]*/, 
                                   Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                   Adodb_xp::_Recordset* pRecordset/*[in]*/)
  {
    _TDispID _dispid(/* FetchComplete */ DISPID(19));
    TAutoArgs<3> _args;
    _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
    _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
    _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
    return OleFunction(_dispid, _args);
  }


};
// *********************************************************************//
// Interface: ADOConnectionConstruction15
// Flags:     (512) Restricted
// GUID:      {00000516-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface ADOConnectionConstruction15  : public IUnknown
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_DSO(LPUNKNOWN* ppDSO/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Session(LPUNKNOWN* ppSession/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE WrapDSOandSession(LPUNKNOWN pDSO/*[in]*/, 
                                                      LPUNKNOWN pSession/*[in]*/) = 0; // [-1]
};

// *********************************************************************//
// Interface: ADOConnectionConstruction
// Flags:     (512) Restricted
// GUID:      {00000551-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface ADOConnectionConstruction  : public Adodb_xp::ADOConnectionConstruction15
{
public:
};

// *********************************************************************//
// Interface: ADOCommandConstruction
// Flags:     (512) Restricted
// GUID:      {00000517-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface ADOCommandConstruction  : public IUnknown
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_OLEDBCommand(LPUNKNOWN* ppOLEDBCommand/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_OLEDBCommand(LPUNKNOWN ppOLEDBCommand/*[in]*/) = 0; // [1610678272]
};

// *********************************************************************//
// Interface: ADORecordsetConstruction
// Flags:     (4608) Restricted Dispatchable
// GUID:      {00000283-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface ADORecordsetConstruction  : public IDispatch
{
public:
   HRESULT STDMETHODCALLTYPE get_Rowset(LPUNKNOWN* ppRowset/*[out,retval]*/); // [-1]
   HRESULT STDMETHODCALLTYPE set_Rowset(LPUNKNOWN ppRowset/*[in]*/); // [1610743808]
   HRESULT STDMETHODCALLTYPE get_Chapter(long* plChapter/*[out,retval]*/); // [-1]
   HRESULT STDMETHODCALLTYPE set_Chapter(long plChapter/*[in]*/); // [1610743810]
   HRESULT STDMETHODCALLTYPE get_RowPosition(LPUNKNOWN* ppRowPos/*[out,retval]*/); // [-1]
   HRESULT STDMETHODCALLTYPE set_RowPosition(LPUNKNOWN ppRowPos/*[in]*/); // [1610743812]
};

// *********************************************************************//
// Interface: Field15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000505-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Field15  : public Adodb_xp::_ADO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_ActualSize(long* pl/*[out,retval]*/) = 0; // [1109]
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* pl/*[out,retval]*/) = 0; // [1036]
  virtual HRESULT STDMETHODCALLTYPE get_DefinedSize(long* pl/*[out,retval]*/) = 0; // [1103]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [1100]
  virtual HRESULT STDMETHODCALLTYPE get_Type(Adodb_xp::DataTypeEnum* pDataType/*[out,retval]*/) = 0; // [1102]
  virtual HRESULT STDMETHODCALLTYPE get_Value(VARIANT* pvar/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE set_Value(VARIANT pvar/*[in]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Precision(unsigned_char* pbPrecision/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_NumericScale(unsigned_char* pbNumericScale/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE AppendChunk(VARIANT Data/*[in]*/) = 0; // [1107]
  virtual HRESULT STDMETHODCALLTYPE GetChunk(long Length/*[in]*/, VARIANT* pvar/*[out,retval]*/) = 0; // [1108]
  virtual HRESULT STDMETHODCALLTYPE get_OriginalValue(VARIANT* pvar/*[out,retval]*/) = 0; // [1104]
  virtual HRESULT STDMETHODCALLTYPE get_UnderlyingValue(VARIANT* pvar/*[out,retval]*/) = 0; // [1105]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_ActualSize(void)
  {
    long pl;
    OLECHECK(this->get_ActualSize((long*)&pl));
    return pl;
  }

  long __fastcall get_Attributes(void)
  {
    long pl;
    OLECHECK(this->get_Attributes((long*)&pl));
    return pl;
  }

  long __fastcall get_DefinedSize(void)
  {
    long pl;
    OLECHECK(this->get_DefinedSize((long*)&pl));
    return pl;
  }

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstr = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstr));
    return pbstr;
  }

  Adodb_xp::DataTypeEnum __fastcall get_Type(void)
  {
    Adodb_xp::DataTypeEnum pDataType;
    OLECHECK(this->get_Type((Adodb_xp::DataTypeEnum*)&pDataType));
    return pDataType;
  }

  VARIANT __fastcall get_Value(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_Value((VARIANT*)&pvar));
    return pvar;
  }

  unsigned_char __fastcall get_Precision(void)
  {
    unsigned_char pbPrecision;
    OLECHECK(this->get_Precision((unsigned_char*)&pbPrecision));
    return pbPrecision;
  }

  unsigned_char __fastcall get_NumericScale(void)
  {
    unsigned_char pbNumericScale;
    OLECHECK(this->get_NumericScale((unsigned_char*)&pbNumericScale));
    return pbNumericScale;
  }

  VARIANT __fastcall GetChunk(long Length/*[in]*/)
  {
    VARIANT pvar;
    OLECHECK(this->GetChunk(Length, (VARIANT*)&pvar));
    return pvar;
  }

  VARIANT __fastcall get_OriginalValue(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_OriginalValue((VARIANT*)&pvar));
    return pvar;
  }

  VARIANT __fastcall get_UnderlyingValue(void)
  {
    VARIANT pvar;
    OLECHECK(this->get_UnderlyingValue((VARIANT*)&pvar));
    return pvar;
  }


  __property   long            ActualSize = {read = get_ActualSize};
  __property   long            Attributes = {read = get_Attributes};
  __property   long            DefinedSize = {read = get_DefinedSize};
  __property   BSTR            Name = {read = get_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type};
  __property   unsigned_char   Precision = {read = get_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
typedef TComInterface<_Collection>  TCOM_Collection;

// *********************************************************************//
// DispIntf:  _Collection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000512-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _CollectionDispT : public TAutoDriver<_Collection>
{
public:
  _CollectionDispT(){}

  _CollectionDispT(_Collection *pintf)
  {
    TAutoDriver<_Collection>::Bind(pintf, false);
  }

  _CollectionDispT(_CollectionPtr pintf)
  {
    TAutoDriver<_Collection>::Bind(pintf, true);
  }

  _CollectionDispT& operator=(_Collection *pintf)
  {
    TAutoDriver<_Collection>::Bind(pintf, false);
    return *this;
  }

  _CollectionDispT& operator=(_CollectionPtr pintf)
  {
    TAutoDriver<_Collection>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();

  __property   long            Count = {read = get_Count};
};
typedef _CollectionDispT<_Collection> _CollectionDisp;

typedef TComInterface<_DynaCollection>  TCOM_DynaCollection;

// *********************************************************************//
// DispIntf:  _DynaCollection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000513-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _DynaCollectionDispT : public TAutoDriver<_DynaCollection>
{
public:
  _DynaCollectionDispT(){}

  _DynaCollectionDispT(_DynaCollection *pintf)
  {
    TAutoDriver<_DynaCollection>::Bind(pintf, false);
  }

  _DynaCollectionDispT(_DynaCollectionPtr pintf)
  {
    TAutoDriver<_DynaCollection>::Bind(pintf, true);
  }

  _DynaCollectionDispT& operator=(_DynaCollection *pintf)
  {
    TAutoDriver<_DynaCollection>::Bind(pintf, false);
    return *this;
  }

  _DynaCollectionDispT& operator=(_DynaCollectionPtr pintf)
  {
    TAutoDriver<_DynaCollection>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   long            Count = {read = get_Count};
};
typedef _DynaCollectionDispT<_DynaCollection> _DynaCollectionDisp;

typedef TComInterface<_ADO>  TCOM_ADO;

// *********************************************************************//
// DispIntf:  _ADO
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000534-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _ADODispT : public TAutoDriver<_ADO>
{
public:
  _ADODispT(){}

  _ADODispT(_ADO *pintf)
  {
    TAutoDriver<_ADO>::Bind(pintf, false);
  }

  _ADODispT(_ADOPtr pintf)
  {
    TAutoDriver<_ADO>::Bind(pintf, true);
  }

  _ADODispT& operator=(_ADO *pintf)
  {
    TAutoDriver<_ADO>::Bind(pintf, false);
    return *this;
  }

  _ADODispT& operator=(_ADOPtr pintf)
  {
    TAutoDriver<_ADO>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _ADODispT<_ADO> _ADODisp;

typedef TComInterface<Properties>  TCOMProperties;

// *********************************************************************//
// DispIntf:  Properties
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000504-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class PropertiesDispT : public TAutoDriver<Properties>
{
public:
  PropertiesDispT(){}

  PropertiesDispT(Properties *pintf)
  {
    TAutoDriver<Properties>::Bind(pintf, false);
  }

  PropertiesDispT(PropertiesPtr pintf)
  {
    TAutoDriver<Properties>::Bind(pintf, true);
  }

  PropertiesDispT& operator=(Properties *pintf)
  {
    TAutoDriver<Properties>::Bind(pintf, false);
    return *this;
  }

  PropertiesDispT& operator=(PropertiesPtr pintf)
  {
    TAutoDriver<Properties>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Adodb_xp::Property** ppvObject/*[out,retval]*/);
  Adodb_xp::Property* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   long            Count = {read = get_Count};
};
typedef PropertiesDispT<Properties> PropertiesDisp;

typedef TComInterface<Property>  TCOMProperty;

// *********************************************************************//
// DispIntf:  Property
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000503-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class PropertyDispT : public TAutoDriver<Property>
{
public:
  PropertyDispT(){}

  PropertyDispT(Property *pintf)
  {
    TAutoDriver<Property>::Bind(pintf, false);
  }

  PropertyDispT(PropertyPtr pintf)
  {
    TAutoDriver<Property>::Bind(pintf, true);
  }

  PropertyDispT& operator=(Property *pintf)
  {
    TAutoDriver<Property>::Bind(pintf, false);
    return *this;
  }

  PropertyDispT& operator=(PropertyPtr pintf)
  {
    TAutoDriver<Property>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Value(VARIANT* pval/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pval/*[in]*/);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Type(Adodb_xp::DataTypeEnum* ptype/*[out,retval]*/);
  Adodb_xp::DataTypeEnum __fastcall get_Type(void);
  HRESULT         __fastcall get_Attributes(long* plAttributes/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long plAttributes/*[in]*/);

  __property   BSTR            Name = {read = get_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
};
typedef PropertyDispT<Property> PropertyDisp;

typedef TComInterface<Error>  TCOMError;

// *********************************************************************//
// DispIntf:  Error
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000500-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class ErrorDispT : public TAutoDriver<Error>
{
public:
  ErrorDispT(){}

  ErrorDispT(Error *pintf)
  {
    TAutoDriver<Error>::Bind(pintf, false);
  }

  ErrorDispT(ErrorPtr pintf)
  {
    TAutoDriver<Error>::Bind(pintf, true);
  }

  ErrorDispT& operator=(Error *pintf)
  {
    TAutoDriver<Error>::Bind(pintf, false);
    return *this;
  }

  ErrorDispT& operator=(ErrorPtr pintf)
  {
    TAutoDriver<Error>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Number(long* pl/*[out,retval]*/);
  long            __fastcall get_Number(void);
  HRESULT         __fastcall get_Source(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Source(void);
  HRESULT         __fastcall get_Description(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Description(void);
  HRESULT         __fastcall get_HelpFile(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_HelpFile(void);
  HRESULT         __fastcall get_HelpContext(long* pl/*[out,retval]*/);
  long            __fastcall get_HelpContext(void);
  HRESULT         __fastcall get_SQLState(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SQLState(void);
  HRESULT         __fastcall get_NativeError(long* pl/*[out,retval]*/);
  long            __fastcall get_NativeError(void);

  __property   long            Number = {read = get_Number};
  __property   BSTR            Source = {read = get_Source};
  __property   BSTR            Description = {read = get_Description};
  __property   BSTR            HelpFile = {read = get_HelpFile};
  __property   long            HelpContext = {read = get_HelpContext};
  __property   BSTR            SQLState = {read = get_SQLState};
  __property   long            NativeError = {read = get_NativeError};
};
typedef ErrorDispT<Error> ErrorDisp;

typedef TComInterface<Errors>  TCOMErrors;

// *********************************************************************//
// DispIntf:  Errors
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000501-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class ErrorsDispT : public TAutoDriver<Errors>
{
public:
  ErrorsDispT(){}

  ErrorsDispT(Errors *pintf)
  {
    TAutoDriver<Errors>::Bind(pintf, false);
  }

  ErrorsDispT(ErrorsPtr pintf)
  {
    TAutoDriver<Errors>::Bind(pintf, true);
  }

  ErrorsDispT& operator=(Errors *pintf)
  {
    TAutoDriver<Errors>::Bind(pintf, false);
    return *this;
  }

  ErrorsDispT& operator=(ErrorsPtr pintf)
  {
    TAutoDriver<Errors>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Adodb_xp::Error** ppvObject/*[out,retval]*/);
  Adodb_xp::Error* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall Clear();
  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   long            Count = {read = get_Count};
};
typedef ErrorsDispT<Errors> ErrorsDisp;

typedef TComInterface<Command15>  TCOMCommand15;

// *********************************************************************//
// DispIntf:  Command15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000508-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class Command15DispT : public TAutoDriver<Command15>
{
public:
  Command15DispT(){}

  Command15DispT(Command15 *pintf)
  {
    TAutoDriver<Command15>::Bind(pintf, false);
  }

  Command15DispT(Command15Ptr pintf)
  {
    TAutoDriver<Command15>::Bind(pintf, true);
  }

  Command15DispT& operator=(Command15 *pintf)
  {
    TAutoDriver<Command15>::Bind(pintf, false);
    return *this;
  }

  Command15DispT& operator=(Command15Ptr pintf)
  {
    TAutoDriver<Command15>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_ActiveConnection(Adodb_xp::_Connection** ppvObject/*[out,retval]*/);
  Adodb_xp::_ConnectionPtr __fastcall get_ActiveConnection(void);
  HRESULT         __fastcall _set_ActiveConnection(Adodb_xp::_Connection* ppvObject/*[in]*/);
  HRESULT         __fastcall set_ActiveConnection(VARIANT ppvObject/*[in]*/);
  HRESULT         __fastcall get_CommandText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_CommandText(void);
  HRESULT         __fastcall set_CommandText(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_CommandTimeout(long* pl/*[out,retval]*/);
  long            __fastcall get_CommandTimeout(void);
  HRESULT         __fastcall set_CommandTimeout(long pl/*[in]*/);
  HRESULT         __fastcall get_Prepared(VARIANT_BOOL* pfPrepared/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Prepared(void);
  HRESULT         __fastcall set_Prepared(VARIANT_BOOL pfPrepared/*[in]*/);
  HRESULT         __fastcall Execute(VARIANT* RecordsAffected/*[out,opt]*/, 
                                     VARIANT* Parameters/*[in,opt]*/, long Options/*[in,def,opt]*/, 
                                     Adodb_xp::_Recordset** ppiRs/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall Execute(VARIANT* RecordsAffected/*[out,opt]*/, 
                                           VARIANT* Parameters/*[in,opt]*/, 
                                           long Options/*[in,def,opt]*/);
  HRESULT         __fastcall CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                             Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                             Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/
                                             , long Size/*[in,def,opt]*/, VARIANT Value/*[in,opt]*/
                                             , Adodb_xp::_Parameter** ppiprm/*[out,retval]*/);
  Adodb_xp::_Parameter* __fastcall CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                                   Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                                   Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                                   long Size/*[in,def,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Parameters(Adodb_xp::Parameters** ppvObject/*[out,retval]*/);
  Adodb_xp::ParametersPtr __fastcall get_Parameters(void);
  HRESULT         __fastcall set_CommandType(Adodb_xp::CommandTypeEnum plCmdType/*[in]*/);
  HRESULT         __fastcall get_CommandType(Adodb_xp::CommandTypeEnum* plCmdType/*[out,retval]*/);
  Adodb_xp::CommandTypeEnum __fastcall get_CommandType(void);
  HRESULT         __fastcall get_Name(BSTR* pbstrName/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstrName/*[in]*/);
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   Adodb_xp::_ConnectionPtr ActiveConnection = {read = get_ActiveConnection};
  __property   BSTR            CommandText = {read = get_CommandText, write = set_CommandText};
  __property   long            CommandTimeout = {read = get_CommandTimeout, write = set_CommandTimeout};
  __property   VARIANT_BOOL    Prepared = {read = get_Prepared, write = set_Prepared};
  __property   Adodb_xp::ParametersPtr Parameters = {read = get_Parameters};
  __property   Adodb_xp::CommandTypeEnum CommandType = {read = get_CommandType, write = set_CommandType};
  __property   BSTR            Name = {read = get_Name, write = set_Name};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef Command15DispT<Command15> Command15Disp;

typedef TComInterface<Connection15>  TCOMConnection15;

// *********************************************************************//
// DispIntf:  Connection15
// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
// GUID:      {00000515-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class Connection15DispT : public TAutoDriver<Connection15>
{
public:
  Connection15DispT(){}

  Connection15DispT(Connection15 *pintf)
  {
    TAutoDriver<Connection15>::Bind(pintf, false);
  }

  Connection15DispT(Connection15Ptr pintf)
  {
    TAutoDriver<Connection15>::Bind(pintf, true);
  }

  Connection15DispT& operator=(Connection15 *pintf)
  {
    TAutoDriver<Connection15>::Bind(pintf, false);
    return *this;
  }

  Connection15DispT& operator=(Connection15Ptr pintf)
  {
    TAutoDriver<Connection15>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_ConnectionString(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ConnectionString(void);
  HRESULT         __fastcall set_ConnectionString(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_CommandTimeout(long* plTimeout/*[out,retval]*/);
  long            __fastcall get_CommandTimeout(void);
  HRESULT         __fastcall set_CommandTimeout(long plTimeout/*[in]*/);
  HRESULT         __fastcall get_ConnectionTimeout(long* plTimeout/*[out,retval]*/);
  long            __fastcall get_ConnectionTimeout(void);
  HRESULT         __fastcall set_ConnectionTimeout(long plTimeout/*[in]*/);
  HRESULT         __fastcall get_Version(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Version(void);
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Execute(BSTR CommandText/*[in]*/, VARIANT* RecordsAffected/*[out,opt]*/
                                     , long Options/*[in,def,opt]*/, 
                                     Adodb_xp::_Recordset** ppiRset/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall Execute(BSTR CommandText/*[in]*/, 
                                           VARIANT* RecordsAffected/*[out,opt]*/, 
                                           long Options/*[in,def,opt]*/);
  HRESULT         __fastcall BeginTrans(long* TransactionLevel/*[out,retval]*/);
  long            __fastcall BeginTrans(void);
  HRESULT         __fastcall CommitTrans();
  HRESULT         __fastcall RollbackTrans();
  HRESULT         __fastcall Open(BSTR ConnectionString/*[in,def,opt]*/, BSTR UserID/*[in,def,opt]*/
                                  , BSTR Password/*[in,def,opt]*/, long Options/*[in,def,opt]*/);
  HRESULT         __fastcall get_Errors(Adodb_xp::Errors** ppvObject/*[out,retval]*/);
  Adodb_xp::ErrorsPtr __fastcall get_Errors(void);
  HRESULT         __fastcall get_DefaultDatabase(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_DefaultDatabase(void);
  HRESULT         __fastcall set_DefaultDatabase(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_IsolationLevel(Adodb_xp::IsolationLevelEnum* Level/*[out,retval]*/);
  Adodb_xp::IsolationLevelEnum __fastcall get_IsolationLevel(void);
  HRESULT         __fastcall set_IsolationLevel(Adodb_xp::IsolationLevelEnum Level/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* plAttr/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long plAttr/*[in]*/);
  HRESULT         __fastcall get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/);
  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void);
  HRESULT         __fastcall set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/);
  HRESULT         __fastcall get_Mode(Adodb_xp::ConnectModeEnum* plMode/*[out,retval]*/);
  Adodb_xp::ConnectModeEnum __fastcall get_Mode(void);
  HRESULT         __fastcall set_Mode(Adodb_xp::ConnectModeEnum plMode/*[in]*/);
  HRESULT         __fastcall get_Provider(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Provider(void);
  HRESULT         __fastcall set_Provider(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                        VARIANT Restrictions/*[in,opt]*/, 
                                        VARIANT SchemaID/*[in,opt]*/, 
                                        Adodb_xp::_Recordset** pprset/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                              VARIANT Restrictions/*[in,opt]*/= TNoParam(), 
                                              VARIANT SchemaID/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            ConnectionString = {read = get_ConnectionString, write = set_ConnectionString};
  __property   long            CommandTimeout = {read = get_CommandTimeout, write = set_CommandTimeout};
  __property   long            ConnectionTimeout = {read = get_ConnectionTimeout, write = set_ConnectionTimeout};
  __property   BSTR            Version = {read = get_Version};
  __property   Adodb_xp::ErrorsPtr Errors = {read = get_Errors};
  __property   BSTR            DefaultDatabase = {read = get_DefaultDatabase, write = set_DefaultDatabase};
  __property   Adodb_xp::IsolationLevelEnum IsolationLevel = {read = get_IsolationLevel, write = set_IsolationLevel};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::ConnectModeEnum Mode = {read = get_Mode, write = set_Mode};
  __property   BSTR            Provider = {read = get_Provider, write = set_Provider};
  __property   long            State = {read = get_State};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef Connection15DispT<Connection15> Connection15Disp;

// *********************************************************************//
// SmartIntf: TCOM_Connection
// Interface: _Connection
// *********************************************************************//
template <class T /* _Connection */ >
class TCOM_ConnectionT : public TComInterface<_Connection>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_ConnectionT() {}
  TCOM_ConnectionT(_Connection *intf, bool addRef = false) : TComInterface<_Connection>(intf, addRef) {}
  TCOM_ConnectionT(const TCOM_ConnectionT& src) : TComInterface<_Connection>(src) {}
  TCOM_ConnectionT& operator=(const TCOM_ConnectionT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall Cancel(void);

};
typedef TCOM_ConnectionT<_Connection> TCOM_Connection;

// *********************************************************************//
// DispIntf:  _Connection
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {00000550-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _ConnectionDispT : public TAutoDriver<_Connection>
{
public:
  _ConnectionDispT(){}

  _ConnectionDispT(_Connection *pintf)
  {
    TAutoDriver<_Connection>::Bind(pintf, false);
  }

  _ConnectionDispT(_ConnectionPtr pintf)
  {
    TAutoDriver<_Connection>::Bind(pintf, true);
  }

  _ConnectionDispT& operator=(_Connection *pintf)
  {
    TAutoDriver<_Connection>::Bind(pintf, false);
    return *this;
  }

  _ConnectionDispT& operator=(_ConnectionPtr pintf)
  {
    TAutoDriver<_Connection>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Connection));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Connection);
  }

  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall get_ConnectionString(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ConnectionString(void);
  HRESULT         __fastcall set_ConnectionString(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_CommandTimeout(long* plTimeout/*[out,retval]*/);
  long            __fastcall get_CommandTimeout(void);
  HRESULT         __fastcall set_CommandTimeout(long plTimeout/*[in]*/);
  HRESULT         __fastcall get_ConnectionTimeout(long* plTimeout/*[out,retval]*/);
  long            __fastcall get_ConnectionTimeout(void);
  HRESULT         __fastcall set_ConnectionTimeout(long plTimeout/*[in]*/);
  HRESULT         __fastcall get_Version(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Version(void);
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Execute(BSTR CommandText/*[in]*/, VARIANT* RecordsAffected/*[out,opt]*/
                                     , long Options/*[in,def,opt]*/, 
                                     Adodb_xp::_Recordset** ppiRset/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall Execute(BSTR CommandText/*[in]*/, 
                                           VARIANT* RecordsAffected/*[out,opt]*/, 
                                           long Options/*[in,def,opt]*/);
  HRESULT         __fastcall BeginTrans(long* TransactionLevel/*[out,retval]*/);
  long            __fastcall BeginTrans(void);
  HRESULT         __fastcall CommitTrans();
  HRESULT         __fastcall RollbackTrans();
  HRESULT         __fastcall Open(BSTR ConnectionString/*[in,def,opt]*/, BSTR UserID/*[in,def,opt]*/
                                  , BSTR Password/*[in,def,opt]*/, long Options/*[in,def,opt]*/);
  HRESULT         __fastcall get_Errors(Adodb_xp::Errors** ppvObject/*[out,retval]*/);
  Adodb_xp::ErrorsPtr __fastcall get_Errors(void);
  HRESULT         __fastcall get_DefaultDatabase(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_DefaultDatabase(void);
  HRESULT         __fastcall set_DefaultDatabase(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_IsolationLevel(Adodb_xp::IsolationLevelEnum* Level/*[out,retval]*/);
  Adodb_xp::IsolationLevelEnum __fastcall get_IsolationLevel(void);
  HRESULT         __fastcall set_IsolationLevel(Adodb_xp::IsolationLevelEnum Level/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* plAttr/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long plAttr/*[in]*/);
  HRESULT         __fastcall get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/);
  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void);
  HRESULT         __fastcall set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/);
  HRESULT         __fastcall get_Mode(Adodb_xp::ConnectModeEnum* plMode/*[out,retval]*/);
  Adodb_xp::ConnectModeEnum __fastcall get_Mode(void);
  HRESULT         __fastcall set_Mode(Adodb_xp::ConnectModeEnum plMode/*[in]*/);
  HRESULT         __fastcall get_Provider(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Provider(void);
  HRESULT         __fastcall set_Provider(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                        VARIANT Restrictions/*[in,opt]*/, 
                                        VARIANT SchemaID/*[in,opt]*/, 
                                        Adodb_xp::_Recordset** pprset/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                              VARIANT Restrictions/*[in,opt]*/= TNoParam(), 
                                              VARIANT SchemaID/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);


  __property   BSTR            ConnectionString = {read = get_ConnectionString, write = set_ConnectionString};
  __property   long            CommandTimeout = {read = get_CommandTimeout, write = set_CommandTimeout};
  __property   long            ConnectionTimeout = {read = get_ConnectionTimeout, write = set_ConnectionTimeout};
  __property   BSTR            Version = {read = get_Version};
  __property   Adodb_xp::ErrorsPtr Errors = {read = get_Errors};
  __property   BSTR            DefaultDatabase = {read = get_DefaultDatabase, write = set_DefaultDatabase};
  __property   Adodb_xp::IsolationLevelEnum IsolationLevel = {read = get_IsolationLevel, write = set_IsolationLevel};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::ConnectModeEnum Mode = {read = get_Mode, write = set_Mode};
  __property   BSTR            Provider = {read = get_Provider, write = set_Provider};
  __property   long            State = {read = get_State};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _ConnectionDispT<_Connection> _ConnectionDisp;

typedef TComInterface<Recordset15>  TCOMRecordset15;

// *********************************************************************//
// DispIntf:  Recordset15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050E-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class Recordset15DispT : public TAutoDriver<Recordset15>
{
public:
  Recordset15DispT(){}

  Recordset15DispT(Recordset15 *pintf)
  {
    TAutoDriver<Recordset15>::Bind(pintf, false);
  }

  Recordset15DispT(Recordset15Ptr pintf)
  {
    TAutoDriver<Recordset15>::Bind(pintf, true);
  }

  Recordset15DispT& operator=(Recordset15 *pintf)
  {
    TAutoDriver<Recordset15>::Bind(pintf, false);
    return *this;
  }

  Recordset15DispT& operator=(Recordset15Ptr pintf)
  {
    TAutoDriver<Recordset15>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/);
  Adodb_xp::PositionEnum __fastcall get_AbsolutePosition(void);
  HRESULT         __fastcall set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/);
  HRESULT         __fastcall _set_ActiveConnection(LPDISPATCH pvar/*[in]*/);
  HRESULT         __fastcall set_ActiveConnection(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_ActiveConnection(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_ActiveConnection(void);
  HRESULT         __fastcall get_BOF(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_BOF(void);
  HRESULT         __fastcall get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/);
  VARIANT         __fastcall get_Bookmark(void);
  HRESULT         __fastcall set_Bookmark(VARIANT pvBookmark/*[in]*/);
  HRESULT         __fastcall get_CacheSize(long* pl/*[out,retval]*/);
  long            __fastcall get_CacheSize(void);
  HRESULT         __fastcall set_CacheSize(long pl/*[in]*/);
  HRESULT         __fastcall get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/);
  Adodb_xp::CursorTypeEnum __fastcall get_CursorType(void);
  HRESULT         __fastcall set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/);
  HRESULT         __fastcall get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_EOF_(void);
  HRESULT         __fastcall get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/);
  Adodb_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/);
  Adodb_xp::LockTypeEnum __fastcall get_LockType(void);
  HRESULT         __fastcall set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/);
  HRESULT         __fastcall get_MaxRecords(long* plMaxRecords/*[out,retval]*/);
  long            __fastcall get_MaxRecords(void);
  HRESULT         __fastcall set_MaxRecords(long plMaxRecords/*[in]*/);
  HRESULT         __fastcall get_RecordCount(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordCount(void);
  HRESULT         __fastcall _set_Source(LPDISPATCH pvSource/*[in]*/);
  HRESULT         __fastcall set_Source(BSTR pvSource/*[in]*/);
  HRESULT         __fastcall get_Source(VARIANT* pvSource/*[out,retval]*/);
  VARIANT         __fastcall get_Source(void);
  HRESULT         __fastcall AddNew(VARIANT FieldList/*[in,opt]*/= TNoParam(), 
                                    VARIANT Values/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CancelUpdate();
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                                     VARIANT Fields/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetRows(long Rows/*[in,def,opt]*/, 
                                     VARIANT Start/*[in,opt]*/= TNoParam(), 
                                     VARIANT Fields/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Move(long NumRecords/*[in]*/, VARIANT Start/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall MoveNext();
  HRESULT         __fastcall MovePrevious();
  HRESULT         __fastcall MoveFirst();
  HRESULT         __fastcall MoveLast();
  HRESULT         __fastcall Open(VARIANT Source/*[in,opt]*/, VARIANT ActiveConnection/*[in,opt]*/, 
                                  Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                                  Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                  long Options/*[in,def,opt]*/);
  HRESULT         __fastcall Requery(long Options/*[in,def,opt]*/);
  HRESULT         __fastcall _xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall _Update(VARIANT Fields/*[in,opt]*/= TNoParam(), 
                                     VARIANT Values/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/);
  Adodb_xp::PositionEnum __fastcall get_AbsolutePage(void);
  HRESULT         __fastcall set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/);
  HRESULT         __fastcall get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/);
  Adodb_xp::EditModeEnum __fastcall get_EditMode(void);
  HRESULT         __fastcall get_Filter(VARIANT* Criteria/*[out,retval]*/);
  VARIANT         __fastcall get_Filter(void);
  HRESULT         __fastcall set_Filter(VARIANT Criteria/*[in]*/);
  HRESULT         __fastcall get_PageCount(long* pl/*[out,retval]*/);
  long            __fastcall get_PageCount(void);
  HRESULT         __fastcall get_PageSize(long* pl/*[out,retval]*/);
  long            __fastcall get_PageSize(void);
  HRESULT         __fastcall set_PageSize(long pl/*[in]*/);
  HRESULT         __fastcall get_Sort(BSTR* Criteria/*[out,retval]*/);
  BSTR            __fastcall get_Sort(void);
  HRESULT         __fastcall set_Sort(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall get_Status(long* pl/*[out,retval]*/);
  long            __fastcall get_Status(void);
  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall _xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall _xClone(void);
  HRESULT         __fastcall UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/);
  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void);
  HRESULT         __fastcall set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/);
  HRESULT         __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                           Adodb_xp::_Recordset** ppiRs/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/= TNoParam());
  HRESULT         __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                                      VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/);
  HRESULT         __fastcall get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Collect(VARIANT Index/*[in]*/);
  HRESULT         __fastcall set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/);
  Adodb_xp::MarshalOptionsEnum __fastcall get_MarshalOptions(void);
  HRESULT         __fastcall set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/);
  HRESULT         __fastcall Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                                  Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                                  VARIANT Start/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   Adodb_xp::PositionEnum AbsolutePosition = {read = get_AbsolutePosition, write = set_AbsolutePosition};
  __property   LPDISPATCH      ActiveConnection = {write = _set_ActiveConnection};
  __property   VARIANT_BOOL    BOF = {read = get_BOF};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
  __property   Adodb_xp::CursorTypeEnum CursorType = {read = get_CursorType, write = set_CursorType};
  __property   VARIANT_BOOL    EOF_ = {read = get_EOF_};
  __property   Adodb_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Adodb_xp::LockTypeEnum LockType = {read = get_LockType, write = set_LockType};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   LPDISPATCH      Source = {write = _set_Source};
  __property   Adodb_xp::PositionEnum AbsolutePage = {read = get_AbsolutePage, write = set_AbsolutePage};
  __property   Adodb_xp::EditModeEnum EditMode = {read = get_EditMode};
  __property   long            PageCount = {read = get_PageCount};
  __property   long            PageSize = {read = get_PageSize, write = set_PageSize};
  __property   BSTR            Sort = {read = get_Sort, write = set_Sort};
  __property   long            Status = {read = get_Status};
  __property   long            State = {read = get_State};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::MarshalOptionsEnum MarshalOptions = {read = get_MarshalOptions, write = set_MarshalOptions};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef Recordset15DispT<Recordset15> Recordset15Disp;

typedef TComInterface<Recordset20>  TCOMRecordset20;

// *********************************************************************//
// DispIntf:  Recordset20
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054F-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class Recordset20DispT : public TAutoDriver<Recordset20>
{
public:
  Recordset20DispT(){}

  Recordset20DispT(Recordset20 *pintf)
  {
    TAutoDriver<Recordset20>::Bind(pintf, false);
  }

  Recordset20DispT(Recordset20Ptr pintf)
  {
    TAutoDriver<Recordset20>::Bind(pintf, true);
  }

  Recordset20DispT& operator=(Recordset20 *pintf)
  {
    TAutoDriver<Recordset20>::Bind(pintf, false);
    return *this;
  }

  Recordset20DispT& operator=(Recordset20Ptr pintf)
  {
    TAutoDriver<Recordset20>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall get_DataSource(LPUNKNOWN* ppunkDataSource/*[out,retval]*/);
  LPUNKNOWN       __fastcall get_DataSource(void);
  HRESULT         __fastcall _set_DataSource(LPUNKNOWN ppunkDataSource/*[in]*/);
  HRESULT         __fastcall Save(BSTR FileName/*[in,opt]*/, 
                                  Adodb_xp::PersistFormatEnum PersistFormat/*[in,def,opt]*/);
  HRESULT         __fastcall get_ActiveCommand(LPDISPATCH* ppCmd/*[out,retval]*/);
  LPDISPATCH      __fastcall get_ActiveCommand(void);
  HRESULT         __fastcall set_StayInSync(VARIANT_BOOL pbStayInSync/*[in]*/);
  HRESULT         __fastcall get_StayInSync(VARIANT_BOOL* pbStayInSync/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_StayInSync(void);
  HRESULT         __fastcall GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                                       long NumRows/*[in,def,opt]*/, 
                                       BSTR ColumnDelimeter/*[in,opt]*/, 
                                       BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/, 
                                       BSTR* pRetString/*[out,retval]*/);
  BSTR            __fastcall GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                                       long NumRows/*[in,def,opt]*/, 
                                       BSTR ColumnDelimeter/*[in,opt]*/, 
                                       BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/);
  HRESULT         __fastcall get_DataMember(BSTR* pbstrDataMember/*[out,retval]*/);
  BSTR            __fastcall get_DataMember(void);
  HRESULT         __fastcall set_DataMember(BSTR pbstrDataMember/*[in]*/);
  HRESULT         __fastcall CompareBookmarks(VARIANT Bookmark1/*[in]*/, VARIANT Bookmark2/*[in]*/, 
                                              Adodb_xp::CompareEnum* pCompare/*[out,retval]*/);
  Adodb_xp::CompareEnum __fastcall CompareBookmarks(VARIANT Bookmark1/*[in]*/, 
                                                    VARIANT Bookmark2/*[in]*/);
  HRESULT         __fastcall Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                   Adodb_xp::_Recordset** ppvObject/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/);
  HRESULT         __fastcall Resync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/, 
                                    Adodb_xp::ResyncEnum ResyncValues/*[in,def,opt]*/);
  HRESULT         __fastcall get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/);
  Adodb_xp::PositionEnum __fastcall get_AbsolutePosition(void);
  HRESULT         __fastcall set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/);
  HRESULT         __fastcall _set_ActiveConnection(LPDISPATCH pvar/*[in]*/);
  HRESULT         __fastcall set_ActiveConnection(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_ActiveConnection(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_ActiveConnection(void);
  HRESULT         __fastcall get_BOF(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_BOF(void);
  HRESULT         __fastcall get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/);
  VARIANT         __fastcall get_Bookmark(void);
  HRESULT         __fastcall set_Bookmark(VARIANT pvBookmark/*[in]*/);
  HRESULT         __fastcall get_CacheSize(long* pl/*[out,retval]*/);
  long            __fastcall get_CacheSize(void);
  HRESULT         __fastcall set_CacheSize(long pl/*[in]*/);
  HRESULT         __fastcall get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/);
  Adodb_xp::CursorTypeEnum __fastcall get_CursorType(void);
  HRESULT         __fastcall set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/);
  HRESULT         __fastcall get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_EOF_(void);
  HRESULT         __fastcall get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/);
  Adodb_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/);
  Adodb_xp::LockTypeEnum __fastcall get_LockType(void);
  HRESULT         __fastcall set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/);
  HRESULT         __fastcall get_MaxRecords(long* plMaxRecords/*[out,retval]*/);
  long            __fastcall get_MaxRecords(void);
  HRESULT         __fastcall set_MaxRecords(long plMaxRecords/*[in]*/);
  HRESULT         __fastcall get_RecordCount(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordCount(void);
  HRESULT         __fastcall _set_Source(LPDISPATCH pvSource/*[in]*/);
  HRESULT         __fastcall set_Source(BSTR pvSource/*[in]*/);
  HRESULT         __fastcall get_Source(VARIANT* pvSource/*[out,retval]*/);
  VARIANT         __fastcall get_Source(void);
  HRESULT         __fastcall AddNew(VARIANT FieldList/*[in,opt]*/= TNoParam(), 
                                    VARIANT Values/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CancelUpdate();
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                                     VARIANT Fields/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetRows(long Rows/*[in,def,opt]*/, 
                                     VARIANT Start/*[in,opt]*/= TNoParam(), 
                                     VARIANT Fields/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Move(long NumRecords/*[in]*/, VARIANT Start/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall MoveNext();
  HRESULT         __fastcall MovePrevious();
  HRESULT         __fastcall MoveFirst();
  HRESULT         __fastcall MoveLast();
  HRESULT         __fastcall Open(VARIANT Source/*[in,opt]*/, VARIANT ActiveConnection/*[in,opt]*/, 
                                  Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                                  Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                  long Options/*[in,def,opt]*/);
  HRESULT         __fastcall Requery(long Options/*[in,def,opt]*/);
  HRESULT         __fastcall _xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall _Update(VARIANT Fields/*[in,opt]*/= TNoParam(), 
                                     VARIANT Values/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/);
  Adodb_xp::PositionEnum __fastcall get_AbsolutePage(void);
  HRESULT         __fastcall set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/);
  HRESULT         __fastcall get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/);
  Adodb_xp::EditModeEnum __fastcall get_EditMode(void);
  HRESULT         __fastcall get_Filter(VARIANT* Criteria/*[out,retval]*/);
  VARIANT         __fastcall get_Filter(void);
  HRESULT         __fastcall set_Filter(VARIANT Criteria/*[in]*/);
  HRESULT         __fastcall get_PageCount(long* pl/*[out,retval]*/);
  long            __fastcall get_PageCount(void);
  HRESULT         __fastcall get_PageSize(long* pl/*[out,retval]*/);
  long            __fastcall get_PageSize(void);
  HRESULT         __fastcall set_PageSize(long pl/*[in]*/);
  HRESULT         __fastcall get_Sort(BSTR* Criteria/*[out,retval]*/);
  BSTR            __fastcall get_Sort(void);
  HRESULT         __fastcall set_Sort(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall get_Status(long* pl/*[out,retval]*/);
  long            __fastcall get_Status(void);
  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall _xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall _xClone(void);
  HRESULT         __fastcall UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/);
  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void);
  HRESULT         __fastcall set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/);
  HRESULT         __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                           Adodb_xp::_Recordset** ppiRs/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/= TNoParam());
  HRESULT         __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                                      VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/);
  HRESULT         __fastcall get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Collect(VARIANT Index/*[in]*/);
  HRESULT         __fastcall set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/);
  Adodb_xp::MarshalOptionsEnum __fastcall get_MarshalOptions(void);
  HRESULT         __fastcall set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/);
  HRESULT         __fastcall Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                                  Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                                  VARIANT Start/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   LPUNKNOWN       DataSource = {read = get_DataSource, write = _set_DataSource};
  __property   LPDISPATCH      ActiveCommand = {read = get_ActiveCommand};
  __property   VARIANT_BOOL    StayInSync = {read = get_StayInSync, write = set_StayInSync};
  __property   BSTR            DataMember = {read = get_DataMember, write = set_DataMember};

  __property   Adodb_xp::PositionEnum AbsolutePosition = {read = get_AbsolutePosition, write = set_AbsolutePosition};
  __property   LPDISPATCH      ActiveConnection = {write = _set_ActiveConnection};
  __property   VARIANT_BOOL    BOF = {read = get_BOF};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
  __property   Adodb_xp::CursorTypeEnum CursorType = {read = get_CursorType, write = set_CursorType};
  __property   VARIANT_BOOL    EOF_ = {read = get_EOF_};
  __property   Adodb_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Adodb_xp::LockTypeEnum LockType = {read = get_LockType, write = set_LockType};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   LPDISPATCH      Source = {write = _set_Source};
  __property   Adodb_xp::PositionEnum AbsolutePage = {read = get_AbsolutePage, write = set_AbsolutePage};
  __property   Adodb_xp::EditModeEnum EditMode = {read = get_EditMode};
  __property   long            PageCount = {read = get_PageCount};
  __property   long            PageSize = {read = get_PageSize, write = set_PageSize};
  __property   BSTR            Sort = {read = get_Sort, write = set_Sort};
  __property   long            Status = {read = get_Status};
  __property   long            State = {read = get_State};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::MarshalOptionsEnum MarshalOptions = {read = get_MarshalOptions, write = set_MarshalOptions};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef Recordset20DispT<Recordset20> Recordset20Disp;

// *********************************************************************//
// SmartIntf: TCOM_Recordset
// Interface: _Recordset
// *********************************************************************//
template <class T /* _Recordset */ >
class TCOM_RecordsetT : public TComInterface<_Recordset>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_RecordsetT() {}
  TCOM_RecordsetT(_Recordset *intf, bool addRef = false) : TComInterface<_Recordset>(intf, addRef) {}
  TCOM_RecordsetT(const TCOM_RecordsetT& src) : TComInterface<_Recordset>(src) {}
  TCOM_RecordsetT& operator=(const TCOM_RecordsetT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall Seek(VARIANT KeyValues/*[in]*/, 
                                  Adodb_xp::SeekEnum SeekOption/*[in,def,opt]*/);
  HRESULT         __fastcall set_Index(BSTR pbstrIndex/*[in]*/);
  HRESULT         __fastcall get_Index(BSTR* pbstrIndex/*[out,retval]*/);
  BSTR            __fastcall get_Index(void);

  __property   BSTR            Index = {read = get_Index, write = set_Index};
};
typedef TCOM_RecordsetT<_Recordset> TCOM_Recordset;

// *********************************************************************//
// DispIntf:  _Recordset
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000555-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _RecordsetDispT : public TAutoDriver<_Recordset>
{
public:
  _RecordsetDispT(){}

  _RecordsetDispT(_Recordset *pintf)
  {
    TAutoDriver<_Recordset>::Bind(pintf, false);
  }

  _RecordsetDispT(_RecordsetPtr pintf)
  {
    TAutoDriver<_Recordset>::Bind(pintf, true);
  }

  _RecordsetDispT& operator=(_Recordset *pintf)
  {
    TAutoDriver<_Recordset>::Bind(pintf, false);
    return *this;
  }

  _RecordsetDispT& operator=(_RecordsetPtr pintf)
  {
    TAutoDriver<_Recordset>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Recordset));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Recordset);
  }

  HRESULT         __fastcall Seek(VARIANT KeyValues/*[in]*/, 
                                  Adodb_xp::SeekEnum SeekOption/*[in,def,opt]*/);
  HRESULT         __fastcall set_Index(BSTR pbstrIndex/*[in]*/);
  HRESULT         __fastcall get_Index(BSTR* pbstrIndex/*[out,retval]*/);
  BSTR            __fastcall get_Index(void);
  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall get_DataSource(LPUNKNOWN* ppunkDataSource/*[out,retval]*/);
  LPUNKNOWN       __fastcall get_DataSource(void);
  HRESULT         __fastcall _set_DataSource(LPUNKNOWN ppunkDataSource/*[in]*/);
  HRESULT         __fastcall Save(BSTR FileName/*[in,opt]*/, 
                                  Adodb_xp::PersistFormatEnum PersistFormat/*[in,def,opt]*/);
  HRESULT         __fastcall get_ActiveCommand(LPDISPATCH* ppCmd/*[out,retval]*/);
  LPDISPATCH      __fastcall get_ActiveCommand(void);
  HRESULT         __fastcall set_StayInSync(VARIANT_BOOL pbStayInSync/*[in]*/);
  HRESULT         __fastcall get_StayInSync(VARIANT_BOOL* pbStayInSync/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_StayInSync(void);
  HRESULT         __fastcall GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                                       long NumRows/*[in,def,opt]*/, 
                                       BSTR ColumnDelimeter/*[in,opt]*/, 
                                       BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/, 
                                       BSTR* pRetString/*[out,retval]*/);
  BSTR            __fastcall GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                                       long NumRows/*[in,def,opt]*/, 
                                       BSTR ColumnDelimeter/*[in,opt]*/, 
                                       BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/);
  HRESULT         __fastcall get_DataMember(BSTR* pbstrDataMember/*[out,retval]*/);
  BSTR            __fastcall get_DataMember(void);
  HRESULT         __fastcall set_DataMember(BSTR pbstrDataMember/*[in]*/);
  HRESULT         __fastcall CompareBookmarks(VARIANT Bookmark1/*[in]*/, VARIANT Bookmark2/*[in]*/, 
                                              Adodb_xp::CompareEnum* pCompare/*[out,retval]*/);
  Adodb_xp::CompareEnum __fastcall CompareBookmarks(VARIANT Bookmark1/*[in]*/, 
                                                    VARIANT Bookmark2/*[in]*/);
  HRESULT         __fastcall Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                   Adodb_xp::_Recordset** ppvObject/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/);
  HRESULT         __fastcall Resync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/, 
                                    Adodb_xp::ResyncEnum ResyncValues/*[in,def,opt]*/);
  HRESULT         __fastcall get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/);
  Adodb_xp::PositionEnum __fastcall get_AbsolutePosition(void);
  HRESULT         __fastcall set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/);
  HRESULT         __fastcall _set_ActiveConnection(LPDISPATCH pvar/*[in]*/);
  HRESULT         __fastcall set_ActiveConnection(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_ActiveConnection(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_ActiveConnection(void);
  HRESULT         __fastcall get_BOF(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_BOF(void);
  HRESULT         __fastcall get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/);
  VARIANT         __fastcall get_Bookmark(void);
  HRESULT         __fastcall set_Bookmark(VARIANT pvBookmark/*[in]*/);
  HRESULT         __fastcall get_CacheSize(long* pl/*[out,retval]*/);
  long            __fastcall get_CacheSize(void);
  HRESULT         __fastcall set_CacheSize(long pl/*[in]*/);
  HRESULT         __fastcall get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/);
  Adodb_xp::CursorTypeEnum __fastcall get_CursorType(void);
  HRESULT         __fastcall set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/);
  HRESULT         __fastcall get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_EOF_(void);
  HRESULT         __fastcall get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/);
  Adodb_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/);
  Adodb_xp::LockTypeEnum __fastcall get_LockType(void);
  HRESULT         __fastcall set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/);
  HRESULT         __fastcall get_MaxRecords(long* plMaxRecords/*[out,retval]*/);
  long            __fastcall get_MaxRecords(void);
  HRESULT         __fastcall set_MaxRecords(long plMaxRecords/*[in]*/);
  HRESULT         __fastcall get_RecordCount(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordCount(void);
  HRESULT         __fastcall _set_Source(LPDISPATCH pvSource/*[in]*/);
  HRESULT         __fastcall set_Source(BSTR pvSource/*[in]*/);
  HRESULT         __fastcall get_Source(VARIANT* pvSource/*[out,retval]*/);
  VARIANT         __fastcall get_Source(void);
  HRESULT         __fastcall AddNew(VARIANT FieldList/*[in,opt]*/= TNoParam(), 
                                    VARIANT Values/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CancelUpdate();
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                                     VARIANT Fields/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetRows(long Rows/*[in,def,opt]*/, 
                                     VARIANT Start/*[in,opt]*/= TNoParam(), 
                                     VARIANT Fields/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Move(long NumRecords/*[in]*/, VARIANT Start/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall MoveNext();
  HRESULT         __fastcall MovePrevious();
  HRESULT         __fastcall MoveFirst();
  HRESULT         __fastcall MoveLast();
  HRESULT         __fastcall Open(VARIANT Source/*[in,opt]*/, VARIANT ActiveConnection/*[in,opt]*/, 
                                  Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                                  Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                                  long Options/*[in,def,opt]*/);
  HRESULT         __fastcall Requery(long Options/*[in,def,opt]*/);
  HRESULT         __fastcall _xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall _Update(VARIANT Fields/*[in,opt]*/= TNoParam(), 
                                     VARIANT Values/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/);
  Adodb_xp::PositionEnum __fastcall get_AbsolutePage(void);
  HRESULT         __fastcall set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/);
  HRESULT         __fastcall get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/);
  Adodb_xp::EditModeEnum __fastcall get_EditMode(void);
  HRESULT         __fastcall get_Filter(VARIANT* Criteria/*[out,retval]*/);
  VARIANT         __fastcall get_Filter(void);
  HRESULT         __fastcall set_Filter(VARIANT Criteria/*[in]*/);
  HRESULT         __fastcall get_PageCount(long* pl/*[out,retval]*/);
  long            __fastcall get_PageCount(void);
  HRESULT         __fastcall get_PageSize(long* pl/*[out,retval]*/);
  long            __fastcall get_PageSize(void);
  HRESULT         __fastcall set_PageSize(long pl/*[in]*/);
  HRESULT         __fastcall get_Sort(BSTR* Criteria/*[out,retval]*/);
  BSTR            __fastcall get_Sort(void);
  HRESULT         __fastcall set_Sort(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall get_Status(long* pl/*[out,retval]*/);
  long            __fastcall get_Status(void);
  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall _xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall _xClone(void);
  HRESULT         __fastcall UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/);
  HRESULT         __fastcall get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/);
  Adodb_xp::CursorLocationEnum __fastcall get_CursorLocation(void);
  HRESULT         __fastcall set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/);
  HRESULT         __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                           Adodb_xp::_Recordset** ppiRs/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/= TNoParam());
  HRESULT         __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                                      VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/);
  HRESULT         __fastcall get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Collect(VARIANT Index/*[in]*/);
  HRESULT         __fastcall set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/);
  Adodb_xp::MarshalOptionsEnum __fastcall get_MarshalOptions(void);
  HRESULT         __fastcall set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/);
  HRESULT         __fastcall Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                                  Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                                  VARIANT Start/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Index = {read = get_Index, write = set_Index};

  __property   LPUNKNOWN       DataSource = {read = get_DataSource, write = _set_DataSource};
  __property   LPDISPATCH      ActiveCommand = {read = get_ActiveCommand};
  __property   VARIANT_BOOL    StayInSync = {read = get_StayInSync, write = set_StayInSync};
  __property   BSTR            DataMember = {read = get_DataMember, write = set_DataMember};

  __property   Adodb_xp::PositionEnum AbsolutePosition = {read = get_AbsolutePosition, write = set_AbsolutePosition};
  __property   LPDISPATCH      ActiveConnection = {write = _set_ActiveConnection};
  __property   VARIANT_BOOL    BOF = {read = get_BOF};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
  __property   Adodb_xp::CursorTypeEnum CursorType = {read = get_CursorType, write = set_CursorType};
  __property   VARIANT_BOOL    EOF_ = {read = get_EOF_};
  __property   Adodb_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Adodb_xp::LockTypeEnum LockType = {read = get_LockType, write = set_LockType};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   LPDISPATCH      Source = {write = _set_Source};
  __property   Adodb_xp::PositionEnum AbsolutePage = {read = get_AbsolutePage, write = set_AbsolutePage};
  __property   Adodb_xp::EditModeEnum EditMode = {read = get_EditMode};
  __property   long            PageCount = {read = get_PageCount};
  __property   long            PageSize = {read = get_PageSize, write = set_PageSize};
  __property   BSTR            Sort = {read = get_Sort, write = set_Sort};
  __property   long            Status = {read = get_Status};
  __property   long            State = {read = get_State};
  __property   Adodb_xp::CursorLocationEnum CursorLocation = {read = get_CursorLocation, write = set_CursorLocation};
  __property   Adodb_xp::MarshalOptionsEnum MarshalOptions = {read = get_MarshalOptions, write = set_MarshalOptions};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _RecordsetDispT<_Recordset> _RecordsetDisp;

typedef TComInterface<Fields15>  TCOMFields15;

// *********************************************************************//
// DispIntf:  Fields15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000506-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class Fields15DispT : public TAutoDriver<Fields15>
{
public:
  Fields15DispT(){}

  Fields15DispT(Fields15 *pintf)
  {
    TAutoDriver<Fields15>::Bind(pintf, false);
  }

  Fields15DispT(Fields15Ptr pintf)
  {
    TAutoDriver<Fields15>::Bind(pintf, true);
  }

  Fields15DispT& operator=(Fields15 *pintf)
  {
    TAutoDriver<Fields15>::Bind(pintf, false);
    return *this;
  }

  Fields15DispT& operator=(Fields15Ptr pintf)
  {
    TAutoDriver<Fields15>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Adodb_xp::Field** ppvObject/*[out,retval]*/);
  Adodb_xp::Field* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   long            Count = {read = get_Count};
};
typedef Fields15DispT<Fields15> Fields15Disp;

typedef TComInterface<Fields>  TCOMFields;

// *********************************************************************//
// DispIntf:  Fields
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class FieldsDispT : public TAutoDriver<Fields>
{
public:
  FieldsDispT(){}

  FieldsDispT(Fields *pintf)
  {
    TAutoDriver<Fields>::Bind(pintf, false);
  }

  FieldsDispT(FieldsPtr pintf)
  {
    TAutoDriver<Fields>::Bind(pintf, true);
  }

  FieldsDispT& operator=(Fields *pintf)
  {
    TAutoDriver<Fields>::Bind(pintf, false);
    return *this;
  }

  FieldsDispT& operator=(FieldsPtr pintf)
  {
    TAutoDriver<Fields>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall Append(BSTR Name/*[in]*/, Adodb_xp::DataTypeEnum Type/*[in]*/, 
                                    long DefinedSize/*[in,def,opt]*/, 
                                    Adodb_xp::FieldAttributeEnum Attrib/*[in,def,opt]*/);
  HRESULT         __fastcall Delete(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Adodb_xp::Field** ppvObject/*[out,retval]*/);
  Adodb_xp::Field* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   long            Count = {read = get_Count};
};
typedef FieldsDispT<Fields> FieldsDisp;

typedef TComInterface<Field>  TCOMField;

// *********************************************************************//
// DispIntf:  Field
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054C-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class FieldDispT : public TAutoDriver<Field>
{
public:
  FieldDispT(){}

  FieldDispT(Field *pintf)
  {
    TAutoDriver<Field>::Bind(pintf, false);
  }

  FieldDispT(FieldPtr pintf)
  {
    TAutoDriver<Field>::Bind(pintf, true);
  }

  FieldDispT& operator=(Field *pintf)
  {
    TAutoDriver<Field>::Bind(pintf, false);
    return *this;
  }

  FieldDispT& operator=(FieldPtr pintf)
  {
    TAutoDriver<Field>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_ActualSize(long* pl/*[out,retval]*/);
  long            __fastcall get_ActualSize(void);
  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall get_DefinedSize(long* pl/*[out,retval]*/);
  long            __fastcall get_DefinedSize(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Type(Adodb_xp::DataTypeEnum* pDataType/*[out,retval]*/);
  Adodb_xp::DataTypeEnum __fastcall get_Type(void);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Precision(unsigned_char* pbPrecision/*[out,retval]*/);
  unsigned_char   __fastcall get_Precision(void);
  HRESULT         __fastcall get_NumericScale(unsigned_char* pbNumericScale/*[out,retval]*/);
  unsigned_char   __fastcall get_NumericScale(void);
  HRESULT         __fastcall AppendChunk(VARIANT Data/*[in]*/);
  HRESULT         __fastcall GetChunk(long Length/*[in]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetChunk(long Length/*[in]*/);
  HRESULT         __fastcall get_OriginalValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_OriginalValue(void);
  HRESULT         __fastcall get_UnderlyingValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_UnderlyingValue(void);
  HRESULT         __fastcall get_DataFormat(LPUNKNOWN* ppiDF/*[out,retval]*/);
  LPUNKNOWN       __fastcall get_DataFormat(void);
  HRESULT         __fastcall _set_DataFormat(LPUNKNOWN ppiDF/*[in]*/);
  HRESULT         __fastcall set_Precision(unsigned_char pbPrecision/*[in]*/);
  HRESULT         __fastcall set_NumericScale(unsigned_char pbNumericScale/*[in]*/);
  HRESULT         __fastcall set_Type(Adodb_xp::DataTypeEnum pDataType/*[in]*/);
  HRESULT         __fastcall set_DefinedSize(long pl/*[in]*/);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   long            ActualSize = {read = get_ActualSize};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   long            DefinedSize = {read = get_DefinedSize, write = set_DefinedSize};
  __property   BSTR            Name = {read = get_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type, write = set_Type};
  __property   unsigned_char   Precision = {read = get_Precision, write = set_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale, write = set_NumericScale};
  __property   LPUNKNOWN       DataFormat = {read = get_DataFormat, write = _set_DataFormat};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef FieldDispT<Field> FieldDisp;

// *********************************************************************//
// SmartIntf: TCOM_Parameter
// Interface: _Parameter
// *********************************************************************//
template <class T /* _Parameter */ >
class TCOM_ParameterT : public TComInterface<_Parameter>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_ParameterT() {}
  TCOM_ParameterT(_Parameter *intf, bool addRef = false) : TComInterface<_Parameter>(intf, addRef) {}
  TCOM_ParameterT(const TCOM_ParameterT& src) : TComInterface<_Parameter>(src) {}
  TCOM_ParameterT& operator=(const TCOM_ParameterT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Type(Adodb_xp::DataTypeEnum* psDataType/*[out,retval]*/);
  Adodb_xp::DataTypeEnum __fastcall get_Type(void);
  HRESULT         __fastcall set_Type(Adodb_xp::DataTypeEnum psDataType/*[in]*/);
  HRESULT         __fastcall set_Direction(Adodb_xp::ParameterDirectionEnum plParmDirection/*[in]*/);
  HRESULT         __fastcall get_Direction(Adodb_xp::ParameterDirectionEnum* plParmDirection/*[out,retval]*/);
  Adodb_xp::ParameterDirectionEnum __fastcall get_Direction(void);
  HRESULT         __fastcall set_Precision(unsigned_char pbPrecision/*[in]*/);
  HRESULT         __fastcall get_Precision(unsigned_char* pbPrecision/*[out,retval]*/);
  unsigned_char   __fastcall get_Precision(void);
  HRESULT         __fastcall set_NumericScale(unsigned_char pbScale/*[in]*/);
  HRESULT         __fastcall get_NumericScale(unsigned_char* pbScale/*[out,retval]*/);
  unsigned_char   __fastcall get_NumericScale(void);
  HRESULT         __fastcall set_Size(long pl/*[in]*/);
  HRESULT         __fastcall get_Size(long* pl/*[out,retval]*/);
  long            __fastcall get_Size(void);
  HRESULT         __fastcall AppendChunk(VARIANT Val/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* plParmAttribs/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long plParmAttribs/*[in]*/);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type, write = set_Type};
  __property   Adodb_xp::ParameterDirectionEnum Direction = {read = get_Direction, write = set_Direction};
  __property   unsigned_char   Precision = {read = get_Precision, write = set_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale, write = set_NumericScale};
  __property   long            Size = {read = get_Size, write = set_Size};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
};
typedef TCOM_ParameterT<_Parameter> TCOM_Parameter;

// *********************************************************************//
// DispIntf:  _Parameter
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050C-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _ParameterDispT : public TAutoDriver<_Parameter>
{
public:
  _ParameterDispT(){}

  _ParameterDispT(_Parameter *pintf)
  {
    TAutoDriver<_Parameter>::Bind(pintf, false);
  }

  _ParameterDispT(_ParameterPtr pintf)
  {
    TAutoDriver<_Parameter>::Bind(pintf, true);
  }

  _ParameterDispT& operator=(_Parameter *pintf)
  {
    TAutoDriver<_Parameter>::Bind(pintf, false);
    return *this;
  }

  _ParameterDispT& operator=(_ParameterPtr pintf)
  {
    TAutoDriver<_Parameter>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Parameter));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Parameter);
  }

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Type(Adodb_xp::DataTypeEnum* psDataType/*[out,retval]*/);
  Adodb_xp::DataTypeEnum __fastcall get_Type(void);
  HRESULT         __fastcall set_Type(Adodb_xp::DataTypeEnum psDataType/*[in]*/);
  HRESULT         __fastcall set_Direction(Adodb_xp::ParameterDirectionEnum plParmDirection/*[in]*/);
  HRESULT         __fastcall get_Direction(Adodb_xp::ParameterDirectionEnum* plParmDirection/*[out,retval]*/);
  Adodb_xp::ParameterDirectionEnum __fastcall get_Direction(void);
  HRESULT         __fastcall set_Precision(unsigned_char pbPrecision/*[in]*/);
  HRESULT         __fastcall get_Precision(unsigned_char* pbPrecision/*[out,retval]*/);
  unsigned_char   __fastcall get_Precision(void);
  HRESULT         __fastcall set_NumericScale(unsigned_char pbScale/*[in]*/);
  HRESULT         __fastcall get_NumericScale(unsigned_char* pbScale/*[out,retval]*/);
  unsigned_char   __fastcall get_NumericScale(void);
  HRESULT         __fastcall set_Size(long pl/*[in]*/);
  HRESULT         __fastcall get_Size(long* pl/*[out,retval]*/);
  long            __fastcall get_Size(void);
  HRESULT         __fastcall AppendChunk(VARIANT Val/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* plParmAttribs/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long plParmAttribs/*[in]*/);
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type, write = set_Type};
  __property   Adodb_xp::ParameterDirectionEnum Direction = {read = get_Direction, write = set_Direction};
  __property   unsigned_char   Precision = {read = get_Precision, write = set_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale, write = set_NumericScale};
  __property   long            Size = {read = get_Size, write = set_Size};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _ParameterDispT<_Parameter> _ParameterDisp;

typedef TComInterface<Parameters>  TCOMParameters;

// *********************************************************************//
// DispIntf:  Parameters
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class ParametersDispT : public TAutoDriver<Parameters>
{
public:
  ParametersDispT(){}

  ParametersDispT(Parameters *pintf)
  {
    TAutoDriver<Parameters>::Bind(pintf, false);
  }

  ParametersDispT(ParametersPtr pintf)
  {
    TAutoDriver<Parameters>::Bind(pintf, true);
  }

  ParametersDispT& operator=(Parameters *pintf)
  {
    TAutoDriver<Parameters>::Bind(pintf, false);
    return *this;
  }

  ParametersDispT& operator=(ParametersPtr pintf)
  {
    TAutoDriver<Parameters>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Adodb_xp::_Parameter** ppvObject/*[out,retval]*/);
  Adodb_xp::_Parameter* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* c/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   long            Count = {read = get_Count};
};
typedef ParametersDispT<Parameters> ParametersDisp;

// *********************************************************************//
// SmartIntf: TCOM_Command
// Interface: _Command
// *********************************************************************//
template <class T /* _Command */ >
class TCOM_CommandT : public TComInterface<_Command>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_CommandT() {}
  TCOM_CommandT(_Command *intf, bool addRef = false) : TComInterface<_Command>(intf, addRef) {}
  TCOM_CommandT(const TCOM_CommandT& src) : TComInterface<_Command>(src) {}
  TCOM_CommandT& operator=(const TCOM_CommandT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall Cancel(void);

  __property   long            State = {read = get_State};
};
typedef TCOM_CommandT<_Command> TCOM_Command;

// *********************************************************************//
// DispIntf:  _Command
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054E-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class _CommandDispT : public TAutoDriver<_Command>
{
public:
  _CommandDispT(){}

  _CommandDispT(_Command *pintf)
  {
    TAutoDriver<_Command>::Bind(pintf, false);
  }

  _CommandDispT(_CommandPtr pintf)
  {
    TAutoDriver<_Command>::Bind(pintf, true);
  }

  _CommandDispT& operator=(_Command *pintf)
  {
    TAutoDriver<_Command>::Bind(pintf, false);
    return *this;
  }

  _CommandDispT& operator=(_CommandPtr pintf)
  {
    TAutoDriver<_Command>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Command));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Command);
  }

  HRESULT         __fastcall get_State(long* plObjState/*[out,retval]*/);
  long            __fastcall get_State(void);
  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall get_ActiveConnection(Adodb_xp::_Connection** ppvObject/*[out,retval]*/);
  Adodb_xp::_ConnectionPtr __fastcall get_ActiveConnection(void);
  HRESULT         __fastcall _set_ActiveConnection(Adodb_xp::_Connection* ppvObject/*[in]*/);
  HRESULT         __fastcall set_ActiveConnection(VARIANT ppvObject/*[in]*/);
  HRESULT         __fastcall get_CommandText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_CommandText(void);
  HRESULT         __fastcall set_CommandText(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_CommandTimeout(long* pl/*[out,retval]*/);
  long            __fastcall get_CommandTimeout(void);
  HRESULT         __fastcall set_CommandTimeout(long pl/*[in]*/);
  HRESULT         __fastcall get_Prepared(VARIANT_BOOL* pfPrepared/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Prepared(void);
  HRESULT         __fastcall set_Prepared(VARIANT_BOOL pfPrepared/*[in]*/);
  HRESULT         __fastcall Execute(VARIANT* RecordsAffected/*[out,opt]*/, 
                                     VARIANT* Parameters/*[in,opt]*/, long Options/*[in,def,opt]*/, 
                                     Adodb_xp::_Recordset** ppiRs/*[out,retval]*/);
  Adodb_xp::_Recordset* __fastcall Execute(VARIANT* RecordsAffected/*[out,opt]*/, 
                                           VARIANT* Parameters/*[in,opt]*/, 
                                           long Options/*[in,def,opt]*/);
  HRESULT         __fastcall CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                             Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                             Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/
                                             , long Size/*[in,def,opt]*/, VARIANT Value/*[in,opt]*/
                                             , Adodb_xp::_Parameter** ppiprm/*[out,retval]*/);
  Adodb_xp::_Parameter* __fastcall CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                                   Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                                   Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                                   long Size/*[in,def,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Parameters(Adodb_xp::Parameters** ppvObject/*[out,retval]*/);
  Adodb_xp::ParametersPtr __fastcall get_Parameters(void);
  HRESULT         __fastcall set_CommandType(Adodb_xp::CommandTypeEnum plCmdType/*[in]*/);
  HRESULT         __fastcall get_CommandType(Adodb_xp::CommandTypeEnum* plCmdType/*[out,retval]*/);
  Adodb_xp::CommandTypeEnum __fastcall get_CommandType(void);
  HRESULT         __fastcall get_Name(BSTR* pbstrName/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstrName/*[in]*/);
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   long            State = {read = get_State};

  __property   Adodb_xp::_ConnectionPtr ActiveConnection = {read = get_ActiveConnection};
  __property   BSTR            CommandText = {read = get_CommandText, write = set_CommandText};
  __property   long            CommandTimeout = {read = get_CommandTimeout, write = set_CommandTimeout};
  __property   VARIANT_BOOL    Prepared = {read = get_Prepared, write = set_Prepared};
  __property   Adodb_xp::ParametersPtr Parameters = {read = get_Parameters};
  __property   Adodb_xp::CommandTypeEnum CommandType = {read = get_CommandType, write = set_CommandType};
  __property   BSTR            Name = {read = get_Name, write = set_Name};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _CommandDispT<_Command> _CommandDisp;

typedef TComInterface<ConnectionEventsVt>  TCOMConnectionEventsVt;

typedef TComInterface<RecordsetEventsVt>  TCOMRecordsetEventsVt;

// *********************************************************************//
// DispIntf:  ConnectionEvents
// Flags:     (4096) Dispatchable
// GUID:      {00000400-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T>
class ConnectionEventsDispT : public TAutoDriver<ConnectionEvents>
{
public:
  ConnectionEventsDispT(){}

  void Attach(LPUNKNOWN punk)
  { m_Dispatch = static_cast<T*>(punk); }

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

};
typedef ConnectionEventsDispT<ConnectionEvents> ConnectionEventsDisp;

// *********************************************************************//
// DispIntf:  RecordsetEvents
// Flags:     (4096) Dispatchable
// GUID:      {00000266-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T>
class RecordsetEventsDispT : public TAutoDriver<RecordsetEvents>
{
public:
  RecordsetEventsDispT(){}

  void Attach(LPUNKNOWN punk)
  { m_Dispatch = static_cast<T*>(punk); }

  HRESULT         __fastcall WillChangeField(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                             Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                             Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall FieldChangeComplete(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                                 Adodb_xp::Error* pError/*[in]*/, 
                                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                 Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall WillChangeRecord(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                              long cRecords/*[in]*/, 
                                              Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                              Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall RecordChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                  long cRecords/*[in]*/, 
                                                  Adodb_xp::Error* pError/*[in]*/, 
                                                  Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                  Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall WillChangeRecordset(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                 Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall RecordsetChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                     Adodb_xp::Error* pError/*[in]*/, 
                                                     Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/
                                                     , Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall WillMove(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                      Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                      Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall MoveComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                          Adodb_xp::Error* pError/*[in]*/, 
                                          Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                          Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall EndOfRecordset(VARIANT_BOOL* fMoreData/*[in,out]*/, 
                                            Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                            Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall FetchProgress(long Progress/*[in]*/, long MaxProgress/*[in]*/, 
                                           Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                           Adodb_xp::_Recordset* pRecordset/*[in]*/);
  HRESULT         __fastcall FetchComplete(Adodb_xp::Error* pError/*[in]*/, 
                                           Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                           Adodb_xp::_Recordset* pRecordset/*[in]*/);

};
typedef RecordsetEventsDispT<RecordsetEvents> RecordsetEventsDisp;

typedef TComInterface<ADOConnectionConstruction15>  TCOMADOConnectionConstruction15;

typedef TComInterface<ADOConnectionConstruction>  TCOMADOConnectionConstruction;

typedef TComInterface<ADOCommandConstruction>  TCOMADOCommandConstruction;

// *********************************************************************//
// DispIntf:  ADORecordsetConstruction
// Flags:     (4608) Restricted Dispatchable
// GUID:      {00000283-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class ADORecordsetConstructionDispT : public TAutoDriver<ADORecordsetConstruction>
{
public:
  ADORecordsetConstructionDispT(){}

  ADORecordsetConstructionDispT(ADORecordsetConstruction *pintf)
  {
    TAutoDriver<ADORecordsetConstruction>::Bind(pintf, false);
  }

  ADORecordsetConstructionDispT(ADORecordsetConstructionPtr pintf)
  {
    TAutoDriver<ADORecordsetConstruction>::Bind(pintf, true);
  }

  ADORecordsetConstructionDispT& operator=(ADORecordsetConstruction *pintf)
  {
    TAutoDriver<ADORecordsetConstruction>::Bind(pintf, false);
    return *this;
  }

  ADORecordsetConstructionDispT& operator=(ADORecordsetConstructionPtr pintf)
  {
    TAutoDriver<ADORecordsetConstruction>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Rowset(LPUNKNOWN* ppRowset/*[out,retval]*/);
  LPUNKNOWN       __fastcall get_Rowset(void);
  HRESULT         __fastcall set_Rowset(LPUNKNOWN ppRowset/*[in]*/);
  HRESULT         __fastcall get_Chapter(long* plChapter/*[out,retval]*/);
  long            __fastcall get_Chapter(void);
  HRESULT         __fastcall set_Chapter(long plChapter/*[in]*/);
  HRESULT         __fastcall get_RowPosition(LPUNKNOWN* ppRowPos/*[out,retval]*/);
  LPUNKNOWN       __fastcall get_RowPosition(void);
  HRESULT         __fastcall set_RowPosition(LPUNKNOWN ppRowPos/*[in]*/);

  __property   LPUNKNOWN       Rowset = {read = get_Rowset, write = set_Rowset};
  __property   long            Chapter = {read = get_Chapter, write = set_Chapter};
  __property   LPUNKNOWN       RowPosition = {read = get_RowPosition, write = set_RowPosition};
};
typedef ADORecordsetConstructionDispT<ADORecordsetConstruction> ADORecordsetConstructionDisp;

typedef TComInterface<Field15>  TCOMField15;

// *********************************************************************//
// DispIntf:  Field15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000505-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template<class T>
class Field15DispT : public TAutoDriver<Field15>
{
public:
  Field15DispT(){}

  Field15DispT(Field15 *pintf)
  {
    TAutoDriver<Field15>::Bind(pintf, false);
  }

  Field15DispT(Field15Ptr pintf)
  {
    TAutoDriver<Field15>::Bind(pintf, true);
  }

  Field15DispT& operator=(Field15 *pintf)
  {
    TAutoDriver<Field15>::Bind(pintf, false);
    return *this;
  }

  Field15DispT& operator=(Field15Ptr pintf)
  {
    TAutoDriver<Field15>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_ActualSize(long* pl/*[out,retval]*/);
  long            __fastcall get_ActualSize(void);
  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall get_DefinedSize(long* pl/*[out,retval]*/);
  long            __fastcall get_DefinedSize(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Type(Adodb_xp::DataTypeEnum* pDataType/*[out,retval]*/);
  Adodb_xp::DataTypeEnum __fastcall get_Type(void);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Precision(unsigned_char* pbPrecision/*[out,retval]*/);
  unsigned_char   __fastcall get_Precision(void);
  HRESULT         __fastcall get_NumericScale(unsigned_char* pbNumericScale/*[out,retval]*/);
  unsigned_char   __fastcall get_NumericScale(void);
  HRESULT         __fastcall AppendChunk(VARIANT Data/*[in]*/);
  HRESULT         __fastcall GetChunk(long Length/*[in]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetChunk(long Length/*[in]*/);
  HRESULT         __fastcall get_OriginalValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_OriginalValue(void);
  HRESULT         __fastcall get_UnderlyingValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_UnderlyingValue(void);
  HRESULT         __fastcall get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/);
  Adodb_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   long            ActualSize = {read = get_ActualSize};
  __property   long            Attributes = {read = get_Attributes};
  __property   long            DefinedSize = {read = get_DefinedSize};
  __property   BSTR            Name = {read = get_Name};
  __property   Adodb_xp::DataTypeEnum Type = {read = get_Type};
  __property   unsigned_char   Precision = {read = get_Precision};
  __property   unsigned_char   NumericScale = {read = get_NumericScale};

  __property   Adodb_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef Field15DispT<Field15> Field15Disp;

// *********************************************************************//
// DispIntf:  _Collection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000512-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_CollectionDispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_CollectionDispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
_CollectionDispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
_CollectionDispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_CollectionDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// DispIntf:  _DynaCollection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000513-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_DynaCollectionDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(DISPID_UNKNOWN/*[1610809344]*/));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DynaCollectionDispT<T>::Delete(VARIANT Index/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(DISPID_UNKNOWN/*[1610809345]*/));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DynaCollectionDispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_DynaCollectionDispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
_DynaCollectionDispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
_DynaCollectionDispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_DynaCollectionDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// DispIntf:  _ADO
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000534-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_ADODispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
_ADODispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  Properties
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000504-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
PropertiesDispT<T>::get_Item(VARIANT Index/*[in]*/, Adodb_xp::Property** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Property**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::Property* __fastcall
PropertiesDispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Adodb_xp::Property* ppvObject;
  this->get_Item(Index, (Adodb_xp::Property**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
PropertiesDispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
PropertiesDispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
PropertiesDispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
PropertiesDispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
PropertiesDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// DispIntf:  Property
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000503-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
PropertyDispT<T>::get_Value(VARIANT* pval/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pval /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
PropertyDispT<T>::get_Value(void)
{
  VARIANT pval;
  this->get_Value((VARIANT*)&pval);
  return pval;
}

template <class T> HRESULT __fastcall
PropertyDispT<T>::set_Value(VARIANT pval/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = pval /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
PropertyDispT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
PropertyDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
PropertyDispT<T>::get_Type(Adodb_xp::DataTypeEnum* ptype/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(DISPID_UNKNOWN/*[1610743811]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)ptype /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::DataTypeEnum __fastcall
PropertyDispT<T>::get_Type(void)
{
  Adodb_xp::DataTypeEnum ptype;
  this->get_Type((Adodb_xp::DataTypeEnum*)&ptype);
  return ptype;
}

template <class T> HRESULT __fastcall
PropertyDispT<T>::get_Attributes(long* plAttributes/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(DISPID_UNKNOWN/*[1610743812]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plAttributes /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
PropertyDispT<T>::get_Attributes(void)
{
  long plAttributes;
  this->get_Attributes((long*)&plAttributes);
  return plAttributes;
}

template <class T> HRESULT __fastcall
PropertyDispT<T>::set_Attributes(long plAttributes/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(1610743812));
  TAutoArgs<1> _args;
  _args[1] = plAttributes /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

// *********************************************************************//
// DispIntf:  Error
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000500-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
ErrorDispT<T>::get_Number(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Number"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ErrorDispT<T>::get_Number(void)
{
  long pl;
  this->get_Number((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
ErrorDispT<T>::get_Source(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(DISPID_UNKNOWN/*[1610743809]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
ErrorDispT<T>::get_Source(void)
{
  BSTR pbstr;
  this->get_Source((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
ErrorDispT<T>::get_Description(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Description"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
ErrorDispT<T>::get_Description(void)
{
  BSTR pbstr;
  this->get_Description((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
ErrorDispT<T>::get_HelpFile(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("HelpFile"), DISPID(DISPID_UNKNOWN/*[1610743811]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
ErrorDispT<T>::get_HelpFile(void)
{
  BSTR pbstr;
  this->get_HelpFile((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
ErrorDispT<T>::get_HelpContext(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("HelpContext"), DISPID(DISPID_UNKNOWN/*[1610743812]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ErrorDispT<T>::get_HelpContext(void)
{
  long pl;
  this->get_HelpContext((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
ErrorDispT<T>::get_SQLState(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("SQLState"), DISPID(DISPID_UNKNOWN/*[1610743813]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
ErrorDispT<T>::get_SQLState(void)
{
  BSTR pbstr;
  this->get_SQLState((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
ErrorDispT<T>::get_NativeError(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NativeError"), DISPID(DISPID_UNKNOWN/*[1610743814]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ErrorDispT<T>::get_NativeError(void)
{
  long pl;
  this->get_NativeError((long*)&pl);
  return pl;
}

// *********************************************************************//
// DispIntf:  Errors
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000501-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
ErrorsDispT<T>::get_Item(VARIANT Index/*[in]*/, Adodb_xp::Error** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Error**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::Error* __fastcall
ErrorsDispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Adodb_xp::Error* ppvObject;
  this->get_Item(Index, (Adodb_xp::Error**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
ErrorsDispT<T>::Clear()
{
  _TDispID _dispid(*this, OLETEXT("Clear"), DISPID(DISPID_UNKNOWN/*[1610809345]*/));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
ErrorsDispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ErrorsDispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
ErrorsDispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
ErrorsDispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
ErrorsDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// DispIntf:  Command15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000508-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
Command15DispT<T>::get_ActiveConnection(Adodb_xp::_Connection** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(DISPID_UNKNOWN/*[1610809344]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Connection**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::_ConnectionPtr __fastcall
Command15DispT<T>::get_ActiveConnection(void)
{
  Adodb_xp::_ConnectionPtr ppvObject;
  this->get_ActiveConnection(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::_set_ActiveConnection(Adodb_xp::_Connection* ppvObject/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::_Connection*)ppvObject /*[VT_USERDEFINED:1]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::set_ActiveConnection(VARIANT ppvObject/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = ppvObject /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_CommandText(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandText"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Command15DispT<T>::get_CommandText(void)
{
  BSTR pbstr;
  this->get_CommandText((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::set_CommandText(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandText"), DISPID(1610809347));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_CommandTimeout(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(DISPID_UNKNOWN/*[1610809349]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Command15DispT<T>::get_CommandTimeout(void)
{
  long pl;
  this->get_CommandTimeout((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::set_CommandTimeout(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(1610809349));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_Prepared(VARIANT_BOOL* pfPrepared/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Prepared"), DISPID(DISPID_UNKNOWN/*[1610809351]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pfPrepared /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Command15DispT<T>::get_Prepared(void)
{
  VARIANT_BOOL pfPrepared;
  this->get_Prepared((VARIANT_BOOL*)&pfPrepared);
  return pfPrepared;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::set_Prepared(VARIANT_BOOL pfPrepared/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Prepared"), DISPID(1610809351));
  TAutoArgs<1> _args;
  _args[1] = pfPrepared /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::Execute(VARIANT* RecordsAffected/*[out,opt]*/, VARIANT* Parameters/*[in,opt]*/, 
                           long Options/*[in,def,opt]*/, 
                           Adodb_xp::_Recordset** ppiRs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(DISPID_UNKNOWN/*[1610809353]*/));
  TAutoArgs<3> _args;
  _args[1] = RecordsAffected /*[VT_VARIANT:1]*/;
  _args[2] = Parameters /*[VT_VARIANT:1]*/;
  _args[3] = Options /*[VT_I4:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRs /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Command15DispT<T>::Execute(VARIANT* RecordsAffected/*[out,opt]*/, VARIANT* Parameters/*[in,opt]*/, 
                           long Options/*[in,def,opt]*/)
{
  Adodb_xp::_Recordset* ppiRs;
  this->Execute(RecordsAffected, Parameters, Options, (Adodb_xp::_Recordset**)&ppiRs);
  return ppiRs;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                   Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                   Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                   long Size/*[in,def,opt]*/, VARIANT Value/*[in,opt]*/, 
                                   Adodb_xp::_Parameter** ppiprm/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateParameter"), DISPID(DISPID_UNKNOWN/*[1610809354]*/));
  TAutoArgs<5> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = (int)Type /*[VT_USERDEFINED:0]*/;
  _args[3] = (int)Direction /*[VT_USERDEFINED:0]*/;
  _args[4] = Size /*[VT_I4:0]*/;
  _args[5] = Value /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Parameter**)ppiprm /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Parameter* __fastcall
Command15DispT<T>::CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                   Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                   Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                   long Size/*[in,def,opt]*/, VARIANT Value/*[in,opt]*/)
{
  Adodb_xp::_Parameter* ppiprm;
  this->CreateParameter(Name, Type, Direction, Size, Value, (Adodb_xp::_Parameter**)&ppiprm);
  return ppiprm;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_Parameters(Adodb_xp::Parameters** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Parameters"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Parameters**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ParametersPtr __fastcall
Command15DispT<T>::get_Parameters(void)
{
  Adodb_xp::ParametersPtr ppvObject;
  this->get_Parameters(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::set_CommandType(Adodb_xp::CommandTypeEnum plCmdType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandType"), DISPID(DISPID_UNKNOWN/*[1610809356]*/));
  TAutoArgs<1> _args;
  _args[1] = (int)plCmdType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_CommandType(Adodb_xp::CommandTypeEnum* plCmdType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandType"), DISPID(1610809356));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCmdType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CommandTypeEnum __fastcall
Command15DispT<T>::get_CommandType(void)
{
  Adodb_xp::CommandTypeEnum plCmdType;
  this->get_CommandType((Adodb_xp::CommandTypeEnum*)&plCmdType);
  return plCmdType;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_Name(BSTR* pbstrName/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(DISPID_UNKNOWN/*[1610809358]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrName /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Command15DispT<T>::get_Name(void)
{
  BSTR pbstrName;
  this->get_Name((BSTR*)&pbstrName);
  return pbstrName;
}

template <class T> HRESULT __fastcall
Command15DispT<T>::set_Name(BSTR pbstrName/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1610809358));
  TAutoArgs<1> _args;
  _args[1] = pbstrName /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Command15DispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
Command15DispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  Connection15
// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
// GUID:      {00000515-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
Connection15DispT<T>::get_ConnectionString(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionString"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Connection15DispT<T>::get_ConnectionString(void)
{
  BSTR pbstr;
  this->get_ConnectionString((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_ConnectionString(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionString"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_CommandTimeout(long* plTimeout/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(2));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plTimeout /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Connection15DispT<T>::get_CommandTimeout(void)
{
  long plTimeout;
  this->get_CommandTimeout((long*)&plTimeout);
  return plTimeout;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_CommandTimeout(long plTimeout/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(2));
  TAutoArgs<1> _args;
  _args[1] = plTimeout /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_ConnectionTimeout(long* plTimeout/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionTimeout"), DISPID(3));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plTimeout /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Connection15DispT<T>::get_ConnectionTimeout(void)
{
  long plTimeout;
  this->get_ConnectionTimeout((long*)&plTimeout);
  return plTimeout;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_ConnectionTimeout(long plTimeout/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionTimeout"), DISPID(3));
  TAutoArgs<1> _args;
  _args[1] = plTimeout /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_Version(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Version"), DISPID(4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Connection15DispT<T>::get_Version(void)
{
  BSTR pbstr;
  this->get_Version((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::Close()
{
  _TDispID _dispid(*this, OLETEXT("Close"), DISPID(5));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::Execute(BSTR CommandText/*[in]*/, VARIANT* RecordsAffected/*[out,opt]*/, 
                              long Options/*[in,def,opt]*/, 
                              Adodb_xp::_Recordset** ppiRset/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(6));
  TAutoArgs<3> _args;
  _args[1] = CommandText /*[VT_BSTR:0]*/;
  _args[2] = RecordsAffected /*[VT_VARIANT:1]*/;
  _args[3] = Options /*[VT_I4:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRset /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Connection15DispT<T>::Execute(BSTR CommandText/*[in]*/, VARIANT* RecordsAffected/*[out,opt]*/, 
                              long Options/*[in,def,opt]*/)
{
  Adodb_xp::_Recordset* ppiRset;
  this->Execute(CommandText, RecordsAffected, Options, (Adodb_xp::_Recordset**)&ppiRset);
  return ppiRset;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::BeginTrans(long* TransactionLevel/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BeginTrans"), DISPID(7));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(TransactionLevel /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
Connection15DispT<T>::BeginTrans(void)
{
  long TransactionLevel;
  this->BeginTrans((long*)&TransactionLevel);
  return TransactionLevel;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::CommitTrans()
{
  _TDispID _dispid(*this, OLETEXT("CommitTrans"), DISPID(8));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::RollbackTrans()
{
  _TDispID _dispid(*this, OLETEXT("RollbackTrans"), DISPID(9));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::Open(BSTR ConnectionString/*[in,def,opt]*/, BSTR UserID/*[in,def,opt]*/, 
                           BSTR Password/*[in,def,opt]*/, long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Open"), DISPID(10));
  TAutoArgs<4> _args;
  _args[1] = ConnectionString /*[VT_BSTR:0]*/;
  _args[2] = UserID /*[VT_BSTR:0]*/;
  _args[3] = Password /*[VT_BSTR:0]*/;
  _args[4] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_Errors(Adodb_xp::Errors** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Errors"), DISPID(11));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Errors**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ErrorsPtr __fastcall
Connection15DispT<T>::get_Errors(void)
{
  Adodb_xp::ErrorsPtr ppvObject;
  this->get_Errors(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_DefaultDatabase(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultDatabase"), DISPID(12));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Connection15DispT<T>::get_DefaultDatabase(void)
{
  BSTR pbstr;
  this->get_DefaultDatabase((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_DefaultDatabase(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultDatabase"), DISPID(12));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_IsolationLevel(Adodb_xp::IsolationLevelEnum* Level/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("IsolationLevel"), DISPID(13));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)Level /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::IsolationLevelEnum __fastcall
Connection15DispT<T>::get_IsolationLevel(void)
{
  Adodb_xp::IsolationLevelEnum Level;
  this->get_IsolationLevel((Adodb_xp::IsolationLevelEnum*)&Level);
  return Level;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_IsolationLevel(Adodb_xp::IsolationLevelEnum Level/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("IsolationLevel"), DISPID(13));
  TAutoArgs<1> _args;
  _args[1] = (int)Level /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_Attributes(long* plAttr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(14));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plAttr /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Connection15DispT<T>::get_Attributes(void)
{
  long plAttr;
  this->get_Attributes((long*)&plAttr);
  return plAttr;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_Attributes(long plAttr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(14));
  TAutoArgs<1> _args;
  _args[1] = plAttr /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(15));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorLoc /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorLocationEnum __fastcall
Connection15DispT<T>::get_CursorLocation(void)
{
  Adodb_xp::CursorLocationEnum plCursorLoc;
  this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc);
  return plCursorLoc;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(15));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorLoc /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_Mode(Adodb_xp::ConnectModeEnum* plMode/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Mode"), DISPID(16));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plMode /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ConnectModeEnum __fastcall
Connection15DispT<T>::get_Mode(void)
{
  Adodb_xp::ConnectModeEnum plMode;
  this->get_Mode((Adodb_xp::ConnectModeEnum*)&plMode);
  return plMode;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_Mode(Adodb_xp::ConnectModeEnum plMode/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Mode"), DISPID(16));
  TAutoArgs<1> _args;
  _args[1] = (int)plMode /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_Provider(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Provider"), DISPID(17));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Connection15DispT<T>::get_Provider(void)
{
  BSTR pbstr;
  this->get_Provider((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::set_Provider(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Provider"), DISPID(17));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(18));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plObjState /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Connection15DispT<T>::get_State(void)
{
  long plObjState;
  this->get_State((long*)&plObjState);
  return plObjState;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                 VARIANT Restrictions/*[in,opt]*/, VARIANT SchemaID/*[in,opt]*/, 
                                 Adodb_xp::_Recordset** pprset/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenSchema"), DISPID(19));
  TAutoArgs<3> _args;
  _args[1] = (int)Schema /*[VT_USERDEFINED:0]*/;
  _args[2] = Restrictions /*[VT_VARIANT:0]*/;
  _args[3] = SchemaID /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)pprset /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Connection15DispT<T>::OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                 VARIANT Restrictions/*[in,opt]*/, VARIANT SchemaID/*[in,opt]*/)
{
  Adodb_xp::_Recordset* pprset;
  this->OpenSchema(Schema, Restrictions, SchemaID, (Adodb_xp::_Recordset**)&pprset);
  return pprset;
}

template <class T> HRESULT __fastcall
Connection15DispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
Connection15DispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// SmartIntf: TCOM_Connection
// Interface: _Connection
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_ConnectionT<T>::Cancel(void)
{
  return (*this)->Cancel();
}

// *********************************************************************//
// DispIntf:  _Connection
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {00000550-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_ConnectionDispT<T>::Cancel()
{
  _TDispID _dispid(*this, OLETEXT("Cancel"), DISPID(21));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_ConnectionString(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionString"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_ConnectionDispT<T>::get_ConnectionString(void)
{
  BSTR pbstr;
  this->get_ConnectionString((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_ConnectionString(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionString"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_CommandTimeout(long* plTimeout/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(2));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plTimeout /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_ConnectionDispT<T>::get_CommandTimeout(void)
{
  long plTimeout;
  this->get_CommandTimeout((long*)&plTimeout);
  return plTimeout;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_CommandTimeout(long plTimeout/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(2));
  TAutoArgs<1> _args;
  _args[1] = plTimeout /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_ConnectionTimeout(long* plTimeout/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionTimeout"), DISPID(3));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plTimeout /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_ConnectionDispT<T>::get_ConnectionTimeout(void)
{
  long plTimeout;
  this->get_ConnectionTimeout((long*)&plTimeout);
  return plTimeout;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_ConnectionTimeout(long plTimeout/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ConnectionTimeout"), DISPID(3));
  TAutoArgs<1> _args;
  _args[1] = plTimeout /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_Version(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Version"), DISPID(4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_ConnectionDispT<T>::get_Version(void)
{
  BSTR pbstr;
  this->get_Version((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::Close()
{
  _TDispID _dispid(*this, OLETEXT("Close"), DISPID(5));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::Execute(BSTR CommandText/*[in]*/, VARIANT* RecordsAffected/*[out,opt]*/, 
                             long Options/*[in,def,opt]*/, 
                             Adodb_xp::_Recordset** ppiRset/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(6));
  TAutoArgs<3> _args;
  _args[1] = CommandText /*[VT_BSTR:0]*/;
  _args[2] = RecordsAffected /*[VT_VARIANT:1]*/;
  _args[3] = Options /*[VT_I4:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRset /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
_ConnectionDispT<T>::Execute(BSTR CommandText/*[in]*/, VARIANT* RecordsAffected/*[out,opt]*/, 
                             long Options/*[in,def,opt]*/)
{
  Adodb_xp::_Recordset* ppiRset;
  this->Execute(CommandText, RecordsAffected, Options, (Adodb_xp::_Recordset**)&ppiRset);
  return ppiRset;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::BeginTrans(long* TransactionLevel/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BeginTrans"), DISPID(7));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(TransactionLevel /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
_ConnectionDispT<T>::BeginTrans(void)
{
  long TransactionLevel;
  this->BeginTrans((long*)&TransactionLevel);
  return TransactionLevel;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::CommitTrans()
{
  _TDispID _dispid(*this, OLETEXT("CommitTrans"), DISPID(8));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::RollbackTrans()
{
  _TDispID _dispid(*this, OLETEXT("RollbackTrans"), DISPID(9));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::Open(BSTR ConnectionString/*[in,def,opt]*/, BSTR UserID/*[in,def,opt]*/, 
                          BSTR Password/*[in,def,opt]*/, long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Open"), DISPID(10));
  TAutoArgs<4> _args;
  _args[1] = ConnectionString /*[VT_BSTR:0]*/;
  _args[2] = UserID /*[VT_BSTR:0]*/;
  _args[3] = Password /*[VT_BSTR:0]*/;
  _args[4] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_Errors(Adodb_xp::Errors** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Errors"), DISPID(11));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Errors**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ErrorsPtr __fastcall
_ConnectionDispT<T>::get_Errors(void)
{
  Adodb_xp::ErrorsPtr ppvObject;
  this->get_Errors(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_DefaultDatabase(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultDatabase"), DISPID(12));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_ConnectionDispT<T>::get_DefaultDatabase(void)
{
  BSTR pbstr;
  this->get_DefaultDatabase((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_DefaultDatabase(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultDatabase"), DISPID(12));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_IsolationLevel(Adodb_xp::IsolationLevelEnum* Level/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("IsolationLevel"), DISPID(13));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)Level /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::IsolationLevelEnum __fastcall
_ConnectionDispT<T>::get_IsolationLevel(void)
{
  Adodb_xp::IsolationLevelEnum Level;
  this->get_IsolationLevel((Adodb_xp::IsolationLevelEnum*)&Level);
  return Level;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_IsolationLevel(Adodb_xp::IsolationLevelEnum Level/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("IsolationLevel"), DISPID(13));
  TAutoArgs<1> _args;
  _args[1] = (int)Level /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_Attributes(long* plAttr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(14));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plAttr /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_ConnectionDispT<T>::get_Attributes(void)
{
  long plAttr;
  this->get_Attributes((long*)&plAttr);
  return plAttr;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_Attributes(long plAttr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(14));
  TAutoArgs<1> _args;
  _args[1] = plAttr /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(15));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorLoc /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorLocationEnum __fastcall
_ConnectionDispT<T>::get_CursorLocation(void)
{
  Adodb_xp::CursorLocationEnum plCursorLoc;
  this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc);
  return plCursorLoc;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(15));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorLoc /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_Mode(Adodb_xp::ConnectModeEnum* plMode/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Mode"), DISPID(16));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plMode /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ConnectModeEnum __fastcall
_ConnectionDispT<T>::get_Mode(void)
{
  Adodb_xp::ConnectModeEnum plMode;
  this->get_Mode((Adodb_xp::ConnectModeEnum*)&plMode);
  return plMode;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_Mode(Adodb_xp::ConnectModeEnum plMode/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Mode"), DISPID(16));
  TAutoArgs<1> _args;
  _args[1] = (int)plMode /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_Provider(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Provider"), DISPID(17));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_ConnectionDispT<T>::get_Provider(void)
{
  BSTR pbstr;
  this->get_Provider((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::set_Provider(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Provider"), DISPID(17));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(18));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plObjState /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_ConnectionDispT<T>::get_State(void)
{
  long plObjState;
  this->get_State((long*)&plObjState);
  return plObjState;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                VARIANT Restrictions/*[in,opt]*/, VARIANT SchemaID/*[in,opt]*/, 
                                Adodb_xp::_Recordset** pprset/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenSchema"), DISPID(19));
  TAutoArgs<3> _args;
  _args[1] = (int)Schema /*[VT_USERDEFINED:0]*/;
  _args[2] = Restrictions /*[VT_VARIANT:0]*/;
  _args[3] = SchemaID /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)pprset /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
_ConnectionDispT<T>::OpenSchema(Adodb_xp::SchemaEnum Schema/*[in]*/, 
                                VARIANT Restrictions/*[in,opt]*/, VARIANT SchemaID/*[in,opt]*/)
{
  Adodb_xp::_Recordset* pprset;
  this->OpenSchema(Schema, Restrictions, SchemaID, (Adodb_xp::_Recordset**)&pprset);
  return pprset;
}

template <class T> HRESULT __fastcall
_ConnectionDispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
_ConnectionDispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  Recordset15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050E-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePosition"), DISPID(1000));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PositionEnum __fastcall
Recordset15DispT<T>::get_AbsolutePosition(void)
{
  Adodb_xp::PositionEnum pl;
  this->get_AbsolutePosition((Adodb_xp::PositionEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePosition"), DISPID(1000));
  TAutoArgs<1> _args;
  _args[1] = (int)pl /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::_set_ActiveConnection(LPDISPATCH pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_DISPATCH:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_ActiveConnection(VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_ActiveConnection(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset15DispT<T>::get_ActiveConnection(void)
{
  VARIANT pvar;
  this->get_ActiveConnection((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_BOF(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BOF"), DISPID(1002));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset15DispT<T>::get_BOF(void)
{
  VARIANT_BOOL pb;
  this->get_BOF((VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(1003));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvBookmark /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset15DispT<T>::get_Bookmark(void)
{
  VARIANT pvBookmark;
  this->get_Bookmark((VARIANT*)&pvBookmark);
  return pvBookmark;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_Bookmark(VARIANT pvBookmark/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(1003));
  TAutoArgs<1> _args;
  _args[1] = pvBookmark /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_CacheSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(1004));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_CacheSize(void)
{
  long pl;
  this->get_CacheSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_CacheSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(1004));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorType"), DISPID(1005));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorTypeEnum __fastcall
Recordset15DispT<T>::get_CursorType(void)
{
  Adodb_xp::CursorTypeEnum plCursorType;
  this->get_CursorType((Adodb_xp::CursorTypeEnum*)&plCursorType);
  return plCursorType;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorType"), DISPID(1005));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EOF"), DISPID(1006));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset15DispT<T>::get_EOF_(void)
{
  VARIANT_BOOL pb;
  this->get_EOF_((VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Fields"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Fields**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::FieldsPtr __fastcall
Recordset15DispT<T>::get_Fields(void)
{
  Adodb_xp::FieldsPtr ppvObject;
  this->get_Fields(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockType"), DISPID(1008));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plLockType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::LockTypeEnum __fastcall
Recordset15DispT<T>::get_LockType(void)
{
  Adodb_xp::LockTypeEnum plLockType;
  this->get_LockType((Adodb_xp::LockTypeEnum*)&plLockType);
  return plLockType;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockType"), DISPID(1008));
  TAutoArgs<1> _args;
  _args[1] = (int)plLockType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_MaxRecords(long* plMaxRecords/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("MaxRecords"), DISPID(1009));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plMaxRecords /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_MaxRecords(void)
{
  long plMaxRecords;
  this->get_MaxRecords((long*)&plMaxRecords);
  return plMaxRecords;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_MaxRecords(long plMaxRecords/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("MaxRecords"), DISPID(1009));
  TAutoArgs<1> _args;
  _args[1] = plMaxRecords /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_RecordCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RecordCount"), DISPID(1010));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_RecordCount(void)
{
  long pl;
  this->get_RecordCount((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::_set_Source(LPDISPATCH pvSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<1> _args;
  _args[1] = pvSource /*[VT_DISPATCH:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_Source(BSTR pvSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<1> _args;
  _args[1] = pvSource /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Source(VARIANT* pvSource/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvSource /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset15DispT<T>::get_Source(void)
{
  VARIANT pvSource;
  this->get_Source((VARIANT*)&pvSource);
  return pvSource;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::AddNew(VARIANT FieldList/*[in,opt]*/, VARIANT Values/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddNew"), DISPID(1012));
  TAutoArgs<2> _args;
  _args[1] = FieldList /*[VT_VARIANT:0]*/;
  _args[2] = Values /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::CancelUpdate()
{
  _TDispID _dispid(*this, OLETEXT("CancelUpdate"), DISPID(1013));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Close()
{
  _TDispID _dispid(*this, OLETEXT("Close"), DISPID(1014));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1015));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                             VARIANT Fields/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetRows"), DISPID(1016));
  TAutoArgs<3> _args;
  _args[1] = Rows /*[VT_I4:0]*/;
  _args[2] = Start /*[VT_VARIANT:0]*/;
  _args[3] = Fields /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset15DispT<T>::GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                             VARIANT Fields/*[in,opt]*/)
{
  VARIANT pvar;
  this->GetRows(Rows, Start, Fields, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Move(long NumRecords/*[in]*/, VARIANT Start/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Move"), DISPID(1017));
  TAutoArgs<2> _args;
  _args[1] = NumRecords /*[VT_I4:0]*/;
  _args[2] = Start /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::MoveNext()
{
  _TDispID _dispid(*this, OLETEXT("MoveNext"), DISPID(1018));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::MovePrevious()
{
  _TDispID _dispid(*this, OLETEXT("MovePrevious"), DISPID(1019));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::MoveFirst()
{
  _TDispID _dispid(*this, OLETEXT("MoveFirst"), DISPID(1020));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::MoveLast()
{
  _TDispID _dispid(*this, OLETEXT("MoveLast"), DISPID(1021));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Open(VARIANT Source/*[in,opt]*/, VARIANT ActiveConnection/*[in,opt]*/, 
                          Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                          Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                          long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Open"), DISPID(1022));
  TAutoArgs<5> _args;
  _args[1] = Source /*[VT_VARIANT:0]*/;
  _args[2] = ActiveConnection /*[VT_VARIANT:0]*/;
  _args[3] = (int)CursorType /*[VT_USERDEFINED:0]*/;
  _args[4] = (int)LockType /*[VT_USERDEFINED:0]*/;
  _args[5] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Requery(long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Requery"), DISPID(1023));
  TAutoArgs<1> _args;
  _args[1] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::_xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("_xResync"), DISPID(DISPID_UNKNOWN/*[1610809378]*/));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::_Update(VARIANT Fields/*[in,opt]*/, VARIANT Values/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Update"), DISPID(1025));
  TAutoArgs<2> _args;
  _args[1] = Fields /*[VT_VARIANT:0]*/;
  _args[2] = Values /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePage"), DISPID(1047));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PositionEnum __fastcall
Recordset15DispT<T>::get_AbsolutePage(void)
{
  Adodb_xp::PositionEnum pl;
  this->get_AbsolutePage((Adodb_xp::PositionEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePage"), DISPID(1047));
  TAutoArgs<1> _args;
  _args[1] = (int)pl /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EditMode"), DISPID(1026));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::EditModeEnum __fastcall
Recordset15DispT<T>::get_EditMode(void)
{
  Adodb_xp::EditModeEnum pl;
  this->get_EditMode((Adodb_xp::EditModeEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Filter(VARIANT* Criteria/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(1030));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Criteria /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset15DispT<T>::get_Filter(void)
{
  VARIANT Criteria;
  this->get_Filter((VARIANT*)&Criteria);
  return Criteria;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_Filter(VARIANT Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(1030));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_PageCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageCount"), DISPID(1050));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_PageCount(void)
{
  long pl;
  this->get_PageCount((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_PageSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageSize"), DISPID(1048));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_PageSize(void)
{
  long pl;
  this->get_PageSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_PageSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageSize"), DISPID(1048));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Sort(BSTR* Criteria/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Sort"), DISPID(1031));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Criteria /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Recordset15DispT<T>::get_Sort(void)
{
  BSTR Criteria;
  this->get_Sort((BSTR*)&Criteria);
  return Criteria;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_Sort(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Sort"), DISPID(1031));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Status(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Status"), DISPID(1029));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_Status(void)
{
  long pl;
  this->get_Status((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(1054));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plObjState /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset15DispT<T>::get_State(void)
{
  long plObjState;
  this->get_State((long*)&plObjState);
  return plObjState;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::_xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_xClone"), DISPID(DISPID_UNKNOWN/*[1610809392]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Recordset15DispT<T>::_xClone(void)
{
  Adodb_xp::_Recordset* ppvObject;
  this->_xClone((Adodb_xp::_Recordset**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("UpdateBatch"), DISPID(1035));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("CancelBatch"), DISPID(1049));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(1051));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorLoc /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorLocationEnum __fastcall
Recordset15DispT<T>::get_CursorLocation(void)
{
  Adodb_xp::CursorLocationEnum plCursorLoc;
  this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc);
  return plCursorLoc;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(1051));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorLoc /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                   Adodb_xp::_Recordset** ppiRs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NextRecordset"), DISPID(1052));
  TAutoArgs<1> _args;
  _args[1] = RecordsAffected /*[VT_VARIANT:1]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRs /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Recordset15DispT<T>::NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/)
{
  Adodb_xp::_Recordset* ppiRs;
  this->NextRecordset(RecordsAffected, (Adodb_xp::_Recordset**)&ppiRs);
  return ppiRs;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                              VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Supports"), DISPID(1036));
  TAutoArgs<1> _args;
  _args[1] = (int)CursorOptions /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset15DispT<T>::Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/)
{
  VARIANT_BOOL pb;
  this->Supports(CursorOptions, (VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Collect"), DISPID(-8));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset15DispT<T>::get_Collect(VARIANT Index/*[in]*/)
{
  VARIANT pvar;
  this->get_Collect(Index, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Collect"), DISPID(-8));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  _args[2] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("MarshalOptions"), DISPID(1053));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)peMarshal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::MarshalOptionsEnum __fastcall
Recordset15DispT<T>::get_MarshalOptions(void)
{
  Adodb_xp::MarshalOptionsEnum peMarshal;
  this->get_MarshalOptions((Adodb_xp::MarshalOptionsEnum*)&peMarshal);
  return peMarshal;
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("MarshalOptions"), DISPID(1053));
  TAutoArgs<1> _args;
  _args[1] = (int)peMarshal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                          Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                          VARIANT Start/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Find"), DISPID(1058));
  TAutoArgs<4> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  _args[2] = SkipRecords /*[VT_I4:0]*/;
  _args[3] = (int)SearchDirection /*[VT_USERDEFINED:0]*/;
  _args[4] = Start /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset15DispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
Recordset15DispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  Recordset20
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054F-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
Recordset20DispT<T>::Cancel()
{
  _TDispID _dispid(*this, OLETEXT("Cancel"), DISPID(1055));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_DataSource(LPUNKNOWN* ppunkDataSource/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataSource"), DISPID(1056));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppunkDataSource /*[VT_UNKNOWN:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
Recordset20DispT<T>::get_DataSource(void)
{
  LPUNKNOWN ppunkDataSource;
  this->get_DataSource((LPUNKNOWN*)&ppunkDataSource);
  return ppunkDataSource;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::_set_DataSource(LPUNKNOWN ppunkDataSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataSource"), DISPID(1056));
  TAutoArgs<1> _args;
  _args[1] = ppunkDataSource /*[VT_UNKNOWN:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Save(BSTR FileName/*[in,opt]*/, 
                          Adodb_xp::PersistFormatEnum PersistFormat/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Save"), DISPID(1057));
  TAutoArgs<2> _args;
  _args[1] = FileName /*[VT_BSTR:0]*/;
  _args[2] = (int)PersistFormat /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_ActiveCommand(LPDISPATCH* ppCmd/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveCommand"), DISPID(1061));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppCmd /*[VT_DISPATCH:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPDISPATCH __fastcall
Recordset20DispT<T>::get_ActiveCommand(void)
{
  LPDISPATCH ppCmd;
  this->get_ActiveCommand((LPDISPATCH*)&ppCmd);
  return ppCmd;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_StayInSync(VARIANT_BOOL pbStayInSync/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("StayInSync"), DISPID(1063));
  TAutoArgs<1> _args;
  _args[1] = pbStayInSync /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_StayInSync(VARIANT_BOOL* pbStayInSync/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("StayInSync"), DISPID(1063));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbStayInSync /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset20DispT<T>::get_StayInSync(void)
{
  VARIANT_BOOL pbStayInSync;
  this->get_StayInSync((VARIANT_BOOL*)&pbStayInSync);
  return pbStayInSync;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                               long NumRows/*[in,def,opt]*/, BSTR ColumnDelimeter/*[in,opt]*/, 
                               BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/, 
                               BSTR* pRetString/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetString"), DISPID(1062));
  TAutoArgs<5> _args;
  _args[1] = (int)StringFormat /*[VT_USERDEFINED:0]*/;
  _args[2] = NumRows /*[VT_I4:0]*/;
  _args[3] = ColumnDelimeter /*[VT_BSTR:0]*/;
  _args[4] = RowDelimeter /*[VT_BSTR:0]*/;
  _args[5] = NullExpr /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr(pRetString /*[VT_BSTR:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> BSTR __fastcall
Recordset20DispT<T>::GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                               long NumRows/*[in,def,opt]*/, BSTR ColumnDelimeter/*[in,opt]*/, 
                               BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/)
{
  BSTR pRetString;
  this->GetString(StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, (BSTR*)&pRetString);
  return pRetString;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_DataMember(BSTR* pbstrDataMember/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataMember"), DISPID(1064));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrDataMember /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Recordset20DispT<T>::get_DataMember(void)
{
  BSTR pbstrDataMember;
  this->get_DataMember((BSTR*)&pbstrDataMember);
  return pbstrDataMember;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_DataMember(BSTR pbstrDataMember/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataMember"), DISPID(1064));
  TAutoArgs<1> _args;
  _args[1] = pbstrDataMember /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::CompareBookmarks(VARIANT Bookmark1/*[in]*/, VARIANT Bookmark2/*[in]*/, 
                                      Adodb_xp::CompareEnum* pCompare/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CompareBookmarks"), DISPID(1065));
  TAutoArgs<2> _args;
  _args[1] = Bookmark1 /*[VT_VARIANT:0]*/;
  _args[2] = Bookmark2 /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((int*)pCompare /*[VT_USERDEFINED:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::CompareEnum __fastcall
Recordset20DispT<T>::CompareBookmarks(VARIANT Bookmark1/*[in]*/, VARIANT Bookmark2/*[in]*/)
{
  Adodb_xp::CompareEnum pCompare;
  this->CompareBookmarks(Bookmark1, Bookmark2, (Adodb_xp::CompareEnum*)&pCompare);
  return pCompare;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                           Adodb_xp::_Recordset** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Clone"), DISPID(1034));
  TAutoArgs<1> _args;
  _args[1] = (int)LockType /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Recordset20DispT<T>::Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/)
{
  Adodb_xp::_Recordset* ppvObject;
  this->Clone(LockType, (Adodb_xp::_Recordset**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Resync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/, 
                            Adodb_xp::ResyncEnum ResyncValues/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Resync"), DISPID(1024));
  TAutoArgs<2> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  _args[2] = (int)ResyncValues /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePosition"), DISPID(1000));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PositionEnum __fastcall
Recordset20DispT<T>::get_AbsolutePosition(void)
{
  Adodb_xp::PositionEnum pl;
  this->get_AbsolutePosition((Adodb_xp::PositionEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePosition"), DISPID(1000));
  TAutoArgs<1> _args;
  _args[1] = (int)pl /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::_set_ActiveConnection(LPDISPATCH pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_DISPATCH:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_ActiveConnection(VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_ActiveConnection(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset20DispT<T>::get_ActiveConnection(void)
{
  VARIANT pvar;
  this->get_ActiveConnection((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_BOF(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BOF"), DISPID(1002));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset20DispT<T>::get_BOF(void)
{
  VARIANT_BOOL pb;
  this->get_BOF((VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(1003));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvBookmark /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset20DispT<T>::get_Bookmark(void)
{
  VARIANT pvBookmark;
  this->get_Bookmark((VARIANT*)&pvBookmark);
  return pvBookmark;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_Bookmark(VARIANT pvBookmark/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(1003));
  TAutoArgs<1> _args;
  _args[1] = pvBookmark /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_CacheSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(1004));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_CacheSize(void)
{
  long pl;
  this->get_CacheSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_CacheSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(1004));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorType"), DISPID(1005));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorTypeEnum __fastcall
Recordset20DispT<T>::get_CursorType(void)
{
  Adodb_xp::CursorTypeEnum plCursorType;
  this->get_CursorType((Adodb_xp::CursorTypeEnum*)&plCursorType);
  return plCursorType;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorType"), DISPID(1005));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EOF"), DISPID(1006));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset20DispT<T>::get_EOF_(void)
{
  VARIANT_BOOL pb;
  this->get_EOF_((VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Fields"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Fields**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::FieldsPtr __fastcall
Recordset20DispT<T>::get_Fields(void)
{
  Adodb_xp::FieldsPtr ppvObject;
  this->get_Fields(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockType"), DISPID(1008));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plLockType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::LockTypeEnum __fastcall
Recordset20DispT<T>::get_LockType(void)
{
  Adodb_xp::LockTypeEnum plLockType;
  this->get_LockType((Adodb_xp::LockTypeEnum*)&plLockType);
  return plLockType;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockType"), DISPID(1008));
  TAutoArgs<1> _args;
  _args[1] = (int)plLockType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_MaxRecords(long* plMaxRecords/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("MaxRecords"), DISPID(1009));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plMaxRecords /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_MaxRecords(void)
{
  long plMaxRecords;
  this->get_MaxRecords((long*)&plMaxRecords);
  return plMaxRecords;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_MaxRecords(long plMaxRecords/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("MaxRecords"), DISPID(1009));
  TAutoArgs<1> _args;
  _args[1] = plMaxRecords /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_RecordCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RecordCount"), DISPID(1010));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_RecordCount(void)
{
  long pl;
  this->get_RecordCount((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::_set_Source(LPDISPATCH pvSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<1> _args;
  _args[1] = pvSource /*[VT_DISPATCH:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_Source(BSTR pvSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<1> _args;
  _args[1] = pvSource /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Source(VARIANT* pvSource/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvSource /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset20DispT<T>::get_Source(void)
{
  VARIANT pvSource;
  this->get_Source((VARIANT*)&pvSource);
  return pvSource;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::AddNew(VARIANT FieldList/*[in,opt]*/, VARIANT Values/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddNew"), DISPID(1012));
  TAutoArgs<2> _args;
  _args[1] = FieldList /*[VT_VARIANT:0]*/;
  _args[2] = Values /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::CancelUpdate()
{
  _TDispID _dispid(*this, OLETEXT("CancelUpdate"), DISPID(1013));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Close()
{
  _TDispID _dispid(*this, OLETEXT("Close"), DISPID(1014));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1015));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                             VARIANT Fields/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetRows"), DISPID(1016));
  TAutoArgs<3> _args;
  _args[1] = Rows /*[VT_I4:0]*/;
  _args[2] = Start /*[VT_VARIANT:0]*/;
  _args[3] = Fields /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset20DispT<T>::GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                             VARIANT Fields/*[in,opt]*/)
{
  VARIANT pvar;
  this->GetRows(Rows, Start, Fields, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Move(long NumRecords/*[in]*/, VARIANT Start/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Move"), DISPID(1017));
  TAutoArgs<2> _args;
  _args[1] = NumRecords /*[VT_I4:0]*/;
  _args[2] = Start /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::MoveNext()
{
  _TDispID _dispid(*this, OLETEXT("MoveNext"), DISPID(1018));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::MovePrevious()
{
  _TDispID _dispid(*this, OLETEXT("MovePrevious"), DISPID(1019));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::MoveFirst()
{
  _TDispID _dispid(*this, OLETEXT("MoveFirst"), DISPID(1020));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::MoveLast()
{
  _TDispID _dispid(*this, OLETEXT("MoveLast"), DISPID(1021));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Open(VARIANT Source/*[in,opt]*/, VARIANT ActiveConnection/*[in,opt]*/, 
                          Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                          Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                          long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Open"), DISPID(1022));
  TAutoArgs<5> _args;
  _args[1] = Source /*[VT_VARIANT:0]*/;
  _args[2] = ActiveConnection /*[VT_VARIANT:0]*/;
  _args[3] = (int)CursorType /*[VT_USERDEFINED:0]*/;
  _args[4] = (int)LockType /*[VT_USERDEFINED:0]*/;
  _args[5] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Requery(long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Requery"), DISPID(1023));
  TAutoArgs<1> _args;
  _args[1] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::_xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("_xResync"), DISPID(DISPID_UNKNOWN/*[1610809378]*/));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::_Update(VARIANT Fields/*[in,opt]*/, VARIANT Values/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Update"), DISPID(1025));
  TAutoArgs<2> _args;
  _args[1] = Fields /*[VT_VARIANT:0]*/;
  _args[2] = Values /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePage"), DISPID(1047));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PositionEnum __fastcall
Recordset20DispT<T>::get_AbsolutePage(void)
{
  Adodb_xp::PositionEnum pl;
  this->get_AbsolutePage((Adodb_xp::PositionEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePage"), DISPID(1047));
  TAutoArgs<1> _args;
  _args[1] = (int)pl /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EditMode"), DISPID(1026));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::EditModeEnum __fastcall
Recordset20DispT<T>::get_EditMode(void)
{
  Adodb_xp::EditModeEnum pl;
  this->get_EditMode((Adodb_xp::EditModeEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Filter(VARIANT* Criteria/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(1030));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Criteria /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset20DispT<T>::get_Filter(void)
{
  VARIANT Criteria;
  this->get_Filter((VARIANT*)&Criteria);
  return Criteria;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_Filter(VARIANT Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(1030));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_PageCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageCount"), DISPID(1050));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_PageCount(void)
{
  long pl;
  this->get_PageCount((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_PageSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageSize"), DISPID(1048));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_PageSize(void)
{
  long pl;
  this->get_PageSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_PageSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageSize"), DISPID(1048));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Sort(BSTR* Criteria/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Sort"), DISPID(1031));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Criteria /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Recordset20DispT<T>::get_Sort(void)
{
  BSTR Criteria;
  this->get_Sort((BSTR*)&Criteria);
  return Criteria;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_Sort(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Sort"), DISPID(1031));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Status(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Status"), DISPID(1029));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_Status(void)
{
  long pl;
  this->get_Status((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(1054));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plObjState /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Recordset20DispT<T>::get_State(void)
{
  long plObjState;
  this->get_State((long*)&plObjState);
  return plObjState;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::_xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_xClone"), DISPID(DISPID_UNKNOWN/*[1610809392]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Recordset20DispT<T>::_xClone(void)
{
  Adodb_xp::_Recordset* ppvObject;
  this->_xClone((Adodb_xp::_Recordset**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("UpdateBatch"), DISPID(1035));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("CancelBatch"), DISPID(1049));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(1051));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorLoc /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorLocationEnum __fastcall
Recordset20DispT<T>::get_CursorLocation(void)
{
  Adodb_xp::CursorLocationEnum plCursorLoc;
  this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc);
  return plCursorLoc;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(1051));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorLoc /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                   Adodb_xp::_Recordset** ppiRs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NextRecordset"), DISPID(1052));
  TAutoArgs<1> _args;
  _args[1] = RecordsAffected /*[VT_VARIANT:1]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRs /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
Recordset20DispT<T>::NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/)
{
  Adodb_xp::_Recordset* ppiRs;
  this->NextRecordset(RecordsAffected, (Adodb_xp::_Recordset**)&ppiRs);
  return ppiRs;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                              VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Supports"), DISPID(1036));
  TAutoArgs<1> _args;
  _args[1] = (int)CursorOptions /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
Recordset20DispT<T>::Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/)
{
  VARIANT_BOOL pb;
  this->Supports(CursorOptions, (VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Collect"), DISPID(-8));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Recordset20DispT<T>::get_Collect(VARIANT Index/*[in]*/)
{
  VARIANT pvar;
  this->get_Collect(Index, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Collect"), DISPID(-8));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  _args[2] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("MarshalOptions"), DISPID(1053));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)peMarshal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::MarshalOptionsEnum __fastcall
Recordset20DispT<T>::get_MarshalOptions(void)
{
  Adodb_xp::MarshalOptionsEnum peMarshal;
  this->get_MarshalOptions((Adodb_xp::MarshalOptionsEnum*)&peMarshal);
  return peMarshal;
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("MarshalOptions"), DISPID(1053));
  TAutoArgs<1> _args;
  _args[1] = (int)peMarshal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                          Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                          VARIANT Start/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Find"), DISPID(1058));
  TAutoArgs<4> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  _args[2] = SkipRecords /*[VT_I4:0]*/;
  _args[3] = (int)SearchDirection /*[VT_USERDEFINED:0]*/;
  _args[4] = Start /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Recordset20DispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
Recordset20DispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// SmartIntf: TCOM_Recordset
// Interface: _Recordset
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_RecordsetT<T>::Seek(VARIANT KeyValues/*[in]*/, Adodb_xp::SeekEnum SeekOption/*[in,def,opt]*/)
{
  return (*this)->Seek(KeyValues, SeekOption);
}

template <class T> HRESULT __fastcall
TCOM_RecordsetT<T>::set_Index(BSTR pbstrIndex/*[in]*/)
{
  return (*this)->set_Index(pbstrIndex);
}

template <class T> HRESULT __fastcall
TCOM_RecordsetT<T>::get_Index(BSTR* pbstrIndex/*[out,retval]*/)
{
  return (*this)->get_Index(pbstrIndex);
}

template <class T> BSTR __fastcall
TCOM_RecordsetT<T>::get_Index(void)
{
  BSTR pbstrIndex = 0;
  OLECHECK(this->get_Index((BSTR*)&pbstrIndex));
  return pbstrIndex;
}

// *********************************************************************//
// DispIntf:  _Recordset
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000555-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Seek(VARIANT KeyValues/*[in]*/, Adodb_xp::SeekEnum SeekOption/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Seek"), DISPID(1066));
  TAutoArgs<2> _args;
  _args[1] = KeyValues /*[VT_VARIANT:0]*/;
  _args[2] = (int)SeekOption /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_Index(BSTR pbstrIndex/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Index"), DISPID(1067));
  TAutoArgs<1> _args;
  _args[1] = pbstrIndex /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Index(BSTR* pbstrIndex/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Index"), DISPID(1067));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrIndex /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_RecordsetDispT<T>::get_Index(void)
{
  BSTR pbstrIndex;
  this->get_Index((BSTR*)&pbstrIndex);
  return pbstrIndex;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Cancel()
{
  _TDispID _dispid(*this, OLETEXT("Cancel"), DISPID(1055));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_DataSource(LPUNKNOWN* ppunkDataSource/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataSource"), DISPID(1056));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppunkDataSource /*[VT_UNKNOWN:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
_RecordsetDispT<T>::get_DataSource(void)
{
  LPUNKNOWN ppunkDataSource;
  this->get_DataSource((LPUNKNOWN*)&ppunkDataSource);
  return ppunkDataSource;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::_set_DataSource(LPUNKNOWN ppunkDataSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataSource"), DISPID(1056));
  TAutoArgs<1> _args;
  _args[1] = ppunkDataSource /*[VT_UNKNOWN:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Save(BSTR FileName/*[in,opt]*/, 
                         Adodb_xp::PersistFormatEnum PersistFormat/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Save"), DISPID(1057));
  TAutoArgs<2> _args;
  _args[1] = FileName /*[VT_BSTR:0]*/;
  _args[2] = (int)PersistFormat /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_ActiveCommand(LPDISPATCH* ppCmd/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveCommand"), DISPID(1061));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppCmd /*[VT_DISPATCH:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPDISPATCH __fastcall
_RecordsetDispT<T>::get_ActiveCommand(void)
{
  LPDISPATCH ppCmd;
  this->get_ActiveCommand((LPDISPATCH*)&ppCmd);
  return ppCmd;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_StayInSync(VARIANT_BOOL pbStayInSync/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("StayInSync"), DISPID(1063));
  TAutoArgs<1> _args;
  _args[1] = pbStayInSync /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_StayInSync(VARIANT_BOOL* pbStayInSync/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("StayInSync"), DISPID(1063));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbStayInSync /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_RecordsetDispT<T>::get_StayInSync(void)
{
  VARIANT_BOOL pbStayInSync;
  this->get_StayInSync((VARIANT_BOOL*)&pbStayInSync);
  return pbStayInSync;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                              long NumRows/*[in,def,opt]*/, BSTR ColumnDelimeter/*[in,opt]*/, 
                              BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/, 
                              BSTR* pRetString/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetString"), DISPID(1062));
  TAutoArgs<5> _args;
  _args[1] = (int)StringFormat /*[VT_USERDEFINED:0]*/;
  _args[2] = NumRows /*[VT_I4:0]*/;
  _args[3] = ColumnDelimeter /*[VT_BSTR:0]*/;
  _args[4] = RowDelimeter /*[VT_BSTR:0]*/;
  _args[5] = NullExpr /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr(pRetString /*[VT_BSTR:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> BSTR __fastcall
_RecordsetDispT<T>::GetString(Adodb_xp::StringFormatEnum StringFormat/*[in,def,opt]*/, 
                              long NumRows/*[in,def,opt]*/, BSTR ColumnDelimeter/*[in,opt]*/, 
                              BSTR RowDelimeter/*[in,opt]*/, BSTR NullExpr/*[in,opt]*/)
{
  BSTR pRetString;
  this->GetString(StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, (BSTR*)&pRetString);
  return pRetString;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_DataMember(BSTR* pbstrDataMember/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataMember"), DISPID(1064));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrDataMember /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_RecordsetDispT<T>::get_DataMember(void)
{
  BSTR pbstrDataMember;
  this->get_DataMember((BSTR*)&pbstrDataMember);
  return pbstrDataMember;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_DataMember(BSTR pbstrDataMember/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataMember"), DISPID(1064));
  TAutoArgs<1> _args;
  _args[1] = pbstrDataMember /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::CompareBookmarks(VARIANT Bookmark1/*[in]*/, VARIANT Bookmark2/*[in]*/, 
                                     Adodb_xp::CompareEnum* pCompare/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CompareBookmarks"), DISPID(1065));
  TAutoArgs<2> _args;
  _args[1] = Bookmark1 /*[VT_VARIANT:0]*/;
  _args[2] = Bookmark2 /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((int*)pCompare /*[VT_USERDEFINED:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::CompareEnum __fastcall
_RecordsetDispT<T>::CompareBookmarks(VARIANT Bookmark1/*[in]*/, VARIANT Bookmark2/*[in]*/)
{
  Adodb_xp::CompareEnum pCompare;
  this->CompareBookmarks(Bookmark1, Bookmark2, (Adodb_xp::CompareEnum*)&pCompare);
  return pCompare;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                          Adodb_xp::_Recordset** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Clone"), DISPID(1034));
  TAutoArgs<1> _args;
  _args[1] = (int)LockType /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
_RecordsetDispT<T>::Clone(Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/)
{
  Adodb_xp::_Recordset* ppvObject;
  this->Clone(LockType, (Adodb_xp::_Recordset**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Resync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/, 
                           Adodb_xp::ResyncEnum ResyncValues/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Resync"), DISPID(1024));
  TAutoArgs<2> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  _args[2] = (int)ResyncValues /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_AbsolutePosition(Adodb_xp::PositionEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePosition"), DISPID(1000));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PositionEnum __fastcall
_RecordsetDispT<T>::get_AbsolutePosition(void)
{
  Adodb_xp::PositionEnum pl;
  this->get_AbsolutePosition((Adodb_xp::PositionEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_AbsolutePosition(Adodb_xp::PositionEnum pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePosition"), DISPID(1000));
  TAutoArgs<1> _args;
  _args[1] = (int)pl /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::_set_ActiveConnection(LPDISPATCH pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_DISPATCH:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_ActiveConnection(VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_ActiveConnection(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1001));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_RecordsetDispT<T>::get_ActiveConnection(void)
{
  VARIANT pvar;
  this->get_ActiveConnection((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_BOF(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BOF"), DISPID(1002));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_RecordsetDispT<T>::get_BOF(void)
{
  VARIANT_BOOL pb;
  this->get_BOF((VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Bookmark(VARIANT* pvBookmark/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(1003));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvBookmark /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_RecordsetDispT<T>::get_Bookmark(void)
{
  VARIANT pvBookmark;
  this->get_Bookmark((VARIANT*)&pvBookmark);
  return pvBookmark;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_Bookmark(VARIANT pvBookmark/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(1003));
  TAutoArgs<1> _args;
  _args[1] = pvBookmark /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_CacheSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(1004));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_CacheSize(void)
{
  long pl;
  this->get_CacheSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_CacheSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(1004));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_CursorType(Adodb_xp::CursorTypeEnum* plCursorType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorType"), DISPID(1005));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorTypeEnum __fastcall
_RecordsetDispT<T>::get_CursorType(void)
{
  Adodb_xp::CursorTypeEnum plCursorType;
  this->get_CursorType((Adodb_xp::CursorTypeEnum*)&plCursorType);
  return plCursorType;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_CursorType(Adodb_xp::CursorTypeEnum plCursorType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorType"), DISPID(1005));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EOF"), DISPID(1006));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_RecordsetDispT<T>::get_EOF_(void)
{
  VARIANT_BOOL pb;
  this->get_EOF_((VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Fields(Adodb_xp::Fields** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Fields"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Fields**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::FieldsPtr __fastcall
_RecordsetDispT<T>::get_Fields(void)
{
  Adodb_xp::FieldsPtr ppvObject;
  this->get_Fields(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_LockType(Adodb_xp::LockTypeEnum* plLockType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockType"), DISPID(1008));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plLockType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::LockTypeEnum __fastcall
_RecordsetDispT<T>::get_LockType(void)
{
  Adodb_xp::LockTypeEnum plLockType;
  this->get_LockType((Adodb_xp::LockTypeEnum*)&plLockType);
  return plLockType;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_LockType(Adodb_xp::LockTypeEnum plLockType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockType"), DISPID(1008));
  TAutoArgs<1> _args;
  _args[1] = (int)plLockType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_MaxRecords(long* plMaxRecords/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("MaxRecords"), DISPID(1009));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plMaxRecords /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_MaxRecords(void)
{
  long plMaxRecords;
  this->get_MaxRecords((long*)&plMaxRecords);
  return plMaxRecords;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_MaxRecords(long plMaxRecords/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("MaxRecords"), DISPID(1009));
  TAutoArgs<1> _args;
  _args[1] = plMaxRecords /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_RecordCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RecordCount"), DISPID(1010));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_RecordCount(void)
{
  long pl;
  this->get_RecordCount((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::_set_Source(LPDISPATCH pvSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<1> _args;
  _args[1] = pvSource /*[VT_DISPATCH:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_Source(BSTR pvSource/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<1> _args;
  _args[1] = pvSource /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Source(VARIANT* pvSource/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(1011));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvSource /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_RecordsetDispT<T>::get_Source(void)
{
  VARIANT pvSource;
  this->get_Source((VARIANT*)&pvSource);
  return pvSource;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::AddNew(VARIANT FieldList/*[in,opt]*/, VARIANT Values/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddNew"), DISPID(1012));
  TAutoArgs<2> _args;
  _args[1] = FieldList /*[VT_VARIANT:0]*/;
  _args[2] = Values /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::CancelUpdate()
{
  _TDispID _dispid(*this, OLETEXT("CancelUpdate"), DISPID(1013));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Close()
{
  _TDispID _dispid(*this, OLETEXT("Close"), DISPID(1014));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Delete(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1015));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                            VARIANT Fields/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetRows"), DISPID(1016));
  TAutoArgs<3> _args;
  _args[1] = Rows /*[VT_I4:0]*/;
  _args[2] = Start /*[VT_VARIANT:0]*/;
  _args[3] = Fields /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
_RecordsetDispT<T>::GetRows(long Rows/*[in,def,opt]*/, VARIANT Start/*[in,opt]*/, 
                            VARIANT Fields/*[in,opt]*/)
{
  VARIANT pvar;
  this->GetRows(Rows, Start, Fields, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Move(long NumRecords/*[in]*/, VARIANT Start/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Move"), DISPID(1017));
  TAutoArgs<2> _args;
  _args[1] = NumRecords /*[VT_I4:0]*/;
  _args[2] = Start /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::MoveNext()
{
  _TDispID _dispid(*this, OLETEXT("MoveNext"), DISPID(1018));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::MovePrevious()
{
  _TDispID _dispid(*this, OLETEXT("MovePrevious"), DISPID(1019));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::MoveFirst()
{
  _TDispID _dispid(*this, OLETEXT("MoveFirst"), DISPID(1020));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::MoveLast()
{
  _TDispID _dispid(*this, OLETEXT("MoveLast"), DISPID(1021));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Open(VARIANT Source/*[in,opt]*/, VARIANT ActiveConnection/*[in,opt]*/, 
                         Adodb_xp::CursorTypeEnum CursorType/*[in,def,opt]*/, 
                         Adodb_xp::LockTypeEnum LockType/*[in,def,opt]*/, 
                         long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Open"), DISPID(1022));
  TAutoArgs<5> _args;
  _args[1] = Source /*[VT_VARIANT:0]*/;
  _args[2] = ActiveConnection /*[VT_VARIANT:0]*/;
  _args[3] = (int)CursorType /*[VT_USERDEFINED:0]*/;
  _args[4] = (int)LockType /*[VT_USERDEFINED:0]*/;
  _args[5] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Requery(long Options/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Requery"), DISPID(1023));
  TAutoArgs<1> _args;
  _args[1] = Options /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::_xResync(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("_xResync"), DISPID(DISPID_UNKNOWN/*[1610809378]*/));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::_Update(VARIANT Fields/*[in,opt]*/, VARIANT Values/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Update"), DISPID(1025));
  TAutoArgs<2> _args;
  _args[1] = Fields /*[VT_VARIANT:0]*/;
  _args[2] = Values /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_AbsolutePage(Adodb_xp::PositionEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePage"), DISPID(1047));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PositionEnum __fastcall
_RecordsetDispT<T>::get_AbsolutePage(void)
{
  Adodb_xp::PositionEnum pl;
  this->get_AbsolutePage((Adodb_xp::PositionEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_AbsolutePage(Adodb_xp::PositionEnum pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AbsolutePage"), DISPID(1047));
  TAutoArgs<1> _args;
  _args[1] = (int)pl /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_EditMode(Adodb_xp::EditModeEnum* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EditMode"), DISPID(1026));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pl /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::EditModeEnum __fastcall
_RecordsetDispT<T>::get_EditMode(void)
{
  Adodb_xp::EditModeEnum pl;
  this->get_EditMode((Adodb_xp::EditModeEnum*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Filter(VARIANT* Criteria/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(1030));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Criteria /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_RecordsetDispT<T>::get_Filter(void)
{
  VARIANT Criteria;
  this->get_Filter((VARIANT*)&Criteria);
  return Criteria;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_Filter(VARIANT Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(1030));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_PageCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageCount"), DISPID(1050));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_PageCount(void)
{
  long pl;
  this->get_PageCount((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_PageSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageSize"), DISPID(1048));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_PageSize(void)
{
  long pl;
  this->get_PageSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_PageSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PageSize"), DISPID(1048));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Sort(BSTR* Criteria/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Sort"), DISPID(1031));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Criteria /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_RecordsetDispT<T>::get_Sort(void)
{
  BSTR Criteria;
  this->get_Sort((BSTR*)&Criteria);
  return Criteria;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_Sort(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Sort"), DISPID(1031));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Status(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Status"), DISPID(1029));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_Status(void)
{
  long pl;
  this->get_Status((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(1054));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plObjState /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_RecordsetDispT<T>::get_State(void)
{
  long plObjState;
  this->get_State((long*)&plObjState);
  return plObjState;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::_xClone(Adodb_xp::_Recordset** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_xClone"), DISPID(DISPID_UNKNOWN/*[1610809392]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
_RecordsetDispT<T>::_xClone(void)
{
  Adodb_xp::_Recordset* ppvObject;
  this->_xClone((Adodb_xp::_Recordset**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::UpdateBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("UpdateBatch"), DISPID(1035));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::CancelBatch(Adodb_xp::AffectEnum AffectRecords/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("CancelBatch"), DISPID(1049));
  TAutoArgs<1> _args;
  _args[1] = (int)AffectRecords /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_CursorLocation(Adodb_xp::CursorLocationEnum* plCursorLoc/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(1051));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCursorLoc /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CursorLocationEnum __fastcall
_RecordsetDispT<T>::get_CursorLocation(void)
{
  Adodb_xp::CursorLocationEnum plCursorLoc;
  this->get_CursorLocation((Adodb_xp::CursorLocationEnum*)&plCursorLoc);
  return plCursorLoc;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_CursorLocation(Adodb_xp::CursorLocationEnum plCursorLoc/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CursorLocation"), DISPID(1051));
  TAutoArgs<1> _args;
  _args[1] = (int)plCursorLoc /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/, 
                                  Adodb_xp::_Recordset** ppiRs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NextRecordset"), DISPID(1052));
  TAutoArgs<1> _args;
  _args[1] = RecordsAffected /*[VT_VARIANT:1]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRs /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
_RecordsetDispT<T>::NextRecordset(VARIANT* RecordsAffected/*[out,opt]*/)
{
  Adodb_xp::_Recordset* ppiRs;
  this->NextRecordset(RecordsAffected, (Adodb_xp::_Recordset**)&ppiRs);
  return ppiRs;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/, 
                             VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Supports"), DISPID(1036));
  TAutoArgs<1> _args;
  _args[1] = (int)CursorOptions /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_RecordsetDispT<T>::Supports(Adodb_xp::CursorOptionEnum CursorOptions/*[in]*/)
{
  VARIANT_BOOL pb;
  this->Supports(CursorOptions, (VARIANT_BOOL*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Collect(VARIANT Index/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Collect"), DISPID(-8));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_RecordsetDispT<T>::get_Collect(VARIANT Index/*[in]*/)
{
  VARIANT pvar;
  this->get_Collect(Index, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_Collect(VARIANT Index/*[in]*/, VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Collect"), DISPID(-8));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  _args[2] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_MarshalOptions(Adodb_xp::MarshalOptionsEnum* peMarshal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("MarshalOptions"), DISPID(1053));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)peMarshal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::MarshalOptionsEnum __fastcall
_RecordsetDispT<T>::get_MarshalOptions(void)
{
  Adodb_xp::MarshalOptionsEnum peMarshal;
  this->get_MarshalOptions((Adodb_xp::MarshalOptionsEnum*)&peMarshal);
  return peMarshal;
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::set_MarshalOptions(Adodb_xp::MarshalOptionsEnum peMarshal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("MarshalOptions"), DISPID(1053));
  TAutoArgs<1> _args;
  _args[1] = (int)peMarshal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::Find(BSTR Criteria/*[in]*/, long SkipRecords/*[in,def,opt]*/, 
                         Adodb_xp::SearchDirectionEnum SearchDirection/*[in,def,opt]*/, 
                         VARIANT Start/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Find"), DISPID(1058));
  TAutoArgs<4> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  _args[2] = SkipRecords /*[VT_I4:0]*/;
  _args[3] = (int)SearchDirection /*[VT_USERDEFINED:0]*/;
  _args[4] = Start /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_RecordsetDispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
_RecordsetDispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  Fields15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000506-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
Fields15DispT<T>::get_Item(VARIANT Index/*[in]*/, Adodb_xp::Field** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Field**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::Field* __fastcall
Fields15DispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Adodb_xp::Field* ppvObject;
  this->get_Item(Index, (Adodb_xp::Field**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Fields15DispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Fields15DispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
Fields15DispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
Fields15DispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
Fields15DispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// DispIntf:  Fields
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
FieldsDispT<T>::Append(BSTR Name/*[in]*/, Adodb_xp::DataTypeEnum Type/*[in]*/, 
                       long DefinedSize/*[in,def,opt]*/, 
                       Adodb_xp::FieldAttributeEnum Attrib/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610874880));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = (int)Type /*[VT_USERDEFINED:0]*/;
  _args[3] = DefinedSize /*[VT_I4:0]*/;
  _args[4] = (int)Attrib /*[VT_USERDEFINED:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::Delete(VARIANT Index/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610874881));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::get_Item(VARIANT Index/*[in]*/, Adodb_xp::Field** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Field**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::Field* __fastcall
FieldsDispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Adodb_xp::Field* ppvObject;
  this->get_Item(Index, (Adodb_xp::Field**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
FieldsDispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
FieldsDispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// DispIntf:  Field
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054C-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
FieldDispT<T>::get_ActualSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActualSize"), DISPID(1109));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
FieldDispT<T>::get_ActualSize(void)
{
  long pl;
  this->get_ActualSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_Attributes(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(1036));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
FieldDispT<T>::get_Attributes(void)
{
  long pl;
  this->get_Attributes((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_DefinedSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefinedSize"), DISPID(1103));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
FieldDispT<T>::get_DefinedSize(void)
{
  long pl;
  this->get_DefinedSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1100));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
FieldDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_Type(Adodb_xp::DataTypeEnum* pDataType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1102));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pDataType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::DataTypeEnum __fastcall
FieldDispT<T>::get_Type(void)
{
  Adodb_xp::DataTypeEnum pDataType;
  this->get_Type((Adodb_xp::DataTypeEnum*)&pDataType);
  return pDataType;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_Value(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
FieldDispT<T>::get_Value(void)
{
  VARIANT pvar;
  this->get_Value((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::set_Value(VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_Precision(unsigned_char* pbPrecision/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Precision"), DISPID(DISPID_UNKNOWN/*[1610809351]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbPrecision /*[VT_UI1:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> unsigned_char __fastcall
FieldDispT<T>::get_Precision(void)
{
  unsigned_char pbPrecision;
  this->get_Precision((unsigned_char*)&pbPrecision);
  return pbPrecision;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_NumericScale(unsigned_char* pbNumericScale/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NumericScale"), DISPID(DISPID_UNKNOWN/*[1610809352]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbNumericScale /*[VT_UI1:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> unsigned_char __fastcall
FieldDispT<T>::get_NumericScale(void)
{
  unsigned_char pbNumericScale;
  this->get_NumericScale((unsigned_char*)&pbNumericScale);
  return pbNumericScale;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::AppendChunk(VARIANT Data/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AppendChunk"), DISPID(1107));
  TAutoArgs<1> _args;
  _args[1] = Data /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::GetChunk(long Length/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetChunk"), DISPID(1108));
  TAutoArgs<1> _args;
  _args[1] = Length /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
FieldDispT<T>::GetChunk(long Length/*[in]*/)
{
  VARIANT pvar;
  this->GetChunk(Length, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_OriginalValue(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OriginalValue"), DISPID(1104));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
FieldDispT<T>::get_OriginalValue(void)
{
  VARIANT pvar;
  this->get_OriginalValue((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_UnderlyingValue(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("UnderlyingValue"), DISPID(1105));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
FieldDispT<T>::get_UnderlyingValue(void)
{
  VARIANT pvar;
  this->get_UnderlyingValue((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_DataFormat(LPUNKNOWN* ppiDF/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataFormat"), DISPID(DISPID_UNKNOWN/*[1610809357]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppiDF /*[VT_UNKNOWN:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
FieldDispT<T>::get_DataFormat(void)
{
  LPUNKNOWN ppiDF;
  this->get_DataFormat((LPUNKNOWN*)&ppiDF);
  return ppiDF;
}

template <class T> HRESULT __fastcall
FieldDispT<T>::_set_DataFormat(LPUNKNOWN ppiDF/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DataFormat"), DISPID(1610809357));
  TAutoArgs<1> _args;
  _args[1] = ppiDF /*[VT_UNKNOWN:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::set_Precision(unsigned_char pbPrecision/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Precision"), DISPID(1610809351));
  TAutoArgs<1> _args;
  _args[1] = pbPrecision /*[VT_UI1:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::set_NumericScale(unsigned_char pbNumericScale/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("NumericScale"), DISPID(1610809352));
  TAutoArgs<1> _args;
  _args[1] = pbNumericScale /*[VT_UI1:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::set_Type(Adodb_xp::DataTypeEnum pDataType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1102));
  TAutoArgs<1> _args;
  _args[1] = (int)pDataType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::set_DefinedSize(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefinedSize"), DISPID(1103));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::set_Attributes(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(1036));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldDispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
FieldDispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// SmartIntf: TCOM_Parameter
// Interface: _Parameter
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  return (*this)->get_Name(pbstr);
}

template <class T> BSTR __fastcall
TCOM_ParameterT<T>::get_Name(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_Name((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Value(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_Value(pvar);
}

template <class T> VARIANT __fastcall
TCOM_ParameterT<T>::get_Value(void)
{
  VARIANT pvar;
  OLECHECK(this->get_Value((VARIANT*)&pvar));
  return pvar;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Value(VARIANT pvar/*[in]*/)
{
  return (*this)->set_Value(pvar);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Type(Adodb_xp::DataTypeEnum* psDataType/*[out,retval]*/)
{
  return (*this)->get_Type(psDataType);
}

template <class T> Adodb_xp::DataTypeEnum __fastcall
TCOM_ParameterT<T>::get_Type(void)
{
  Adodb_xp::DataTypeEnum psDataType;
  OLECHECK(this->get_Type((Adodb_xp::DataTypeEnum*)&psDataType));
  return psDataType;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Type(Adodb_xp::DataTypeEnum psDataType/*[in]*/)
{
  return (*this)->set_Type(psDataType);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Direction(Adodb_xp::ParameterDirectionEnum plParmDirection/*[in]*/)
{
  return (*this)->set_Direction(plParmDirection);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Direction(Adodb_xp::ParameterDirectionEnum* plParmDirection/*[out,retval]*/)
{
  return (*this)->get_Direction(plParmDirection);
}

template <class T> Adodb_xp::ParameterDirectionEnum __fastcall
TCOM_ParameterT<T>::get_Direction(void)
{
  Adodb_xp::ParameterDirectionEnum plParmDirection;
  OLECHECK(this->get_Direction((Adodb_xp::ParameterDirectionEnum*)&plParmDirection));
  return plParmDirection;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Precision(unsigned_char pbPrecision/*[in]*/)
{
  return (*this)->set_Precision(pbPrecision);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Precision(unsigned_char* pbPrecision/*[out,retval]*/)
{
  return (*this)->get_Precision(pbPrecision);
}

template <class T> unsigned_char __fastcall
TCOM_ParameterT<T>::get_Precision(void)
{
  unsigned_char pbPrecision;
  OLECHECK(this->get_Precision((unsigned_char*)&pbPrecision));
  return pbPrecision;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_NumericScale(unsigned_char pbScale/*[in]*/)
{
  return (*this)->set_NumericScale(pbScale);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_NumericScale(unsigned_char* pbScale/*[out,retval]*/)
{
  return (*this)->get_NumericScale(pbScale);
}

template <class T> unsigned_char __fastcall
TCOM_ParameterT<T>::get_NumericScale(void)
{
  unsigned_char pbScale;
  OLECHECK(this->get_NumericScale((unsigned_char*)&pbScale));
  return pbScale;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Size(long pl/*[in]*/)
{
  return (*this)->set_Size(pl);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Size(long* pl/*[out,retval]*/)
{
  return (*this)->get_Size(pl);
}

template <class T> long __fastcall
TCOM_ParameterT<T>::get_Size(void)
{
  long pl;
  OLECHECK(this->get_Size((long*)&pl));
  return pl;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::AppendChunk(VARIANT Val/*[in]*/)
{
  return (*this)->AppendChunk(Val);
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::get_Attributes(long* plParmAttribs/*[out,retval]*/)
{
  return (*this)->get_Attributes(plParmAttribs);
}

template <class T> long __fastcall
TCOM_ParameterT<T>::get_Attributes(void)
{
  long plParmAttribs;
  OLECHECK(this->get_Attributes((long*)&plParmAttribs));
  return plParmAttribs;
}

template <class T> HRESULT __fastcall
TCOM_ParameterT<T>::set_Attributes(long plParmAttribs/*[in]*/)
{
  return (*this)->set_Attributes(plParmAttribs);
}

// *********************************************************************//
// DispIntf:  _Parameter
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050C-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(DISPID_UNKNOWN/*[1610809344]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_ParameterDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Value(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_ParameterDispT<T>::get_Value(void)
{
  VARIANT pvar;
  this->get_Value((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Value(VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Type(Adodb_xp::DataTypeEnum* psDataType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(DISPID_UNKNOWN/*[1610809348]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)psDataType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::DataTypeEnum __fastcall
_ParameterDispT<T>::get_Type(void)
{
  Adodb_xp::DataTypeEnum psDataType;
  this->get_Type((Adodb_xp::DataTypeEnum*)&psDataType);
  return psDataType;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Type(Adodb_xp::DataTypeEnum psDataType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1610809348));
  TAutoArgs<1> _args;
  _args[1] = (int)psDataType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Direction(Adodb_xp::ParameterDirectionEnum plParmDirection/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Direction"), DISPID(DISPID_UNKNOWN/*[1610809350]*/));
  TAutoArgs<1> _args;
  _args[1] = (int)plParmDirection /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Direction(Adodb_xp::ParameterDirectionEnum* plParmDirection/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Direction"), DISPID(1610809350));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plParmDirection /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ParameterDirectionEnum __fastcall
_ParameterDispT<T>::get_Direction(void)
{
  Adodb_xp::ParameterDirectionEnum plParmDirection;
  this->get_Direction((Adodb_xp::ParameterDirectionEnum*)&plParmDirection);
  return plParmDirection;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Precision(unsigned_char pbPrecision/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Precision"), DISPID(DISPID_UNKNOWN/*[1610809352]*/));
  TAutoArgs<1> _args;
  _args[1] = pbPrecision /*[VT_UI1:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Precision(unsigned_char* pbPrecision/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Precision"), DISPID(1610809352));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbPrecision /*[VT_UI1:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> unsigned_char __fastcall
_ParameterDispT<T>::get_Precision(void)
{
  unsigned_char pbPrecision;
  this->get_Precision((unsigned_char*)&pbPrecision);
  return pbPrecision;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_NumericScale(unsigned_char pbScale/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("NumericScale"), DISPID(DISPID_UNKNOWN/*[1610809354]*/));
  TAutoArgs<1> _args;
  _args[1] = pbScale /*[VT_UI1:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_NumericScale(unsigned_char* pbScale/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NumericScale"), DISPID(1610809354));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbScale /*[VT_UI1:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> unsigned_char __fastcall
_ParameterDispT<T>::get_NumericScale(void)
{
  unsigned_char pbScale;
  this->get_NumericScale((unsigned_char*)&pbScale);
  return pbScale;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Size(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Size"), DISPID(DISPID_UNKNOWN/*[1610809356]*/));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Size(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Size"), DISPID(1610809356));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_ParameterDispT<T>::get_Size(void)
{
  long pl;
  this->get_Size((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::AppendChunk(VARIANT Val/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AppendChunk"), DISPID(DISPID_UNKNOWN/*[1610809358]*/));
  TAutoArgs<1> _args;
  _args[1] = Val /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Attributes(long* plParmAttribs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(DISPID_UNKNOWN/*[1610809359]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plParmAttribs /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_ParameterDispT<T>::get_Attributes(void)
{
  long plParmAttribs;
  this->get_Attributes((long*)&plParmAttribs);
  return plParmAttribs;
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::set_Attributes(long plParmAttribs/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(1610809359));
  TAutoArgs<1> _args;
  _args[1] = plParmAttribs /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_ParameterDispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
_ParameterDispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  Parameters
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000050D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
ParametersDispT<T>::get_Item(VARIANT Index/*[in]*/, Adodb_xp::_Parameter** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Parameter**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::_Parameter* __fastcall
ParametersDispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Adodb_xp::_Parameter* ppvObject;
  this->get_Item(Index, (Adodb_xp::_Parameter**)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
ParametersDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(DISPID_UNKNOWN/*[1610809344]*/));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ParametersDispT<T>::Delete(VARIANT Index/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(DISPID_UNKNOWN/*[1610809345]*/));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ParametersDispT<T>::get_Count(long* c/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(c /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ParametersDispT<T>::get_Count(void)
{
  long c;
  this->get_Count((long*)&c);
  return c;
}

template <class T> HRESULT __fastcall
ParametersDispT<T>::_NewEnum(LPUNKNOWN* ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppvObject /*[VT_UNKNOWN:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
ParametersDispT<T>::_NewEnum(void)
{
  LPUNKNOWN ppvObject;
  this->_NewEnum((LPUNKNOWN*)&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
ParametersDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  return OleFunction(_dispid);
}

// *********************************************************************//
// SmartIntf: TCOM_Command
// Interface: _Command
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_CommandT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  return (*this)->get_State(plObjState);
}

template <class T> long __fastcall
TCOM_CommandT<T>::get_State(void)
{
  long plObjState;
  OLECHECK(this->get_State((long*)&plObjState));
  return plObjState;
}

template <class T> HRESULT __fastcall
TCOM_CommandT<T>::Cancel(void)
{
  return (*this)->Cancel();
}

// *********************************************************************//
// DispIntf:  _Command
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000054E-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_CommandDispT<T>::get_State(long* plObjState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(DISPID_UNKNOWN/*[1610874880]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plObjState /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_CommandDispT<T>::get_State(void)
{
  long plObjState;
  this->get_State((long*)&plObjState);
  return plObjState;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::Cancel()
{
  _TDispID _dispid(*this, OLETEXT("Cancel"), DISPID(DISPID_UNKNOWN/*[1610874881]*/));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_ActiveConnection(Adodb_xp::_Connection** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(DISPID_UNKNOWN/*[1610809344]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Connection**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::_ConnectionPtr __fastcall
_CommandDispT<T>::get_ActiveConnection(void)
{
  Adodb_xp::_ConnectionPtr ppvObject;
  this->get_ActiveConnection(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::_set_ActiveConnection(Adodb_xp::_Connection* ppvObject/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::_Connection*)ppvObject /*[VT_USERDEFINED:1]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::set_ActiveConnection(VARIANT ppvObject/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActiveConnection"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = ppvObject /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_CommandText(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandText"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_CommandDispT<T>::get_CommandText(void)
{
  BSTR pbstr;
  this->get_CommandText((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::set_CommandText(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandText"), DISPID(1610809347));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_CommandTimeout(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(DISPID_UNKNOWN/*[1610809349]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_CommandDispT<T>::get_CommandTimeout(void)
{
  long pl;
  this->get_CommandTimeout((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::set_CommandTimeout(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandTimeout"), DISPID(1610809349));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_Prepared(VARIANT_BOOL* pfPrepared/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Prepared"), DISPID(DISPID_UNKNOWN/*[1610809351]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pfPrepared /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_CommandDispT<T>::get_Prepared(void)
{
  VARIANT_BOOL pfPrepared;
  this->get_Prepared((VARIANT_BOOL*)&pfPrepared);
  return pfPrepared;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::set_Prepared(VARIANT_BOOL pfPrepared/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Prepared"), DISPID(1610809351));
  TAutoArgs<1> _args;
  _args[1] = pfPrepared /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::Execute(VARIANT* RecordsAffected/*[out,opt]*/, VARIANT* Parameters/*[in,opt]*/, 
                          long Options/*[in,def,opt]*/, Adodb_xp::_Recordset** ppiRs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(DISPID_UNKNOWN/*[1610809353]*/));
  TAutoArgs<3> _args;
  _args[1] = RecordsAffected /*[VT_VARIANT:1]*/;
  _args[2] = Parameters /*[VT_VARIANT:1]*/;
  _args[3] = Options /*[VT_I4:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Recordset**)ppiRs /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Recordset* __fastcall
_CommandDispT<T>::Execute(VARIANT* RecordsAffected/*[out,opt]*/, VARIANT* Parameters/*[in,opt]*/, 
                          long Options/*[in,def,opt]*/)
{
  Adodb_xp::_Recordset* ppiRs;
  this->Execute(RecordsAffected, Parameters, Options, (Adodb_xp::_Recordset**)&ppiRs);
  return ppiRs;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                  Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                  Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                  long Size/*[in,def,opt]*/, VARIANT Value/*[in,opt]*/, 
                                  Adodb_xp::_Parameter** ppiprm/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateParameter"), DISPID(DISPID_UNKNOWN/*[1610809354]*/));
  TAutoArgs<5> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = (int)Type /*[VT_USERDEFINED:0]*/;
  _args[3] = (int)Direction /*[VT_USERDEFINED:0]*/;
  _args[4] = Size /*[VT_I4:0]*/;
  _args[5] = Value /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::_Parameter**)ppiprm /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Adodb_xp::_Parameter* __fastcall
_CommandDispT<T>::CreateParameter(BSTR Name/*[in,def,opt]*/, 
                                  Adodb_xp::DataTypeEnum Type/*[in,def,opt]*/, 
                                  Adodb_xp::ParameterDirectionEnum Direction/*[in,def,opt]*/, 
                                  long Size/*[in,def,opt]*/, VARIANT Value/*[in,opt]*/)
{
  Adodb_xp::_Parameter* ppiprm;
  this->CreateParameter(Name, Type, Direction, Size, Value, (Adodb_xp::_Parameter**)&ppiprm);
  return ppiprm;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_Parameters(Adodb_xp::Parameters** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Parameters"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Parameters**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::ParametersPtr __fastcall
_CommandDispT<T>::get_Parameters(void)
{
  Adodb_xp::ParametersPtr ppvObject;
  this->get_Parameters(&ppvObject);
  return ppvObject;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::set_CommandType(Adodb_xp::CommandTypeEnum plCmdType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandType"), DISPID(DISPID_UNKNOWN/*[1610809356]*/));
  TAutoArgs<1> _args;
  _args[1] = (int)plCmdType /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_CommandType(Adodb_xp::CommandTypeEnum* plCmdType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CommandType"), DISPID(1610809356));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)plCmdType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::CommandTypeEnum __fastcall
_CommandDispT<T>::get_CommandType(void)
{
  Adodb_xp::CommandTypeEnum plCmdType;
  this->get_CommandType((Adodb_xp::CommandTypeEnum*)&plCmdType);
  return plCmdType;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_Name(BSTR* pbstrName/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(DISPID_UNKNOWN/*[1610809358]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrName /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
_CommandDispT<T>::get_Name(void)
{
  BSTR pbstrName;
  this->get_Name((BSTR*)&pbstrName);
  return pbstrName;
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::set_Name(BSTR pbstrName/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1610809358));
  TAutoArgs<1> _args;
  _args[1] = pbstrName /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_CommandDispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
_CommandDispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// DispIntf:  ConnectionEvents
// Flags:     (4096) Dispatchable
// GUID:      {00000400-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::InfoMessage(Adodb_xp::Error* pError/*[in]*/, 
                                      Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                      Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* InfoMessage */ DISPID(0));
  TAutoArgs<3> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::BeginTransComplete(long TransactionLevel/*[in]*/, 
                                             Adodb_xp::Error* pError/*[in]*/, 
                                             Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                             Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* BeginTransComplete */ DISPID(1));
  TAutoArgs<4> _args;
  _args[1] = TransactionLevel /*[VT_I4:0]*/;
  _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::CommitTransComplete(Adodb_xp::Error* pError/*[in]*/, 
                                              Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                              Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* CommitTransComplete */ DISPID(3));
  TAutoArgs<3> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::RollbackTransComplete(Adodb_xp::Error* pError/*[in]*/, 
                                                Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* RollbackTransComplete */ DISPID(2));
  TAutoArgs<3> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::WillExecute(BSTR* Source/*[in,out]*/, 
                                      Adodb_xp::CursorTypeEnum* CursorType/*[in,out]*/, 
                                      Adodb_xp::LockTypeEnum* LockType/*[in,out]*/, 
                                      long* Options/*[in,out]*/, 
                                      Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                      Adodb_xp::_Command* pCommand/*[in]*/, 
                                      Adodb_xp::_Recordset* pRecordset/*[in]*/, 
                                      Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* WillExecute */ DISPID(4));
  TAutoArgs<8> _args;
  _args[1] = Source /*[VT_BSTR:1]*/;
  _args[2] = (int*)CursorType /*[VT_USERDEFINED:1]*/;
  _args[3] = (int*)LockType /*[VT_USERDEFINED:1]*/;
  _args[4] = Options /*[VT_I4:1]*/;
  _args[5] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[6] = (LPDISPATCH)(Adodb_xp::_Command*)pCommand /*[VT_USERDEFINED:1]*/;
  _args[7] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  _args[8] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::ExecuteComplete(long RecordsAffected/*[in]*/, 
                                          Adodb_xp::Error* pError/*[in]*/, 
                                          Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                          Adodb_xp::_Command* pCommand/*[in]*/, 
                                          Adodb_xp::_Recordset* pRecordset/*[in]*/, 
                                          Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* ExecuteComplete */ DISPID(5));
  TAutoArgs<6> _args;
  _args[1] = RecordsAffected /*[VT_I4:0]*/;
  _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Command*)pCommand /*[VT_USERDEFINED:1]*/;
  _args[5] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  _args[6] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::WillConnect(BSTR* ConnectionString/*[in,out]*/, BSTR* UserID/*[in,out]*/, 
                                      BSTR* Password/*[in,out]*/, long* Options/*[in,out]*/, 
                                      Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                      Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* WillConnect */ DISPID(6));
  TAutoArgs<6> _args;
  _args[1] = ConnectionString /*[VT_BSTR:1]*/;
  _args[2] = UserID /*[VT_BSTR:1]*/;
  _args[3] = Password /*[VT_BSTR:1]*/;
  _args[4] = Options /*[VT_I4:1]*/;
  _args[5] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[6] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::ConnectComplete(Adodb_xp::Error* pError/*[in]*/, 
                                          Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                          Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* ConnectComplete */ DISPID(7));
  TAutoArgs<3> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionEventsDispT<T>::Disconnect(Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                     Adodb_xp::_Connection* pConnection/*[in]*/)
{
  _TDispID _dispid(/* Disconnect */ DISPID(8));
  TAutoArgs<2> _args;
  _args[1] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[2] = (LPDISPATCH)(Adodb_xp::_Connection*)pConnection /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

// *********************************************************************//
// DispIntf:  RecordsetEvents
// Flags:     (4096) Dispatchable
// GUID:      {00000266-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::WillChangeField(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                         Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                         Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* WillChangeField */ DISPID(9));
  TAutoArgs<4> _args;
  _args[1] = cFields /*[VT_I4:0]*/;
  _args[2] = Fields /*[VT_VARIANT:0]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::FieldChangeComplete(long cFields/*[in]*/, VARIANT Fields/*[in]*/, 
                                             Adodb_xp::Error* pError/*[in]*/, 
                                             Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                             Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* FieldChangeComplete */ DISPID(10));
  TAutoArgs<5> _args;
  _args[1] = cFields /*[VT_I4:0]*/;
  _args[2] = Fields /*[VT_VARIANT:0]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[4] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[5] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::WillChangeRecord(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                          long cRecords/*[in]*/, 
                                          Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                          Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* WillChangeRecord */ DISPID(11));
  TAutoArgs<4> _args;
  _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
  _args[2] = cRecords /*[VT_I4:0]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::RecordChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                              long cRecords/*[in]*/, Adodb_xp::Error* pError/*[in]*/
                                              , Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                              Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* RecordChangeComplete */ DISPID(12));
  TAutoArgs<5> _args;
  _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
  _args[2] = cRecords /*[VT_I4:0]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[4] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[5] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::WillChangeRecordset(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                             Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                             Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* WillChangeRecordset */ DISPID(13));
  TAutoArgs<3> _args;
  _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::RecordsetChangeComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                                 Adodb_xp::Error* pError/*[in]*/, 
                                                 Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                                 Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* RecordsetChangeComplete */ DISPID(14));
  TAutoArgs<4> _args;
  _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
  _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::WillMove(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                  Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                  Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* WillMove */ DISPID(15));
  TAutoArgs<3> _args;
  _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::MoveComplete(Adodb_xp::EventReasonEnum adReason/*[in]*/, 
                                      Adodb_xp::Error* pError/*[in]*/, 
                                      Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                      Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* MoveComplete */ DISPID(16));
  TAutoArgs<4> _args;
  _args[1] = (int)adReason /*[VT_USERDEFINED:0]*/;
  _args[2] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::EndOfRecordset(VARIANT_BOOL* fMoreData/*[in,out]*/, 
                                        Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                        Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* EndOfRecordset */ DISPID(17));
  TAutoArgs<3> _args;
  _args[1] = fMoreData /*[VT_BOOL:1]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::FetchProgress(long Progress/*[in]*/, long MaxProgress/*[in]*/, 
                                       Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                       Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* FetchProgress */ DISPID(18));
  TAutoArgs<4> _args;
  _args[1] = Progress /*[VT_I4:0]*/;
  _args[2] = MaxProgress /*[VT_I4:0]*/;
  _args[3] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[4] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetEventsDispT<T>::FetchComplete(Adodb_xp::Error* pError/*[in]*/, 
                                       Adodb_xp::EventStatusEnum* adStatus/*[in,out]*/, 
                                       Adodb_xp::_Recordset* pRecordset/*[in]*/)
{
  _TDispID _dispid(/* FetchComplete */ DISPID(19));
  TAutoArgs<3> _args;
  _args[1] = (LPDISPATCH)(Adodb_xp::Error*)pError /*[VT_USERDEFINED:1]*/;
  _args[2] = (int*)adStatus /*[VT_USERDEFINED:1]*/;
  _args[3] = (LPDISPATCH)(Adodb_xp::_Recordset*)pRecordset /*[VT_USERDEFINED:1]*/;
  return OleFunction(_dispid, _args);
}

// *********************************************************************//
// DispIntf:  Field15
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000505-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
Field15DispT<T>::get_ActualSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ActualSize"), DISPID(1109));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Field15DispT<T>::get_ActualSize(void)
{
  long pl;
  this->get_ActualSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_Attributes(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(1036));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Field15DispT<T>::get_Attributes(void)
{
  long pl;
  this->get_Attributes((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_DefinedSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefinedSize"), DISPID(1103));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
Field15DispT<T>::get_DefinedSize(void)
{
  long pl;
  this->get_DefinedSize((long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1100));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
Field15DispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_Type(Adodb_xp::DataTypeEnum* pDataType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1102));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pDataType /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::DataTypeEnum __fastcall
Field15DispT<T>::get_Type(void)
{
  Adodb_xp::DataTypeEnum pDataType;
  this->get_Type((Adodb_xp::DataTypeEnum*)&pDataType);
  return pDataType;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_Value(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Field15DispT<T>::get_Value(void)
{
  VARIANT pvar;
  this->get_Value((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::set_Value(VARIANT pvar/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Value"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = pvar /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_Precision(unsigned_char* pbPrecision/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Precision"), DISPID(DISPID_UNKNOWN/*[1610809351]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbPrecision /*[VT_UI1:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> unsigned_char __fastcall
Field15DispT<T>::get_Precision(void)
{
  unsigned_char pbPrecision;
  this->get_Precision((unsigned_char*)&pbPrecision);
  return pbPrecision;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_NumericScale(unsigned_char* pbNumericScale/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NumericScale"), DISPID(DISPID_UNKNOWN/*[1610809352]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbNumericScale /*[VT_UI1:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> unsigned_char __fastcall
Field15DispT<T>::get_NumericScale(void)
{
  unsigned_char pbNumericScale;
  this->get_NumericScale((unsigned_char*)&pbNumericScale);
  return pbNumericScale;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::AppendChunk(VARIANT Data/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AppendChunk"), DISPID(1107));
  TAutoArgs<1> _args;
  _args[1] = Data /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
Field15DispT<T>::GetChunk(long Length/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetChunk"), DISPID(1108));
  TAutoArgs<1> _args;
  _args[1] = Length /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
Field15DispT<T>::GetChunk(long Length/*[in]*/)
{
  VARIANT pvar;
  this->GetChunk(Length, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_OriginalValue(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OriginalValue"), DISPID(1104));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Field15DispT<T>::get_OriginalValue(void)
{
  VARIANT pvar;
  this->get_OriginalValue((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_UnderlyingValue(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("UnderlyingValue"), DISPID(1105));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
Field15DispT<T>::get_UnderlyingValue(void)
{
  VARIANT pvar;
  this->get_UnderlyingValue((VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
Field15DispT<T>::get_Properties(Adodb_xp::Properties** ppvObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Adodb_xp::Properties**)ppvObject /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Adodb_xp::PropertiesPtr __fastcall
Field15DispT<T>::get_Properties(void)
{
  Adodb_xp::PropertiesPtr ppvObject;
  this->get_Properties(&ppvObject);
  return ppvObject;
}

// *********************************************************************//
// The following typedefs expose classes (named CoCoClassName) that       
// provide static Create() and CreateRemote(LPWSTR machineName) methods   
// for creating an instance of an exposed object. These functions can     
// be used by client wishing to automate CoClasses exposed by this        
// typelibrary.                                                           
// *********************************************************************//

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Connection
// Interface: TCOM_Connection
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Connection, _Connection, &CLSID_Connection, &IID__Connection> CoConnection;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Command
// Interface: TCOM_Command
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Command, _Command, &CLSID_Command, &IID__Command> CoCommand;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Recordset
// Interface: TCOM_Recordset
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Recordset, _Recordset, &CLSID_Recordset, &IID__Recordset> CoRecordset;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Parameter
// Interface: TCOM_Parameter
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Parameter, _Parameter, &CLSID_Parameter, &IID__Parameter> CoParameter;
#endif  //   __TLB_NO_INTERFACE_WRAPPERS


#if !defined(__TLB_NO_EVENT_WRAPPERS) && defined(USING_ATLVCL)
// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : Connection
// Event Interface : ConnectionEvents
// *********************************************************************//
template <class T>
class TEvents_Connection : public IConnectionPointImpl<T,
                                                 &DIID_ConnectionEvents,
#if !defined(_TLB_DYNAMIC_CONNECTIONPOINT_ARRAY)
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
#else
                                                 CComDynamicArray>
#endif
{
public:
  HRESULT         Fire_InfoMessage(Adodb_xp::Error* pError, Adodb_xp::EventStatusEnum* adStatus, 
                                   Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_BeginTransComplete(long TransactionLevel, Adodb_xp::Error* pError, 
                                          Adodb_xp::EventStatusEnum* adStatus, 
                                          Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_CommitTransComplete(Adodb_xp::Error* pError, 
                                           Adodb_xp::EventStatusEnum* adStatus, 
                                           Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_RollbackTransComplete(Adodb_xp::Error* pError, 
                                             Adodb_xp::EventStatusEnum* adStatus, 
                                             Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_WillExecute(BSTR* Source, Adodb_xp::CursorTypeEnum* CursorType, 
                                   Adodb_xp::LockTypeEnum* LockType, long* Options, 
                                   Adodb_xp::EventStatusEnum* adStatus, Adodb_xp::_Command* pCommand, 
                                   Adodb_xp::_Recordset* pRecordset, 
                                   Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_ExecuteComplete(long RecordsAffected, Adodb_xp::Error* pError, 
                                       Adodb_xp::EventStatusEnum* adStatus, 
                                       Adodb_xp::_Command* pCommand, 
                                       Adodb_xp::_Recordset* pRecordset, 
                                       Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_WillConnect(BSTR* ConnectionString, BSTR* UserID, BSTR* Password, 
                                   long* Options, Adodb_xp::EventStatusEnum* adStatus, 
                                   Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_ConnectComplete(Adodb_xp::Error* pError, Adodb_xp::EventStatusEnum* adStatus, 
                                       Adodb_xp::_Connection* pConnection);
  HRESULT         Fire_Disconnect(Adodb_xp::EventStatusEnum* adStatus, 
                                  Adodb_xp::_Connection* pConnection);
protected:
  ConnectionEventsDisp m_EventIntfObj;
};

template <class T> HRESULT
TEvents_Connection<T>::Fire_InfoMessage(Adodb_xp::Error* pError, Adodb_xp::EventStatusEnum* adStatus, 
                                        Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.InfoMessage(pError, adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_BeginTransComplete(long TransactionLevel, Adodb_xp::Error* pError, 
                                               Adodb_xp::EventStatusEnum* adStatus, 
                                               Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.BeginTransComplete(TransactionLevel, pError, adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_CommitTransComplete(Adodb_xp::Error* pError, 
                                                Adodb_xp::EventStatusEnum* adStatus, 
                                                Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.CommitTransComplete(pError, adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_RollbackTransComplete(Adodb_xp::Error* pError, 
                                                  Adodb_xp::EventStatusEnum* adStatus, 
                                                  Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.RollbackTransComplete(pError, adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_WillExecute(BSTR* Source, Adodb_xp::CursorTypeEnum* CursorType, 
                                        Adodb_xp::LockTypeEnum* LockType, long* Options, 
                                        Adodb_xp::EventStatusEnum* adStatus, 
                                        Adodb_xp::_Command* pCommand, 
                                        Adodb_xp::_Recordset* pRecordset, 
                                        Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.WillExecute(Source, CursorType, LockType, Options, adStatus, pCommand, 
                                 pRecordset, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_ExecuteComplete(long RecordsAffected, Adodb_xp::Error* pError, 
                                            Adodb_xp::EventStatusEnum* adStatus, 
                                            Adodb_xp::_Command* pCommand, 
                                            Adodb_xp::_Recordset* pRecordset, 
                                            Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.ExecuteComplete(RecordsAffected, pError, adStatus, pCommand, pRecordset, 
                                     pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_WillConnect(BSTR* ConnectionString, BSTR* UserID, BSTR* Password, 
                                        long* Options, Adodb_xp::EventStatusEnum* adStatus, 
                                        Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.WillConnect(ConnectionString, UserID, Password, Options, adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_ConnectComplete(Adodb_xp::Error* pError, 
                                            Adodb_xp::EventStatusEnum* adStatus, 
                                            Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.ConnectComplete(pError, adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Connection<T>::Fire_Disconnect(Adodb_xp::EventStatusEnum* adStatus, 
                                       Adodb_xp::_Connection* pConnection)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.Disconnect(adStatus, pConnection);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : Recordset
// Event Interface : RecordsetEvents
// *********************************************************************//
template <class T>
class TEvents_Recordset : public IConnectionPointImpl<T,
                                                 &DIID_RecordsetEvents,
#if !defined(_TLB_DYNAMIC_CONNECTIONPOINT_ARRAY)
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
#else
                                                 CComDynamicArray>
#endif
{
public:
  HRESULT         Fire_WillChangeField(long cFields, VARIANT Fields, 
                                       Adodb_xp::EventStatusEnum* adStatus, 
                                       Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_FieldChangeComplete(long cFields, VARIANT Fields, Adodb_xp::Error* pError, 
                                           Adodb_xp::EventStatusEnum* adStatus, 
                                           Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_WillChangeRecord(Adodb_xp::EventReasonEnum adReason, long cRecords, 
                                        Adodb_xp::EventStatusEnum* adStatus, 
                                        Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_RecordChangeComplete(Adodb_xp::EventReasonEnum adReason, long cRecords, 
                                            Adodb_xp::Error* pError, 
                                            Adodb_xp::EventStatusEnum* adStatus, 
                                            Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_WillChangeRecordset(Adodb_xp::EventReasonEnum adReason, 
                                           Adodb_xp::EventStatusEnum* adStatus, 
                                           Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_RecordsetChangeComplete(Adodb_xp::EventReasonEnum adReason, 
                                               Adodb_xp::Error* pError, 
                                               Adodb_xp::EventStatusEnum* adStatus, 
                                               Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_WillMove(Adodb_xp::EventReasonEnum adReason, 
                                Adodb_xp::EventStatusEnum* adStatus, 
                                Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_MoveComplete(Adodb_xp::EventReasonEnum adReason, Adodb_xp::Error* pError, 
                                    Adodb_xp::EventStatusEnum* adStatus, 
                                    Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_EndOfRecordset(VARIANT_BOOL* fMoreData, Adodb_xp::EventStatusEnum* adStatus, 
                                      Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_FetchProgress(long Progress, long MaxProgress, 
                                     Adodb_xp::EventStatusEnum* adStatus, 
                                     Adodb_xp::_Recordset* pRecordset);
  HRESULT         Fire_FetchComplete(Adodb_xp::Error* pError, Adodb_xp::EventStatusEnum* adStatus, 
                                     Adodb_xp::_Recordset* pRecordset);
protected:
  RecordsetEventsDisp m_EventIntfObj;
};

template <class T> HRESULT
TEvents_Recordset<T>::Fire_WillChangeField(long cFields, VARIANT Fields, 
                                           Adodb_xp::EventStatusEnum* adStatus, 
                                           Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.WillChangeField(cFields, Fields, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_FieldChangeComplete(long cFields, VARIANT Fields, Adodb_xp::Error* pError, 
                                               Adodb_xp::EventStatusEnum* adStatus, 
                                               Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.FieldChangeComplete(cFields, Fields, pError, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_WillChangeRecord(Adodb_xp::EventReasonEnum adReason, long cRecords, 
                                            Adodb_xp::EventStatusEnum* adStatus, 
                                            Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.WillChangeRecord(adReason, cRecords, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_RecordChangeComplete(Adodb_xp::EventReasonEnum adReason, long cRecords, 
                                                Adodb_xp::Error* pError, 
                                                Adodb_xp::EventStatusEnum* adStatus, 
                                                Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.RecordChangeComplete(adReason, cRecords, pError, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_WillChangeRecordset(Adodb_xp::EventReasonEnum adReason, 
                                               Adodb_xp::EventStatusEnum* adStatus, 
                                               Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.WillChangeRecordset(adReason, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_RecordsetChangeComplete(Adodb_xp::EventReasonEnum adReason, 
                                                   Adodb_xp::Error* pError, 
                                                   Adodb_xp::EventStatusEnum* adStatus, 
                                                   Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.RecordsetChangeComplete(adReason, pError, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_WillMove(Adodb_xp::EventReasonEnum adReason, 
                                    Adodb_xp::EventStatusEnum* adStatus, 
                                    Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.WillMove(adReason, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_MoveComplete(Adodb_xp::EventReasonEnum adReason, Adodb_xp::Error* pError, 
                                        Adodb_xp::EventStatusEnum* adStatus, 
                                        Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.MoveComplete(adReason, pError, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_EndOfRecordset(VARIANT_BOOL* fMoreData, 
                                          Adodb_xp::EventStatusEnum* adStatus, 
                                          Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.EndOfRecordset(fMoreData, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_FetchProgress(long Progress, long MaxProgress, 
                                         Adodb_xp::EventStatusEnum* adStatus, 
                                         Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.FetchProgress(Progress, MaxProgress, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

template <class T> HRESULT
TEvents_Recordset<T>::Fire_FetchComplete(Adodb_xp::Error* pError, 
                                         Adodb_xp::EventStatusEnum* adStatus, 
                                         Adodb_xp::_Recordset* pRecordset)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.FetchComplete(pError, adStatus, pRecordset);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
  return S_OK;
}

#endif  //   __TLB_NO_EVENT_WRAPPERS

};     // namespace Adodb_xp

#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using  namespace Adodb_xp;
#endif

#pragma option pop

#endif // ADODB_XPH
