// ************************************************************************ //
// 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:38 PM from Type Library described below.

// ************************************************************************  //
// Type Lib: C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll (1)
// LIBID: {00025E01-0000-0000-C000-000000000046}
// LCID: 0
// Helpfile: C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.chm
// HelpString: Microsoft DAO 3.6 Object 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   DAO_XPH
#define   DAO_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 Dao_xp
{

// *********************************************************************//
// HelpString: Microsoft DAO 3.6 Object Library
// Version:    5.0
// *********************************************************************//


// *********************************************************************//
// 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_DAO;
extern __declspec (package) const GUID GUID_RecordsetTypeEnum;
extern __declspec (package) const GUID GUID_EditModeEnum;
extern __declspec (package) const GUID GUID_RecordsetOptionEnum;
extern __declspec (package) const GUID GUID_LockTypeEnum;
extern __declspec (package) const GUID GUID_UpdateCriteriaEnum;
extern __declspec (package) const GUID GUID_FieldAttributeEnum;
extern __declspec (package) const GUID GUID_DataTypeEnum;
extern __declspec (package) const GUID GUID_RelationAttributeEnum;
extern __declspec (package) const GUID GUID_TableDefAttributeEnum;
extern __declspec (package) const GUID GUID_QueryDefTypeEnum;
extern __declspec (package) const GUID GUID_QueryDefStateEnum;
extern __declspec (package) const GUID GUID_DatabaseTypeEnum;
extern __declspec (package) const GUID GUID_CollatingOrderEnum;
extern __declspec (package) const GUID GUID_IdleEnum;
extern __declspec (package) const GUID GUID_PermissionEnum;
extern __declspec (package) const GUID GUID_SynchronizeTypeEnum;
extern __declspec (package) const GUID GUID_ReplicaTypeEnum;
extern __declspec (package) const GUID GUID_WorkspaceTypeEnum;
extern __declspec (package) const GUID GUID_CursorDriverEnum;
extern __declspec (package) const GUID GUID_DriverPromptEnum;
extern __declspec (package) const GUID GUID_SetOptionEnum;
extern __declspec (package) const GUID GUID_ParameterDirectionEnum;
extern __declspec (package) const GUID GUID_UpdateTypeEnum;
extern __declspec (package) const GUID GUID_RecordStatusEnum;
extern __declspec (package) const GUID GUID_CommitTransOptionsEnum;
extern __declspec (package) const GUID GUID__DAOSuppHelp;
extern __declspec (package) const GUID GUID_LanguageConstants;
extern __declspec (package) const GUID IID__DAO;
extern __declspec (package) const GUID IID__DBEngine;
extern __declspec (package) const GUID IID__Collection;
extern __declspec (package) const GUID IID__DynaCollection;
extern __declspec (package) const GUID IID_Properties;
extern __declspec (package) const GUID IID_Property;
extern __declspec (package) const GUID IID_Workspaces;
extern __declspec (package) const GUID IID_Workspace;
extern __declspec (package) const GUID IID_Databases;
extern __declspec (package) const GUID IID_Database;
extern __declspec (package) const GUID IID_TableDefs;
extern __declspec (package) const GUID IID__TableDef;
extern __declspec (package) const GUID CLSID_TableDef;
extern __declspec (package) const GUID IID_Fields;
extern __declspec (package) const GUID IID__Field;
extern __declspec (package) const GUID CLSID_Field;
extern __declspec (package) const GUID IID_Indexes;
extern __declspec (package) const GUID IID__Index;
extern __declspec (package) const GUID CLSID_Index;
extern __declspec (package) const GUID IID_Recordset;
extern __declspec (package) const GUID IID__QueryDef;
extern __declspec (package) const GUID CLSID_QueryDef;
extern __declspec (package) const GUID IID_Parameters;
extern __declspec (package) const GUID IID_Parameter;
extern __declspec (package) const GUID IID_Connection;
extern __declspec (package) const GUID IID_QueryDefs;
extern __declspec (package) const GUID IID_Recordsets;
extern __declspec (package) const GUID IID_Relations;
extern __declspec (package) const GUID IID__Relation;
extern __declspec (package) const GUID CLSID_Relation;
extern __declspec (package) const GUID IID_Containers;
extern __declspec (package) const GUID IID_Container;
extern __declspec (package) const GUID IID_Documents;
extern __declspec (package) const GUID IID_Document;
extern __declspec (package) const GUID IID_Users;
extern __declspec (package) const GUID IID__User;
extern __declspec (package) const GUID CLSID_User;
extern __declspec (package) const GUID IID_Groups;
extern __declspec (package) const GUID IID__Group;
extern __declspec (package) const GUID CLSID_Group;
extern __declspec (package) const GUID IID_Connections;
extern __declspec (package) const GUID IID_Errors;
extern __declspec (package) const GUID IID_Error;
extern __declspec (package) const GUID CLSID_DBEngine;
extern __declspec (package) const GUID CLSID_PrivDBEngine;
extern __declspec (package) const GUID IID_IndexFields;

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
enum      RecordsetTypeEnum;
enum      EditModeEnum;
enum      RecordsetOptionEnum;
enum      LockTypeEnum;
enum      UpdateCriteriaEnum;
enum      FieldAttributeEnum;
enum      DataTypeEnum;
enum      RelationAttributeEnum;
enum      TableDefAttributeEnum;
enum      QueryDefTypeEnum;
enum      QueryDefStateEnum;
enum      DatabaseTypeEnum;
enum      CollatingOrderEnum;
enum      IdleEnum;
enum      PermissionEnum;
enum      SynchronizeTypeEnum;
enum      ReplicaTypeEnum;
enum      WorkspaceTypeEnum;
enum      CursorDriverEnum;
enum      DriverPromptEnum;
enum      SetOptionEnum;
enum      ParameterDirectionEnum;
enum      UpdateTypeEnum;
enum      RecordStatusEnum;
enum      CommitTransOptionsEnum;
enum      _DAOSuppHelp;
interface DECLSPEC_UUID("{0000000A-0000-0010-8000-00AA006D2EA4}") _DAO;
typedef TComInterface<_DAO, &IID__DAO> _DAOPtr;

interface DECLSPEC_UUID("{00000021-0000-0010-8000-00AA006D2EA4}") _DBEngine;
typedef TComInterface<_DBEngine, &IID__DBEngine> _DBEnginePtr;

interface DECLSPEC_UUID("{000000A0-0000-0010-8000-00AA006D2EA4}") _Collection;
typedef TComInterface<_Collection, &IID__Collection> _CollectionPtr;

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

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

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

interface DECLSPEC_UUID("{0000003B-0000-0010-8000-00AA006D2EA4}") Workspaces;
typedef TComInterface<Workspaces, &IID_Workspaces> WorkspacesPtr;

interface DECLSPEC_UUID("{00000039-0000-0010-8000-00AA006D2EA4}") Workspace;
typedef TComInterface<Workspace, &IID_Workspace> WorkspacePtr;

interface DECLSPEC_UUID("{00000073-0000-0010-8000-00AA006D2EA4}") Databases;
typedef TComInterface<Databases, &IID_Databases> DatabasesPtr;

interface DECLSPEC_UUID("{00000071-0000-0010-8000-00AA006D2EA4}") Database;
typedef TComInterface<Database, &IID_Database> DatabasePtr;

interface DECLSPEC_UUID("{0000004B-0000-0010-8000-00AA006D2EA4}") TableDefs;
typedef TComInterface<TableDefs, &IID_TableDefs> TableDefsPtr;

interface DECLSPEC_UUID("{00000049-0000-0010-8000-00AA006D2EA4}") _TableDef;
typedef TComInterface<_TableDef, &IID__TableDef> _TableDefPtr;

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

interface DECLSPEC_UUID("{00000051-0000-0010-8000-00AA006D2EA4}") _Field;
typedef TComInterface<_Field, &IID__Field> _FieldPtr;

interface DECLSPEC_UUID("{0000005B-0000-0010-8000-00AA006D2EA4}") Indexes;
typedef TComInterface<Indexes, &IID_Indexes> IndexesPtr;

interface DECLSPEC_UUID("{00000059-0000-0010-8000-00AA006D2EA4}") _Index;
typedef TComInterface<_Index, &IID__Index> _IndexPtr;

interface DECLSPEC_UUID("{00000031-0000-0010-8000-00AA006D2EA4}") Recordset;
typedef TComInterface<Recordset, &IID_Recordset> RecordsetPtr;

interface DECLSPEC_UUID("{00000079-0000-0010-8000-00AA006D2EA4}") _QueryDef;
typedef TComInterface<_QueryDef, &IID__QueryDef> _QueryDefPtr;

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

interface DECLSPEC_UUID("{00000081-0000-0010-8000-00AA006D2EA4}") Parameter;
typedef TComInterface<Parameter, &IID_Parameter> ParameterPtr;

interface DECLSPEC_UUID("{00000041-0000-0010-8000-00AA006D2EA4}") Connection;
typedef TComInterface<Connection, &IID_Connection> ConnectionPtr;

interface DECLSPEC_UUID("{0000007B-0000-0010-8000-00AA006D2EA4}") QueryDefs;
typedef TComInterface<QueryDefs, &IID_QueryDefs> QueryDefsPtr;

interface DECLSPEC_UUID("{00000033-0000-0010-8000-00AA006D2EA4}") Recordsets;
typedef TComInterface<Recordsets, &IID_Recordsets> RecordsetsPtr;

interface DECLSPEC_UUID("{0000008B-0000-0010-8000-00AA006D2EA4}") Relations;
typedef TComInterface<Relations, &IID_Relations> RelationsPtr;

interface DECLSPEC_UUID("{00000089-0000-0010-8000-00AA006D2EA4}") _Relation;
typedef TComInterface<_Relation, &IID__Relation> _RelationPtr;

interface DECLSPEC_UUID("{00000093-0000-0010-8000-00AA006D2EA4}") Containers;
typedef TComInterface<Containers, &IID_Containers> ContainersPtr;

interface DECLSPEC_UUID("{00000091-0000-0010-8000-00AA006D2EA4}") Container;
typedef TComInterface<Container, &IID_Container> ContainerPtr;

interface DECLSPEC_UUID("{0000009B-0000-0010-8000-00AA006D2EA4}") Documents;
typedef TComInterface<Documents, &IID_Documents> DocumentsPtr;

interface DECLSPEC_UUID("{00000099-0000-0010-8000-00AA006D2EA4}") Document;
typedef TComInterface<Document, &IID_Document> DocumentPtr;

interface DECLSPEC_UUID("{0000006B-0000-0010-8000-00AA006D2EA4}") Users;
typedef TComInterface<Users, &IID_Users> UsersPtr;

interface DECLSPEC_UUID("{00000069-0000-0010-8000-00AA006D2EA4}") _User;
typedef TComInterface<_User, &IID__User> _UserPtr;

interface DECLSPEC_UUID("{00000063-0000-0010-8000-00AA006D2EA4}") Groups;
typedef TComInterface<Groups, &IID_Groups> GroupsPtr;

interface DECLSPEC_UUID("{00000061-0000-0010-8000-00AA006D2EA4}") _Group;
typedef TComInterface<_Group, &IID__Group> _GroupPtr;

interface DECLSPEC_UUID("{00000043-0000-0010-8000-00AA006D2EA4}") Connections;
typedef TComInterface<Connections, &IID_Connections> ConnectionsPtr;

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

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

interface DECLSPEC_UUID("{0000005D-0000-0010-8000-00AA006D2EA4}") IndexFields;
typedef TComInterface<IndexFields, &IID_IndexFields> IndexFieldsPtr;


// *********************************************************************//
// 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 _TableDef TableDef;
typedef _TableDefPtr TableDefPtr;
typedef _Field Field;
typedef _FieldPtr FieldPtr;
typedef _Index Index;
typedef _IndexPtr IndexPtr;
typedef _QueryDef QueryDef;
typedef _QueryDefPtr QueryDefPtr;
typedef _Relation Relation;
typedef _RelationPtr RelationPtr;
typedef _User User;
typedef _UserPtr UserPtr;
typedef _Group Group;
typedef _GroupPtr GroupPtr;
typedef _DBEngine DBEngine;
typedef _DBEnginePtr DBEnginePtr;
typedef _DBEngine PrivDBEngine;
typedef _DBEnginePtr PrivDBEnginePtr;

#define LIBID_OF_TableDef (&LIBID_DAO)
#define LIBID_OF_Field (&LIBID_DAO)
#define LIBID_OF_Index (&LIBID_DAO)
#define LIBID_OF_QueryDef (&LIBID_DAO)
#define LIBID_OF_Relation (&LIBID_DAO)
#define LIBID_OF_User (&LIBID_DAO)
#define LIBID_OF_Group (&LIBID_DAO)
#define LIBID_OF_DBEngine (&LIBID_DAO)
#define LIBID_OF_PrivDBEngine (&LIBID_DAO)

// *********************************************************************//
// Declaration of Enumerations defined in Type Library                    
// *********************************************************************//
typedef enum RecordsetTypeEnum
{
  dbOpenTable = 1, 
  dbOpenDynaset = 2, 
  dbOpenSnapshot = 4, 
  dbOpenForwardOnly = 8, 
  dbOpenDynamic = 16
} RecordsetTypeEnum;

typedef enum EditModeEnum
{
  dbEditNone = 0, 
  dbEditInProgress = 1, 
  dbEditAdd = 2
} EditModeEnum;

typedef enum RecordsetOptionEnum
{
  dbDenyWrite = 1, 
  dbDenyRead = 2, 
  dbReadOnly = 4, 
  dbAppendOnly = 8, 
  dbInconsistent = 16, 
  dbConsistent = 32, 
  dbSQLPassThrough = 64, 
  dbFailOnError = 128, 
  dbForwardOnly = 256, 
  dbSeeChanges = 512, 
  dbRunAsync = 1024, 
  dbExecDirect = 2048
} RecordsetOptionEnum;

typedef enum LockTypeEnum
{
  dbPessimistic = 2, 
  dbOptimistic = 3, 
  dbOptimisticValue = 1, 
  dbOptimisticBatch = 5
} LockTypeEnum;

typedef enum UpdateCriteriaEnum
{
  dbCriteriaKey = 1, 
  dbCriteriaModValues = 2, 
  dbCriteriaAllCols = 4, 
  dbCriteriaTimestamp = 8, 
  dbCriteriaDeleteInsert = 16, 
  dbCriteriaUpdate = 32
} UpdateCriteriaEnum;

typedef enum FieldAttributeEnum
{
  dbFixedField = 1, 
  dbVariableField = 2, 
  dbAutoIncrField = 16, 
  dbUpdatableField = 32, 
  dbSystemField = 8192, 
  dbHyperlinkField = 32768, 
  dbDescending = 1
} FieldAttributeEnum;

typedef enum DataTypeEnum
{
  dbBoolean = 1, 
  dbByte = 2, 
  dbInteger = 3, 
  dbLong = 4, 
  dbCurrency = 5, 
  dbSingle = 6, 
  dbDouble = 7, 
  dbDate = 8, 
  dbBinary = 9, 
  dbText = 10, 
  dbLongBinary = 11, 
  dbMemo = 12, 
  dbGUID = 15, 
  dbBigInt = 16, 
  dbVarBinary = 17, 
  dbChar = 18, 
  dbNumeric = 19, 
  dbDecimal = 20, 
  dbFloat = 21, 
  dbTime = 22, 
  dbTimeStamp = 23
} DataTypeEnum;

typedef enum RelationAttributeEnum
{
  dbRelationUnique = 1, 
  dbRelationDontEnforce = 2, 
  dbRelationInherited = 4, 
  dbRelationUpdateCascade = 256, 
  dbRelationDeleteCascade = 4096, 
  dbRelationLeft = 16777216, 
  dbRelationRight = 33554432
} RelationAttributeEnum;

typedef enum TableDefAttributeEnum
{
  dbAttachExclusive = 65536, 
  dbAttachSavePWD = 131072, 
  dbSystemObject = 0x80000002, 
  dbAttachedTable = 1073741824, 
  dbAttachedODBC = 536870912, 
  dbHiddenObject = 1
} TableDefAttributeEnum;

typedef enum QueryDefTypeEnum
{
  dbQSelect = 0, 
  dbQProcedure = 224, 
  dbQAction = 240, 
  dbQCrosstab = 16, 
  dbQDelete = 32, 
  dbQUpdate = 48, 
  dbQAppend = 64, 
  dbQMakeTable = 80, 
  dbQDDL = 96, 
  dbQSQLPassThrough = 112, 
  dbQSetOperation = 128, 
  dbQSPTBulk = 144, 
  dbQCompound = 160
} QueryDefTypeEnum;

typedef enum QueryDefStateEnum
{
  dbQPrepare = 1, 
  dbQUnprepare = 2
} QueryDefStateEnum;

typedef enum DatabaseTypeEnum
{
  dbVersion10 = 1, 
  dbEncrypt = 2, 
  dbDecrypt = 4, 
  dbVersion11 = 8, 
  dbVersion20 = 16, 
  dbVersion30 = 32, 
  dbVersion40 = 64
} DatabaseTypeEnum;

typedef enum CollatingOrderEnum
{
  dbSortNeutral = 1024, 
  dbSortArabic = 1025, 
  dbSortCyrillic = 1049, 
  dbSortCzech = 1029, 
  dbSortDutch = 1043, 
  dbSortGeneral = 1033, 
  dbSortGreek = 1032, 
  dbSortHebrew = 1037, 
  dbSortHungarian = 1038, 
  dbSortIcelandic = 1039, 
  dbSortNorwdan = 1030, 
  dbSortPDXIntl = 1033, 
  dbSortPDXNor = 1030, 
  dbSortPDXSwe = 1053, 
  dbSortPolish = 1045, 
  dbSortSpanish = 1034, 
  dbSortSwedFin = 1053, 
  dbSortTurkish = 1055, 
  dbSortJapanese = 1041, 
  dbSortChineseSimplified = 2052, 
  dbSortChineseTraditional = 1028, 
  dbSortKorean = 1042, 
  dbSortThai = 1054, 
  dbSortSlovenian = 1060, 
  dbSortUndefined = 0xFFFFFFFF
} CollatingOrderEnum;

typedef enum IdleEnum
{
  dbFreeLocks = 1, 
  dbRefreshCache = 8
} IdleEnum;

typedef enum PermissionEnum
{
  dbSecNoAccess = 0, 
  dbSecFullAccess = 1048575, 
  dbSecDelete = 65536, 
  dbSecReadSec = 131072, 
  dbSecWriteSec = 262144, 
  dbSecWriteOwner = 524288, 
  dbSecDBCreate = 1, 
  dbSecDBOpen = 2, 
  dbSecDBExclusive = 4, 
  dbSecDBAdmin = 8, 
  dbSecCreate = 1, 
  dbSecReadDef = 4, 
  dbSecWriteDef = 65548, 
  dbSecRetrieveData = 20, 
  dbSecInsertData = 32, 
  dbSecReplaceData = 64, 
  dbSecDeleteData = 128
} PermissionEnum;

typedef enum SynchronizeTypeEnum
{
  dbRepExportChanges = 1, 
  dbRepImportChanges = 2, 
  dbRepImpExpChanges = 4, 
  dbRepSyncInternet = 16
} SynchronizeTypeEnum;

typedef enum ReplicaTypeEnum
{
  dbRepMakeReadOnly = 2, 
  dbRepMakePartial = 1
} ReplicaTypeEnum;

typedef enum WorkspaceTypeEnum
{
  dbUseODBC = 1, 
  dbUseJet = 2
} WorkspaceTypeEnum;

typedef enum CursorDriverEnum
{
  dbUseDefaultCursor = 0xFFFFFFFF, 
  dbUseODBCCursor = 1, 
  dbUseServerCursor = 2, 
  dbUseClientBatchCursor = 3, 
  dbUseNoCursor = 4
} CursorDriverEnum;

typedef enum DriverPromptEnum
{
  dbDriverPrompt = 2, 
  dbDriverNoPrompt = 1, 
  dbDriverComplete = 0, 
  dbDriverCompleteRequired = 3
} DriverPromptEnum;

typedef enum SetOptionEnum
{
  dbPageTimeout = 6, 
  dbLockRetry = 57, 
  dbMaxBufferSize = 8, 
  dbUserCommitSync = 58, 
  dbImplicitCommitSync = 59, 
  dbExclusiveAsyncDelay = 60, 
  dbSharedAsyncDelay = 61, 
  dbMaxLocksPerFile = 62, 
  dbLockDelay = 63, 
  dbRecycleLVs = 65, 
  dbFlushTransactionTimeout = 66
} SetOptionEnum;

typedef enum ParameterDirectionEnum
{
  dbParamInput = 1, 
  dbParamOutput = 2, 
  dbParamInputOutput = 3, 
  dbParamReturnValue = 4
} ParameterDirectionEnum;

typedef enum UpdateTypeEnum
{
  dbUpdateBatch = 4, 
  dbUpdateRegular = 1, 
  dbUpdateCurrentRecord = 2
} UpdateTypeEnum;

typedef enum RecordStatusEnum
{
  dbRecordUnmodified = 0, 
  dbRecordModified = 1, 
  dbRecordNew = 2, 
  dbRecordDeleted = 3, 
  dbRecordDBDeleted = 4
} RecordStatusEnum;

typedef enum CommitTransOptionsEnum
{
  dbForceOSFlush = 1
} CommitTransOptionsEnum;

typedef enum _DAOSuppHelp
{
  LogMessages = 0, 
  KeepLocal = 0, 
  Replicable = 0, 
  ReplicableBool = 0, 
  V1xNullBehavior = 0
} _DAOSuppHelp;

// *********************************************************************//
// Interface: _DAO
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000000A-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _DAO  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/) = 0; // [10]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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


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

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _DBEngine
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000021-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _DBEngine  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Version(BSTR* pbstr/*[out,retval]*/) = 0; // [1610809344]
  virtual HRESULT STDMETHODCALLTYPE get_IniPath(BSTR* pbstr/*[out,retval]*/) = 0; // [1610809345]
  virtual HRESULT STDMETHODCALLTYPE set_IniPath(BSTR pbstr/*[in]*/) = 0; // [1610809345]
  virtual HRESULT STDMETHODCALLTYPE set_DefaultUser(BSTR Param1/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE set_DefaultPassword(BSTR Param1/*[in]*/) = 0; // [1610809348]
  virtual HRESULT STDMETHODCALLTYPE get_LoginTimeout(short* ps/*[out,retval]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE set_LoginTimeout(short ps/*[in]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE get_Workspaces(Dao_xp::Workspaces** ppworks/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Errors(Dao_xp::Errors** pperrs/*[out,retval]*/) = 0; // [1610809352]
  virtual HRESULT STDMETHODCALLTYPE Idle(VARIANT Action/*[in,opt]*/= TNoParam()) = 0; // [1610809353]
  virtual HRESULT STDMETHODCALLTYPE CompactDatabase(BSTR SrcName/*[in]*/, BSTR DstName/*[in]*/, 
                                                    VARIANT DstLocale/*[in,opt]*/= TNoParam(), 
                                                    VARIANT Options/*[in,opt]*/= TNoParam(), 
                                                    VARIANT SrcLocale/*[in,opt]*/= TNoParam()) = 0; // [1610809354]
  virtual HRESULT STDMETHODCALLTYPE RepairDatabase(BSTR Name/*[in]*/) = 0; // [1610809355]
  virtual HRESULT STDMETHODCALLTYPE RegisterDatabase(BSTR Dsn/*[in]*/, BSTR Driver/*[in]*/, 
                                                     VARIANT_BOOL Silent/*[in]*/, 
                                                     BSTR Attributes/*[in]*/) = 0; // [1610809356]
  virtual HRESULT STDMETHODCALLTYPE _30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                        BSTR Password/*[in]*/, 
                                                        Dao_xp::Workspace** ppwrk/*[out,retval]*/) = 0; // [1610809357]
  virtual HRESULT STDMETHODCALLTYPE OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                                 VARIANT ReadOnly/*[in,opt]*/, 
                                                 VARIANT Connect/*[in,opt]*/, 
                                                 Dao_xp::Database** ppDb/*[out,retval]*/) = 0; // [1610809358]
  virtual HRESULT STDMETHODCALLTYPE CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, 
                                                   VARIANT Option/*[in,opt]*/, 
                                                   Dao_xp::Database** ppDb/*[out,retval]*/) = 0; // [1610809359]
  virtual HRESULT STDMETHODCALLTYPE FreeLocks(void) = 0; // [1610809360]
  virtual HRESULT STDMETHODCALLTYPE BeginTrans(void) = 0; // [1610809361]
  virtual HRESULT STDMETHODCALLTYPE CommitTrans(long Option/*[in,def,opt]*/) = 0; // [1610809362]
  virtual HRESULT STDMETHODCALLTYPE Rollback(void) = 0; // [1610809363]
  virtual HRESULT STDMETHODCALLTYPE SetDefaultWorkspace(BSTR Name/*[in]*/, BSTR Password/*[in]*/) = 0; // [1610809364]
  virtual HRESULT STDMETHODCALLTYPE SetDataAccessOption(short Option/*[in]*/, VARIANT Value/*[in]*/) = 0; // [1610809365]
  virtual HRESULT STDMETHODCALLTYPE ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/, 
                                              long* pl/*[out,retval]*/) = 0; // [1610809366]
  virtual HRESULT STDMETHODCALLTYPE get_SystemDB(BSTR* pbstr/*[out,retval]*/) = 0; // [1610809367]
  virtual HRESULT STDMETHODCALLTYPE set_SystemDB(BSTR pbstr/*[in]*/) = 0; // [1610809367]
  virtual HRESULT STDMETHODCALLTYPE CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                    BSTR Password/*[in]*/, 
                                                    VARIANT UseType/*[in,opt]*/, 
                                                    Dao_xp::Workspace** ppwrk/*[out,retval]*/) = 0; // [1610809369]
  virtual HRESULT STDMETHODCALLTYPE OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                                   VARIANT ReadOnly/*[in,opt]*/, 
                                                   VARIANT Connect/*[in,opt]*/, 
                                                   Dao_xp::Connection** ppconn/*[out,retval]*/) = 0; // [1610809370]
  virtual HRESULT STDMETHODCALLTYPE get_DefaultType(long* Option/*[out,retval]*/) = 0; // [1610809371]
  virtual HRESULT STDMETHODCALLTYPE set_DefaultType(long Option/*[in]*/) = 0; // [1610809371]
  virtual HRESULT STDMETHODCALLTYPE SetOption(long Option/*[in]*/, VARIANT Value/*[in]*/) = 0; // [1610809373]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

  short __fastcall get_LoginTimeout(void)
  {
    short ps;
    OLECHECK(this->get_LoginTimeout((short*)&ps));
    return ps;
  }

  Dao_xp::WorkspacesPtr __fastcall get_Workspaces(void)
  {
    Dao_xp::WorkspacesPtr ppworks;
    OLECHECK(this->get_Workspaces(&ppworks));
    return ppworks;
  }

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

  Dao_xp::Workspace* __fastcall _30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                    BSTR Password/*[in]*/)
  {
    Dao_xp::Workspace* ppwrk = 0;
    OLECHECK(this->_30_CreateWorkspace(Name, UserName, Password, (Dao_xp::Workspace**)&ppwrk));
    return ppwrk;
  }

  Dao_xp::Database* __fastcall OpenDatabase(BSTR Name/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam(), 
                                            VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                            VARIANT Connect/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Database* ppDb = 0;
    OLECHECK(this->OpenDatabase(Name, Options, ReadOnly, Connect, (Dao_xp::Database**)&ppDb));
    return ppDb;
  }

  Dao_xp::Database* __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, 
                                              VARIANT Option/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Database* ppDb = 0;
    OLECHECK(this->CreateDatabase(Name, Locale, Option, (Dao_xp::Database**)&ppDb));
    return ppDb;
  }

  long __fastcall ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/= TNoParam())
  {
    long pl;
    OLECHECK(this->ISAMStats(StatNum, Reset, (long*)&pl));
    return pl;
  }

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

  Dao_xp::Workspace* __fastcall CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                BSTR Password/*[in]*/, 
                                                VARIANT UseType/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Workspace* ppwrk = 0;
    OLECHECK(this->CreateWorkspace(Name, UserName, Password, UseType, (Dao_xp::Workspace**)&ppwrk));
    return ppwrk;
  }

  Dao_xp::Connection* __fastcall OpenConnection(BSTR Name/*[in]*/, 
                                                VARIANT Options/*[in,opt]*/= TNoParam(), 
                                                VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                                VARIANT Connect/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Connection* ppconn = 0;
    OLECHECK(this->OpenConnection(Name, Options, ReadOnly, Connect, (Dao_xp::Connection**)&ppconn));
    return ppconn;
  }

  long __fastcall get_DefaultType(void)
  {
    long Option;
    OLECHECK(this->get_DefaultType((long*)&Option));
    return Option;
  }


  __property   BSTR            Version = {read = get_Version};
  __property   BSTR            IniPath = {read = get_IniPath, write = set_IniPath};
  __property   BSTR            DefaultUser = {write = set_DefaultUser};
  __property   BSTR            DefaultPassword = {write = set_DefaultPassword};
  __property   short           LoginTimeout = {read = get_LoginTimeout, write = set_LoginTimeout};
  __property   Dao_xp::WorkspacesPtr Workspaces = {read = get_Workspaces};
  __property   Dao_xp::ErrorsPtr Errors = {read = get_Errors};
  __property   BSTR            SystemDB = {read = get_SystemDB, write = set_SystemDB};
  __property   long            DefaultType = {read = get_DefaultType, write = set_DefaultType};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

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

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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


  __property   short           Count = {read = get_Count};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _DynaCollection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {000000A2-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _DynaCollection  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE Append(LPDISPATCH Object/*[in]*/) = 0; // [1610809344]
  virtual HRESULT STDMETHODCALLTYPE Delete(BSTR Name/*[in]*/) = 0; // [1610809345]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Properties
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000029-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Properties  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Property** ppprop/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Property
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000027-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Property  : public Dao_xp::_DAO
{
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 set_Name(BSTR pbstr/*[in]*/) = 0; // [1610809346]
  virtual HRESULT STDMETHODCALLTYPE get_Type(short* ptype/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Type(short ptype/*[in]*/) = 0; // [1610809348]
  virtual HRESULT STDMETHODCALLTYPE get_Inherited(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]

#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;
  }

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

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


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   VARIANT_BOOL    Inherited = {read = get_Inherited};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Workspaces
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000003B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Workspaces  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Workspace** ppwrk/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Workspace* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Workspace* ppwrk = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Workspace**)&ppwrk));
    return ppwrk;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Workspace
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000039-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Workspace  : public Dao_xp::_DAO
{
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_UserName(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set__30_UserName(BSTR Param1/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set__30_Password(BSTR Param1/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_IsolateODBCTrans(short* ps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_IsolateODBCTrans(short ps/*[in]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE get_Databases(Dao_xp::Databases** ppdbs/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE BeginTrans(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CommitTrans(long Options/*[in,def,opt]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Rollback(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                                 VARIANT ReadOnly/*[in,opt]*/, 
                                                 VARIANT Connect/*[in,opt]*/, 
                                                 Dao_xp::Database** ppDb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateDatabase(BSTR Name/*[in]*/, BSTR Connect/*[in]*/, 
                                                   VARIANT Option/*[in,opt]*/, 
                                                   Dao_xp::Database** ppDb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                               VARIANT Password/*[in,opt]*/, 
                                               Dao_xp::User** ppusr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                                Dao_xp::Group** ppgrp/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                                   VARIANT ReadOnly/*[in,opt]*/, 
                                                   VARIANT Connect/*[in,opt]*/, 
                                                   Dao_xp::Connection** ppconn/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_LoginTimeout(long* pTimeout/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_LoginTimeout(long pTimeout/*[in]*/) = 0; // [1610809363]
  virtual HRESULT STDMETHODCALLTYPE get_DefaultCursorDriver(long* pCursorType/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_DefaultCursorDriver(long pCursorType/*[in]*/) = 0; // [1610809365]
  virtual HRESULT STDMETHODCALLTYPE get_hEnv(long* phEnv/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Type(long* ptype/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Connections(Dao_xp::Connections** ppcns/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

  short __fastcall get_IsolateODBCTrans(void)
  {
    short ps;
    OLECHECK(this->get_IsolateODBCTrans((short*)&ps));
    return ps;
  }

  Dao_xp::DatabasesPtr __fastcall get_Databases(void)
  {
    Dao_xp::DatabasesPtr ppdbs;
    OLECHECK(this->get_Databases(&ppdbs));
    return ppdbs;
  }

  Dao_xp::UsersPtr __fastcall get_Users(void)
  {
    Dao_xp::UsersPtr ppusrs;
    OLECHECK(this->get_Users(&ppusrs));
    return ppusrs;
  }

  Dao_xp::GroupsPtr __fastcall get_Groups(void)
  {
    Dao_xp::GroupsPtr ppgrps;
    OLECHECK(this->get_Groups(&ppgrps));
    return ppgrps;
  }

  Dao_xp::Database* __fastcall OpenDatabase(BSTR Name/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam(), 
                                            VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                            VARIANT Connect/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Database* ppDb = 0;
    OLECHECK(this->OpenDatabase(Name, Options, ReadOnly, Connect, (Dao_xp::Database**)&ppDb));
    return ppDb;
  }

  Dao_xp::Database* __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Connect/*[in]*/, 
                                              VARIANT Option/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Database* ppDb = 0;
    OLECHECK(this->CreateDatabase(Name, Connect, Option, (Dao_xp::Database**)&ppDb));
    return ppDb;
  }

  Dao_xp::User* __fastcall CreateUser(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                      VARIANT PID/*[in,opt]*/= TNoParam(), 
                                      VARIANT Password/*[in,opt]*/= TNoParam())
  {
    Dao_xp::User* ppusr = 0;
    OLECHECK(this->CreateUser(Name, PID, Password, (Dao_xp::User**)&ppusr));
    return ppusr;
  }

  Dao_xp::Group* __fastcall CreateGroup(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT PID/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Group* ppgrp = 0;
    OLECHECK(this->CreateGroup(Name, PID, (Dao_xp::Group**)&ppgrp));
    return ppgrp;
  }

  Dao_xp::Connection* __fastcall OpenConnection(BSTR Name/*[in]*/, 
                                                VARIANT Options/*[in,opt]*/= TNoParam(), 
                                                VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                                VARIANT Connect/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Connection* ppconn = 0;
    OLECHECK(this->OpenConnection(Name, Options, ReadOnly, Connect, (Dao_xp::Connection**)&ppconn));
    return ppconn;
  }

  long __fastcall get_LoginTimeout(void)
  {
    long pTimeout;
    OLECHECK(this->get_LoginTimeout((long*)&pTimeout));
    return pTimeout;
  }

  long __fastcall get_DefaultCursorDriver(void)
  {
    long pCursorType;
    OLECHECK(this->get_DefaultCursorDriver((long*)&pCursorType));
    return pCursorType;
  }

  long __fastcall get_hEnv(void)
  {
    long phEnv;
    OLECHECK(this->get_hEnv((long*)&phEnv));
    return phEnv;
  }

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

  Dao_xp::ConnectionsPtr __fastcall get_Connections(void)
  {
    Dao_xp::ConnectionsPtr ppcns;
    OLECHECK(this->get_Connections(&ppcns));
    return ppcns;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            UserName = {read = get_UserName};
  __property   BSTR            _30_UserName = {write = set__30_UserName};
  __property   BSTR            _30_Password = {write = set__30_Password};
  __property   short           IsolateODBCTrans = {read = get_IsolateODBCTrans, write = set_IsolateODBCTrans};
  __property   Dao_xp::DatabasesPtr Databases = {read = get_Databases};
  __property   Dao_xp::UsersPtr Users = {read = get_Users};
  __property   Dao_xp::GroupsPtr Groups = {read = get_Groups};
  __property   long            LoginTimeout = {read = get_LoginTimeout, write = set_LoginTimeout};
  __property   long            DefaultCursorDriver = {read = get_DefaultCursorDriver, write = set_DefaultCursorDriver};
  __property   long            hEnv = {read = get_hEnv};
  __property   long            Type = {read = get_Type};
  __property   Dao_xp::ConnectionsPtr Connections = {read = get_Connections};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Databases
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000073-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Databases  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Database** ppDb/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Database* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Database* ppDb = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Database**)&ppDb));
    return ppDb;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Database
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000071-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Database  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_CollatingOrder(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Connect(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_QueryTimeout(short* ps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_QueryTimeout(short ps/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE get_Transactions(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Version(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_RecordsAffected(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_TableDefs(Dao_xp::TableDefs** pptdfs/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_QueryDefs(Dao_xp::QueryDefs** ppqdfs/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Relations(Dao_xp::Relations** pprls/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Containers(Dao_xp::Containers** ppctns/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Recordsets(Dao_xp::Recordsets** pprsts/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Execute(BSTR Query/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam()) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _30_OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                                      VARIANT Options/*[in,opt]*/, 
                                                      Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateProperty(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/, 
                                                   VARIANT DDL/*[in,opt]*/, 
                                                   Dao_xp::Property** pprp/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateRelation(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Table/*[in,opt]*/, 
                                                   VARIANT ForeignTable/*[in,opt]*/, 
                                                   VARIANT Attributes/*[in,opt]*/, 
                                                   Dao_xp::Relation** pprel/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateTableDef(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Attributes/*[in,opt]*/, 
                                                   VARIANT SourceTableName/*[in,opt]*/, 
                                                   VARIANT Connect/*[in,opt]*/, 
                                                   Dao_xp::TableDef** pptdf/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE BeginTrans(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CommitTrans(long Options/*[in,def,opt]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Rollback(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateDynaset(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                                  VARIANT Inconsistent/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateQueryDef(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT SQLText/*[in,opt]*/, 
                                                   Dao_xp::QueryDef** ppqdf/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateSnapshot(BSTR Source/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                                   Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE DeleteQueryDef(BSTR Name/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE ExecuteSQL(BSTR SQL/*[in]*/, long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE ListFields(BSTR Name/*[in]*/, 
                                               Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE ListTables(Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenQueryDef(BSTR Name/*[in]*/, 
                                                 Dao_xp::QueryDef** ppqdf/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenTable(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                              Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_ReplicaID(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_DesignMasterID(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_DesignMasterID(BSTR pbstr/*[in]*/) = 0; // [1610809377]
  virtual HRESULT STDMETHODCALLTYPE Synchronize(BSTR DbPathName/*[in]*/, 
                                                VARIANT ExchangeType/*[in,opt]*/= TNoParam()) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE MakeReplica(BSTR PathName/*[in]*/, BSTR Description/*[in]*/, 
                                                VARIANT Options/*[in,opt]*/= TNoParam()) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Connect(BSTR pbstr/*[in]*/) = 0; // [1610809345]
  virtual HRESULT STDMETHODCALLTYPE NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                                  VARIANT Options/*[in,opt]*/, 
                                                  VARIANT LockEdit/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Connection(Dao_xp::Connection** ppCn/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE PopulatePartial(BSTR DbPathName/*[in]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

  short __fastcall get_QueryTimeout(void)
  {
    short ps;
    OLECHECK(this->get_QueryTimeout((short*)&ps));
    return ps;
  }

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

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

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

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

  Dao_xp::TableDefsPtr __fastcall get_TableDefs(void)
  {
    Dao_xp::TableDefsPtr pptdfs;
    OLECHECK(this->get_TableDefs(&pptdfs));
    return pptdfs;
  }

  Dao_xp::QueryDefsPtr __fastcall get_QueryDefs(void)
  {
    Dao_xp::QueryDefsPtr ppqdfs;
    OLECHECK(this->get_QueryDefs(&ppqdfs));
    return ppqdfs;
  }

  Dao_xp::RelationsPtr __fastcall get_Relations(void)
  {
    Dao_xp::RelationsPtr pprls;
    OLECHECK(this->get_Relations(&pprls));
    return pprls;
  }

  Dao_xp::ContainersPtr __fastcall get_Containers(void)
  {
    Dao_xp::ContainersPtr ppctns;
    OLECHECK(this->get_Containers(&ppctns));
    return ppctns;
  }

  Dao_xp::RecordsetsPtr __fastcall get_Recordsets(void)
  {
    Dao_xp::RecordsetsPtr pprsts;
    OLECHECK(this->get_Recordsets(&pprsts));
    return pprsts;
  }

  Dao_xp::Recordset* __fastcall _30_OpenRecordset(BSTR Name/*[in]*/, 
                                                  VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                  VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->_30_OpenRecordset(Name, Type, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Property* pprp = 0;
    OLECHECK(this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp));
    return pprp;
  }

  Dao_xp::Relation* __fastcall CreateRelation(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Table/*[in,opt]*/= TNoParam(), 
                                              VARIANT ForeignTable/*[in,opt]*/= TNoParam(), 
                                              VARIANT Attributes/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Relation* pprel = 0;
    OLECHECK(this->CreateRelation(Name, Table, ForeignTable, Attributes, (Dao_xp::Relation**)&pprel));
    return pprel;
  }

  Dao_xp::TableDef* __fastcall CreateTableDef(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Attributes/*[in,opt]*/= TNoParam(), 
                                              VARIANT SourceTableName/*[in,opt]*/= TNoParam(), 
                                              VARIANT Connect/*[in,opt]*/= TNoParam())
  {
    Dao_xp::TableDef* pptdf = 0;
    OLECHECK(this->CreateTableDef(Name, Attributes, SourceTableName, Connect, (Dao_xp::TableDef**)&pptdf));
    return pptdf;
  }

  Dao_xp::Recordset* __fastcall CreateDynaset(BSTR Name/*[in]*/, 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->CreateDynaset(Name, Options, Inconsistent, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::QueryDef* __fastcall CreateQueryDef(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT SQLText/*[in,opt]*/= TNoParam())
  {
    Dao_xp::QueryDef* ppqdf = 0;
    OLECHECK(this->CreateQueryDef(Name, SQLText, (Dao_xp::QueryDef**)&ppqdf));
    return ppqdf;
  }

  Dao_xp::Recordset* __fastcall CreateSnapshot(BSTR Source/*[in]*/, 
                                               VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->CreateSnapshot(Source, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  long __fastcall ExecuteSQL(BSTR SQL/*[in]*/)
  {
    long pl;
    OLECHECK(this->ExecuteSQL(SQL, (long*)&pl));
    return pl;
  }

  Dao_xp::Recordset* __fastcall ListFields(BSTR Name/*[in]*/)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->ListFields(Name, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall ListTables(void)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->ListTables((Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::QueryDef* __fastcall OpenQueryDef(BSTR Name/*[in]*/)
  {
    Dao_xp::QueryDef* ppqdf = 0;
    OLECHECK(this->OpenQueryDef(Name, (Dao_xp::QueryDef**)&ppqdf));
    return ppqdf;
  }

  Dao_xp::Recordset* __fastcall OpenTable(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->OpenTable(Name, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

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

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

  Dao_xp::Recordset* __fastcall OpenRecordset(BSTR Name/*[in]*/, 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->OpenRecordset(Name, Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::ConnectionPtr __fastcall get_Connection(void)
  {
    Dao_xp::ConnectionPtr ppCn;
    OLECHECK(this->get_Connection(&ppCn));
    return ppCn;
  }


  __property   long            CollatingOrder = {read = get_CollatingOrder};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   BSTR            Name = {read = get_Name};
  __property   short           QueryTimeout = {read = get_QueryTimeout, write = set_QueryTimeout};
  __property   VARIANT_BOOL    Transactions = {read = get_Transactions};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            Version = {read = get_Version};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   Dao_xp::TableDefsPtr TableDefs = {read = get_TableDefs};
  __property   Dao_xp::QueryDefsPtr QueryDefs = {read = get_QueryDefs};
  __property   Dao_xp::RelationsPtr Relations = {read = get_Relations};
  __property   Dao_xp::ContainersPtr Containers = {read = get_Containers};
  __property   Dao_xp::RecordsetsPtr Recordsets = {read = get_Recordsets};
  __property   BSTR            ReplicaID = {read = get_ReplicaID};
  __property   BSTR            DesignMasterID = {read = get_DesignMasterID, write = set_DesignMasterID};
  __property   Dao_xp::ConnectionPtr Connection = {read = get_Connection};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: TableDefs
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000004B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface TableDefs  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::TableDef** pptdf/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::TableDef* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::TableDef* pptdf = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::TableDef**)&pptdf));
    return pptdf;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _TableDef
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000049-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _TableDef  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long pl/*[in]*/) = 0; // [1610809344]
  virtual HRESULT STDMETHODCALLTYPE get_Connect(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Connect(BSTR pbstr/*[in]*/) = 0; // [1610809346]
  virtual HRESULT STDMETHODCALLTYPE get_DateCreated(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_LastUpdated(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Name(BSTR pbstr/*[in]*/) = 0; // [1610809350]
  virtual HRESULT STDMETHODCALLTYPE get_SourceTableName(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_SourceTableName(BSTR pbstr/*[in]*/) = 0; // [1610809352]
  virtual HRESULT STDMETHODCALLTYPE get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_ValidationText(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ValidationText(BSTR pbstr/*[in]*/) = 0; // [1610809355]
  virtual HRESULT STDMETHODCALLTYPE get_ValidationRule(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ValidationRule(BSTR pbstr/*[in]*/) = 0; // [1610809357]
  virtual HRESULT STDMETHODCALLTYPE get_RecordCount(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                  VARIANT Options/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE RefreshLink(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                                VARIANT Size/*[in,opt]*/, 
                                                Dao_xp::Field** ppfld/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateIndex(VARIANT Name/*[in,opt]*/, 
                                                Dao_xp::Index** ppidx/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateProperty(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/, 
                                                   VARIANT DDL/*[in,opt]*/, 
                                                   Dao_xp::Property** pprp/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_ConflictTable(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_ReplicaFilter(VARIANT* pFilter/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ReplicaFilter(VARIANT pFilter/*[in]*/) = 0; // [1610809368]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

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

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

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

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

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

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

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

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

  Dao_xp::IndexesPtr __fastcall get_Indexes(void)
  {
    Dao_xp::IndexesPtr ppidxs;
    OLECHECK(this->get_Indexes(&ppidxs));
    return ppidxs;
  }

  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Field* __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT Type/*[in,opt]*/= TNoParam(), 
                                        VARIANT Size/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Field* ppfld = 0;
    OLECHECK(this->CreateField(Name, Type, Size, (Dao_xp::Field**)&ppfld));
    return ppfld;
  }

  Dao_xp::Index* __fastcall CreateIndex(VARIANT Name/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Index* ppidx = 0;
    OLECHECK(this->CreateIndex(Name, (Dao_xp::Index**)&ppidx));
    return ppidx;
  }

  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Property* pprp = 0;
    OLECHECK(this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp));
    return pprp;
  }

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

  VARIANT __fastcall get_ReplicaFilter(void)
  {
    VARIANT pFilter;
    OLECHECK(this->get_ReplicaFilter((VARIANT*)&pFilter));
    return pFilter;
  }


  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            SourceTableName = {read = get_SourceTableName, write = set_SourceTableName};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            ValidationText = {read = get_ValidationText, write = set_ValidationText};
  __property   BSTR            ValidationRule = {read = get_ValidationRule, write = set_ValidationRule};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::IndexesPtr Indexes = {read = get_Indexes};
  __property   BSTR            ConflictTable = {read = get_ConflictTable};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Fields
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000053-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Fields  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Field** ppfld/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Field
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000051-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Field  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_CollatingOrder(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Type(short* ps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Type(short ps/*[in]*/) = 0; // [1610809345]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Name(BSTR pbstr/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE get_Size(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Size(long pl/*[in]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE get_SourceField(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_SourceTable(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  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_Attributes(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long pl/*[in]*/) = 0; // [1610809355]
  virtual HRESULT STDMETHODCALLTYPE get_OrdinalPosition(short* ps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_OrdinalPosition(short ps/*[in]*/) = 0; // [1610809357]
  virtual HRESULT STDMETHODCALLTYPE get_ValidationText(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ValidationText(BSTR pbstr/*[in]*/) = 0; // [1610809359]
  virtual HRESULT STDMETHODCALLTYPE get_ValidateOnSet(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ValidateOnSet(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809361]
  virtual HRESULT STDMETHODCALLTYPE get_ValidationRule(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ValidationRule(BSTR pbstr/*[in]*/) = 0; // [1610809363]
  virtual HRESULT STDMETHODCALLTYPE get_DefaultValue(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_DefaultValue(VARIANT pvar/*[in]*/) = 0; // [1610809365]
  virtual HRESULT STDMETHODCALLTYPE get_Required(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Required(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809367]
  virtual HRESULT STDMETHODCALLTYPE get_AllowZeroLength(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_AllowZeroLength(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809369]
  virtual HRESULT STDMETHODCALLTYPE get_DataUpdatable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_ForeignName(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ForeignName(BSTR pbstr/*[in]*/) = 0; // [1610809372]
  virtual HRESULT STDMETHODCALLTYPE AppendChunk(VARIANT Val/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/, 
                                             VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _30_FieldSize(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateProperty(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/, 
                                                   VARIANT DDL/*[in,opt]*/, 
                                                   Dao_xp::Property** pprp/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_CollectionIndex(short* i/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_OriginalValue(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_VisibleValue(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_FieldSize(long* pl/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

  short __fastcall get_Type(void)
  {
    short ps;
    OLECHECK(this->get_Type((short*)&ps));
    return ps;
  }

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

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

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

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

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

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

  short __fastcall get_OrdinalPosition(void)
  {
    short ps;
    OLECHECK(this->get_OrdinalPosition((short*)&ps));
    return ps;
  }

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

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

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

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

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

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

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

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

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

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

  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Property* pprp = 0;
    OLECHECK(this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp));
    return pprp;
  }

  short __fastcall get_CollectionIndex(void)
  {
    short i;
    OLECHECK(this->get_CollectionIndex((short*)&i));
    return i;
  }

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

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

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


  __property   long            CollatingOrder = {read = get_CollatingOrder};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   long            Size = {read = get_Size, write = set_Size};
  __property   BSTR            SourceField = {read = get_SourceField};
  __property   BSTR            SourceTable = {read = get_SourceTable};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   short           OrdinalPosition = {read = get_OrdinalPosition, write = set_OrdinalPosition};
  __property   BSTR            ValidationText = {read = get_ValidationText, write = set_ValidationText};
  __property   VARIANT_BOOL    ValidateOnSet = {read = get_ValidateOnSet, write = set_ValidateOnSet};
  __property   BSTR            ValidationRule = {read = get_ValidationRule, write = set_ValidationRule};
  __property   VARIANT_BOOL    Required = {read = get_Required, write = set_Required};
  __property   VARIANT_BOOL    AllowZeroLength = {read = get_AllowZeroLength, write = set_AllowZeroLength};
  __property   VARIANT_BOOL    DataUpdatable = {read = get_DataUpdatable};
  __property   BSTR            ForeignName = {read = get_ForeignName, write = set_ForeignName};
  __property   short           CollectionIndex = {read = get_CollectionIndex};
  __property   long            FieldSize = {read = get_FieldSize};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Indexes
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000005B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Indexes  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Index** ppidx/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Index
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000059-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Index  : public Dao_xp::_DAO
{
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_Foreign(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Unique(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Unique(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE get_Clustered(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Clustered(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE get_Required(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Required(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809351]
  virtual HRESULT STDMETHODCALLTYPE get_IgnoreNulls(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_IgnoreNulls(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809353]
  virtual HRESULT STDMETHODCALLTYPE get_Primary(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Primary(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809355]
  virtual HRESULT STDMETHODCALLTYPE get_DistinctCount(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Fields(VARIANT* pv/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Fields(VARIANT pv/*[in]*/) = 0; // [1610809358]
  virtual HRESULT STDMETHODCALLTYPE CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                                VARIANT Size/*[in,opt]*/, 
                                                Dao_xp::Field** ppfld/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateProperty(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/, 
                                                   VARIANT DDL/*[in,opt]*/, 
                                                   Dao_xp::Property** pprp/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

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

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

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

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

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

  VARIANT __fastcall get_Fields(void)
  {
    VARIANT pv;
    OLECHECK(this->get_Fields((VARIANT*)&pv));
    return pv;
  }

  Dao_xp::Field* __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT Type/*[in,opt]*/= TNoParam(), 
                                        VARIANT Size/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Field* ppfld = 0;
    OLECHECK(this->CreateField(Name, Type, Size, (Dao_xp::Field**)&ppfld));
    return ppfld;
  }

  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Property* pprp = 0;
    OLECHECK(this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp));
    return pprp;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   VARIANT_BOOL    Foreign = {read = get_Foreign};
  __property   VARIANT_BOOL    Unique = {read = get_Unique, write = set_Unique};
  __property   VARIANT_BOOL    Clustered = {read = get_Clustered, write = set_Clustered};
  __property   VARIANT_BOOL    Required = {read = get_Required, write = set_Required};
  __property   VARIANT_BOOL    IgnoreNulls = {read = get_IgnoreNulls, write = set_IgnoreNulls};
  __property   VARIANT_BOOL    Primary = {read = get_Primary, write = set_Primary};
  __property   long            DistinctCount = {read = get_DistinctCount};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Recordset
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000031-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Recordset  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_BOF(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [101]
  virtual HRESULT STDMETHODCALLTYPE get_Bookmark(LPSAFEARRAY* ppsach/*[out,retval]*/) = 0; // [102]
  virtual HRESULT STDMETHODCALLTYPE set_Bookmark(LPSAFEARRAY* ppsach/*[in]*/) = 0; // [102]
  virtual HRESULT STDMETHODCALLTYPE get_Bookmarkable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [103]
  virtual HRESULT STDMETHODCALLTYPE get_DateCreated(VARIANT* pvar/*[out,retval]*/) = 0; // [104]
  virtual HRESULT STDMETHODCALLTYPE get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [105]
  virtual HRESULT STDMETHODCALLTYPE get_Filter(BSTR* pbstr/*[out,retval]*/) = 0; // [106]
  virtual HRESULT STDMETHODCALLTYPE set_Filter(BSTR pbstr/*[in]*/) = 0; // [106]
  virtual HRESULT STDMETHODCALLTYPE get_Index(BSTR* pbstr/*[out,retval]*/) = 0; // [107]
  virtual HRESULT STDMETHODCALLTYPE set_Index(BSTR pbstr/*[in]*/) = 0; // [107]
  virtual HRESULT STDMETHODCALLTYPE get_LastModified(LPSAFEARRAY* ppsa/*[out,retval]*/) = 0; // [108]
  virtual HRESULT STDMETHODCALLTYPE get_LastUpdated(VARIANT* pvar/*[out,retval]*/) = 0; // [109]
  virtual HRESULT STDMETHODCALLTYPE get_LockEdits(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [110]
  virtual HRESULT STDMETHODCALLTYPE set_LockEdits(VARIANT_BOOL pb/*[in]*/) = 0; // [110]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [111]
  virtual HRESULT STDMETHODCALLTYPE get_NoMatch(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [112]
  virtual HRESULT STDMETHODCALLTYPE get_Sort(BSTR* pbstr/*[out,retval]*/) = 0; // [113]
  virtual HRESULT STDMETHODCALLTYPE set_Sort(BSTR pbstr/*[in]*/) = 0; // [113]
  virtual HRESULT STDMETHODCALLTYPE get_Transactions(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [114]
  virtual HRESULT STDMETHODCALLTYPE get_Type(short* ps/*[out,retval]*/) = 0; // [115]
  virtual HRESULT STDMETHODCALLTYPE get_RecordCount(long* pl/*[out,retval]*/) = 0; // [116]
  virtual HRESULT STDMETHODCALLTYPE get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [117]
  virtual HRESULT STDMETHODCALLTYPE get_Restartable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [118]
  virtual HRESULT STDMETHODCALLTYPE get_ValidationText(BSTR* pbstr/*[out,retval]*/) = 0; // [119]
  virtual HRESULT STDMETHODCALLTYPE get_ValidationRule(BSTR* pbstr/*[out,retval]*/) = 0; // [120]
  virtual HRESULT STDMETHODCALLTYPE get_CacheStart(LPSAFEARRAY* ppsa/*[out,retval]*/) = 0; // [121]
  virtual HRESULT STDMETHODCALLTYPE set_CacheStart(LPSAFEARRAY* ppsa/*[in]*/) = 0; // [121]
  virtual HRESULT STDMETHODCALLTYPE get_CacheSize(long* pl/*[out,retval]*/) = 0; // [122]
  virtual HRESULT STDMETHODCALLTYPE set_CacheSize(long pl/*[in]*/) = 0; // [122]
  virtual HRESULT STDMETHODCALLTYPE get_PercentPosition(float* pd/*[out,retval]*/) = 0; // [123]
  virtual HRESULT STDMETHODCALLTYPE set_PercentPosition(float pd/*[in]*/) = 0; // [123]
  virtual HRESULT STDMETHODCALLTYPE get_AbsolutePosition(long* pl/*[out,retval]*/) = 0; // [124]
  virtual HRESULT STDMETHODCALLTYPE set_AbsolutePosition(long pl/*[in]*/) = 0; // [124]
  virtual HRESULT STDMETHODCALLTYPE get_EditMode(short* pi/*[out,retval]*/) = 0; // [125]
  virtual HRESULT STDMETHODCALLTYPE get_ODBCFetchCount(long* pl/*[out,retval]*/) = 0; // [126]
  virtual HRESULT STDMETHODCALLTYPE get_ODBCFetchDelay(long* pl/*[out,retval]*/) = 0; // [127]
  virtual HRESULT STDMETHODCALLTYPE get_Parent(Dao_xp::Database** pdb/*[out,retval]*/) = 0; // [128]
  virtual HRESULT STDMETHODCALLTYPE get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/) = 0; // [130]
  virtual HRESULT STDMETHODCALLTYPE _30_CancelUpdate(void) = 0; // [131]
  virtual HRESULT STDMETHODCALLTYPE AddNew(void) = 0; // [132]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [133]
  virtual HRESULT STDMETHODCALLTYPE OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                  VARIANT Options/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [134]
  virtual HRESULT STDMETHODCALLTYPE Delete(void) = 0; // [135]
  virtual HRESULT STDMETHODCALLTYPE Edit(void) = 0; // [136]
  virtual HRESULT STDMETHODCALLTYPE FindFirst(BSTR Criteria/*[in]*/) = 0; // [137]
  virtual HRESULT STDMETHODCALLTYPE FindLast(BSTR Criteria/*[in]*/) = 0; // [138]
  virtual HRESULT STDMETHODCALLTYPE FindNext(BSTR Criteria/*[in]*/) = 0; // [139]
  virtual HRESULT STDMETHODCALLTYPE FindPrevious(BSTR Criteria/*[in]*/) = 0; // [140]
  virtual HRESULT STDMETHODCALLTYPE MoveFirst(void) = 0; // [141]
  virtual HRESULT STDMETHODCALLTYPE _30_MoveLast(void) = 0; // [142]
  virtual HRESULT STDMETHODCALLTYPE MoveNext(void) = 0; // [143]
  virtual HRESULT STDMETHODCALLTYPE MovePrevious(void) = 0; // [144]
  virtual HRESULT STDMETHODCALLTYPE Seek(BSTR Comparison/*[in]*/, VARIANT Key1/*[in]*/, 
                                         VARIANT Key2/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key3/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key4/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key5/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key6/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key7/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key8/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key9/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key10/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key11/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key12/*[in,opt]*/= TNoParam(), 
                                         VARIANT Key13/*[in,opt]*/= TNoParam()) = 0; // [145]
  virtual HRESULT STDMETHODCALLTYPE _30_Update(void) = 0; // [146]
  virtual HRESULT STDMETHODCALLTYPE Clone(Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [147]
  virtual HRESULT STDMETHODCALLTYPE Requery(VARIANT NewQueryDef/*[in,opt]*/= TNoParam()) = 0; // [148]
  virtual HRESULT STDMETHODCALLTYPE Move(long Rows/*[in]*/, 
                                         VARIANT StartBookmark/*[in,opt]*/= TNoParam()) = 0; // [149]
  virtual HRESULT STDMETHODCALLTYPE FillCache(VARIANT Rows/*[in,opt]*/= TNoParam(), 
                                              VARIANT StartBookmark/*[in,opt]*/= TNoParam()) = 0; // [150]
  virtual HRESULT STDMETHODCALLTYPE CreateDynaset(VARIANT Options/*[in,opt]*/, 
                                                  VARIANT Inconsistent/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [151]
  virtual HRESULT STDMETHODCALLTYPE CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                                   Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [152]
  virtual HRESULT STDMETHODCALLTYPE CopyQueryDef(Dao_xp::QueryDef** ppqdf/*[out,retval]*/) = 0; // [153]
  virtual HRESULT STDMETHODCALLTYPE ListFields(Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [154]
  virtual HRESULT STDMETHODCALLTYPE ListIndexes(Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [155]
  virtual HRESULT STDMETHODCALLTYPE GetRows(VARIANT NumRows/*[in,opt]*/, 
                                            VARIANT* pvar/*[out,retval]*/) = 0; // [156]
  virtual HRESULT STDMETHODCALLTYPE get_Collect(VARIANT Item/*[in]*/, VARIANT* pvar/*[out,retval]*/) = 0; // [-8]
  virtual HRESULT STDMETHODCALLTYPE set_Collect(VARIANT Item/*[in]*/, VARIANT pvar/*[in]*/) = 0; // [-8]
  virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0; // [157]
  virtual HRESULT STDMETHODCALLTYPE NextRecordset(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [158]
  virtual HRESULT STDMETHODCALLTYPE get_hStmt(long* phStmt/*[out,retval]*/) = 0; // [159]
  virtual HRESULT STDMETHODCALLTYPE get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/) = 0; // [160]
  virtual HRESULT STDMETHODCALLTYPE get_BatchSize(long* pl/*[out,retval]*/) = 0; // [161]
  virtual HRESULT STDMETHODCALLTYPE set_BatchSize(long pl/*[in]*/) = 0; // [161]
  virtual HRESULT STDMETHODCALLTYPE get_BatchCollisionCount(long* pl/*[out,retval]*/) = 0; // [162]
  virtual HRESULT STDMETHODCALLTYPE get_BatchCollisions(VARIANT* pvar/*[out,retval]*/) = 0; // [163]
  virtual HRESULT STDMETHODCALLTYPE get_Connection(Dao_xp::Connection** ppCn/*[out,retval]*/) = 0; // [164]
  virtual HRESULT STDMETHODCALLTYPE _set_Connection(Dao_xp::Connection* ppCn/*[in]*/) = 0; // [164]
  virtual HRESULT STDMETHODCALLTYPE get_RecordStatus(short* pi/*[out,retval]*/) = 0; // [165]
  virtual HRESULT STDMETHODCALLTYPE get_UpdateOptions(long* pl/*[out,retval]*/) = 0; // [166]
  virtual HRESULT STDMETHODCALLTYPE set_UpdateOptions(long pl/*[in]*/) = 0; // [166]
  virtual HRESULT STDMETHODCALLTYPE CancelUpdate(long UpdateType/*[in,def,opt]*/) = 0; // [167]
  virtual HRESULT STDMETHODCALLTYPE _Update(long UpdateType/*[in,def,opt]*/, 
                                            VARIANT_BOOL Force/*[in,def,opt]*/) = 0; // [168]
  virtual HRESULT STDMETHODCALLTYPE MoveLast(long Options/*[in,def,opt]*/) = 0; // [169]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

  LPSAFEARRAY __fastcall get_Bookmark(void)
  {
    LPSAFEARRAY ppsach;
    OLECHECK(this->get_Bookmark((LPSAFEARRAY*)&ppsach));
    return ppsach;
  }

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

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

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

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

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

  LPSAFEARRAY __fastcall get_LastModified(void)
  {
    LPSAFEARRAY ppsa;
    OLECHECK(this->get_LastModified((LPSAFEARRAY*)&ppsa));
    return ppsa;
  }

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

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

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

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

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

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

  short __fastcall get_Type(void)
  {
    short ps;
    OLECHECK(this->get_Type((short*)&ps));
    return ps;
  }

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

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

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

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

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

  LPSAFEARRAY __fastcall get_CacheStart(void)
  {
    LPSAFEARRAY ppsa;
    OLECHECK(this->get_CacheStart((LPSAFEARRAY*)&ppsa));
    return ppsa;
  }

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

  float __fastcall get_PercentPosition(void)
  {
    float pd;
    OLECHECK(this->get_PercentPosition((float*)&pd));
    return pd;
  }

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

  short __fastcall get_EditMode(void)
  {
    short pi;
    OLECHECK(this->get_EditMode((short*)&pi));
    return pi;
  }

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

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

  Dao_xp::DatabasePtr __fastcall get_Parent(void)
  {
    Dao_xp::DatabasePtr pdb;
    OLECHECK(this->get_Parent(&pdb));
    return pdb;
  }

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

  Dao_xp::IndexesPtr __fastcall get_Indexes(void)
  {
    Dao_xp::IndexesPtr ppidxs;
    OLECHECK(this->get_Indexes(&ppidxs));
    return ppidxs;
  }

  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall Clone(void)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->Clone((Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->CreateDynaset(Options, Inconsistent, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->CreateSnapshot(Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::QueryDef* __fastcall CopyQueryDef(void)
  {
    Dao_xp::QueryDef* ppqdf = 0;
    OLECHECK(this->CopyQueryDef((Dao_xp::QueryDef**)&ppqdf));
    return ppqdf;
  }

  Dao_xp::Recordset* __fastcall ListFields(void)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->ListFields((Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall ListIndexes(void)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->ListIndexes((Dao_xp::Recordset**)&pprst));
    return pprst;
  }

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

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

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

  long __fastcall get_hStmt(void)
  {
    long phStmt;
    OLECHECK(this->get_hStmt((long*)&phStmt));
    return phStmt;
  }

  VARIANT_BOOL __fastcall get_StillExecuting(void)
  {
    VARIANT_BOOL pStillExec;
    OLECHECK(this->get_StillExecuting((VARIANT_BOOL*)&pStillExec));
    return pStillExec;
  }

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

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

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

  Dao_xp::ConnectionPtr __fastcall get_Connection(void)
  {
    Dao_xp::ConnectionPtr ppCn;
    OLECHECK(this->get_Connection(&ppCn));
    return ppCn;
  }

  short __fastcall get_RecordStatus(void)
  {
    short pi;
    OLECHECK(this->get_RecordStatus((short*)&pi));
    return pi;
  }

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


  __property   VARIANT_BOOL    BOF = {read = get_BOF};
  __property   VARIANT_BOOL    Bookmarkable = {read = get_Bookmarkable};
  __property   VARIANT_BOOL    EOF_ = {read = get_EOF_};
  __property   BSTR            Filter = {read = get_Filter, write = set_Filter};
  __property   BSTR            Index = {read = get_Index, write = set_Index};
  __property   VARIANT_BOOL    LockEdits = {read = get_LockEdits, write = set_LockEdits};
  __property   BSTR            Name = {read = get_Name};
  __property   VARIANT_BOOL    NoMatch = {read = get_NoMatch};
  __property   BSTR            Sort = {read = get_Sort, write = set_Sort};
  __property   VARIANT_BOOL    Transactions = {read = get_Transactions};
  __property   short           Type = {read = get_Type};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   VARIANT_BOOL    Restartable = {read = get_Restartable};
  __property   BSTR            ValidationText = {read = get_ValidationText};
  __property   BSTR            ValidationRule = {read = get_ValidationRule};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
  __property   float           PercentPosition = {read = get_PercentPosition, write = set_PercentPosition};
  __property   long            AbsolutePosition = {read = get_AbsolutePosition, write = set_AbsolutePosition};
  __property   short           EditMode = {read = get_EditMode};
  __property   long            ODBCFetchCount = {read = get_ODBCFetchCount};
  __property   long            ODBCFetchDelay = {read = get_ODBCFetchDelay};
  __property   Dao_xp::DatabasePtr Parent = {read = get_Parent};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::IndexesPtr Indexes = {read = get_Indexes};
  __property   long            hStmt = {read = get_hStmt};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   long            BatchSize = {read = get_BatchSize, write = set_BatchSize};
  __property   long            BatchCollisionCount = {read = get_BatchCollisionCount};
  __property   Dao_xp::ConnectionPtr Connection = {read = get_Connection};
  __property   short           RecordStatus = {read = get_RecordStatus};
  __property   long            UpdateOptions = {read = get_UpdateOptions, write = set_UpdateOptions};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _QueryDef
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000079-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _QueryDef  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_DateCreated(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_LastUpdated(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Name(BSTR pbstr/*[in]*/) = 0; // [1610809346]
  virtual HRESULT STDMETHODCALLTYPE get_ODBCTimeout(short* ps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ODBCTimeout(short ps/*[in]*/) = 0; // [1610809348]
  virtual HRESULT STDMETHODCALLTYPE get_Type(short* pi/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_SQL(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_SQL(BSTR pbstr/*[in]*/) = 0; // [1610809351]
  virtual HRESULT STDMETHODCALLTYPE get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Connect(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Connect(BSTR pbstr/*[in]*/) = 0; // [1610809354]
  virtual HRESULT STDMETHODCALLTYPE get_ReturnsRecords(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ReturnsRecords(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809356]
  virtual HRESULT STDMETHODCALLTYPE get_RecordsAffected(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Parameters(Dao_xp::Parameters** ppprms/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _30_OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                      VARIANT Options/*[in,opt]*/, 
                                                      Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _30__OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                       VARIANT Options/*[in,opt]*/, 
                                                       Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _Copy(Dao_xp::QueryDef** ppqdf/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Execute(VARIANT Options/*[in,opt]*/= TNoParam()) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Compare(Dao_xp::QueryDef* pQdef/*[in]*/, short* lps/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateDynaset(VARIANT Options/*[in,opt]*/, 
                                                  VARIANT Inconsistent/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                                   Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE ListParameters(Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateProperty(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/, 
                                                   VARIANT DDL/*[in,opt]*/, 
                                                   Dao_xp::Property** pprp/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                  VARIANT Options/*[in,opt]*/, 
                                                  VARIANT LockEdit/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE _OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Options/*[in,opt]*/, 
                                                   VARIANT LockEdit/*[in,opt]*/, 
                                                   Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_hStmt(long* phStmt/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_MaxRecords(long* pMxRecs/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_MaxRecords(long pMxRecs/*[in]*/) = 0; // [1610809375]
  virtual HRESULT STDMETHODCALLTYPE get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_CacheSize(long* lCacheSize/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_CacheSize(long lCacheSize/*[in]*/) = 0; // [1610809378]
  virtual HRESULT STDMETHODCALLTYPE get_Prepare(VARIANT* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Prepare(VARIANT pb/*[in]*/) = 0; // [1610809380]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

  short __fastcall get_ODBCTimeout(void)
  {
    short ps;
    OLECHECK(this->get_ODBCTimeout((short*)&ps));
    return ps;
  }

  short __fastcall get_Type(void)
  {
    short pi;
    OLECHECK(this->get_Type((short*)&pi));
    return pi;
  }

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

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

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

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

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

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

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

  Dao_xp::Recordset* __fastcall _30_OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                  VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->_30_OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall _30__OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                   VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->_30__OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::QueryDef* __fastcall _Copy(void)
  {
    Dao_xp::QueryDef* ppqdf = 0;
    OLECHECK(this->_Copy((Dao_xp::QueryDef**)&ppqdf));
    return ppqdf;
  }

  Dao_xp::Recordset* __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->CreateDynaset(Options, Inconsistent, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->CreateSnapshot(Options, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall ListParameters(void)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->ListParameters((Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Property* pprp = 0;
    OLECHECK(this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp));
    return pprp;
  }

  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->OpenRecordset(Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  Dao_xp::Recordset* __fastcall _OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                               VARIANT Options/*[in,opt]*/= TNoParam(), 
                                               VARIANT LockEdit/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->_OpenRecordset(Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }

  long __fastcall get_hStmt(void)
  {
    long phStmt;
    OLECHECK(this->get_hStmt((long*)&phStmt));
    return phStmt;
  }

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

  VARIANT_BOOL __fastcall get_StillExecuting(void)
  {
    VARIANT_BOOL pStillExec;
    OLECHECK(this->get_StillExecuting((VARIANT_BOOL*)&pStillExec));
    return pStillExec;
  }

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

  VARIANT __fastcall get_Prepare(void)
  {
    VARIANT pb;
    OLECHECK(this->get_Prepare((VARIANT*)&pb));
    return pb;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   short           ODBCTimeout = {read = get_ODBCTimeout, write = set_ODBCTimeout};
  __property   short           Type = {read = get_Type};
  __property   BSTR            SQL = {read = get_SQL, write = set_SQL};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   VARIANT_BOOL    ReturnsRecords = {read = get_ReturnsRecords, write = set_ReturnsRecords};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::ParametersPtr Parameters = {read = get_Parameters};
  __property   long            hStmt = {read = get_hStmt};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Parameters
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000083-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Parameters  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Parameter** ppprm/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Parameter* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Parameter* ppprm = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Parameter**)&ppprm));
    return ppprm;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Parameter
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000081-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Parameter  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  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(short* ps/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Type(short ps/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE get_Direction(short* pOption/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Direction(short pOption/*[in]*/) = 0; // [1610809349]

#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;
  }

  short __fastcall get_Type(void)
  {
    short ps;
    OLECHECK(this->get_Type((short*)&ps));
    return ps;
  }

  short __fastcall get_Direction(void)
  {
    short pOption;
    OLECHECK(this->get_Direction((short*)&pOption));
    return pOption;
  }


  __property   BSTR            Name = {read = get_Name};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   short           Direction = {read = get_Direction, write = set_Direction};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Connection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000041-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Connection  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Connect(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Database(Dao_xp::Database** ppDb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_hDbc(long* phDbc/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_QueryTimeout(short* pSeconds/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_QueryTimeout(short pSeconds/*[in]*/) = 0; // [1610743812]
  virtual HRESULT STDMETHODCALLTYPE get_Transactions(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_RecordsAffected(long* pRecords/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Updatable(VARIANT_BOOL* pStillExec/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_QueryDefs(Dao_xp::QueryDefs** ppqdfs/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_Recordsets(Dao_xp::Recordsets** pprsts/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateQueryDef(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT SQLText/*[in,opt]*/, 
                                                   Dao_xp::QueryDef** ppqdf/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE Execute(BSTR Query/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam()) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                                  VARIANT Options/*[in,opt]*/, 
                                                  VARIANT LockEdit/*[in,opt]*/, 
                                                  Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

  Dao_xp::DatabasePtr __fastcall get_Database(void)
  {
    Dao_xp::DatabasePtr ppDb;
    OLECHECK(this->get_Database(&ppDb));
    return ppDb;
  }

  long __fastcall get_hDbc(void)
  {
    long phDbc;
    OLECHECK(this->get_hDbc((long*)&phDbc));
    return phDbc;
  }

  short __fastcall get_QueryTimeout(void)
  {
    short pSeconds;
    OLECHECK(this->get_QueryTimeout((short*)&pSeconds));
    return pSeconds;
  }

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

  long __fastcall get_RecordsAffected(void)
  {
    long pRecords;
    OLECHECK(this->get_RecordsAffected((long*)&pRecords));
    return pRecords;
  }

  VARIANT_BOOL __fastcall get_StillExecuting(void)
  {
    VARIANT_BOOL pStillExec;
    OLECHECK(this->get_StillExecuting((VARIANT_BOOL*)&pStillExec));
    return pStillExec;
  }

  VARIANT_BOOL __fastcall get_Updatable(void)
  {
    VARIANT_BOOL pStillExec;
    OLECHECK(this->get_Updatable((VARIANT_BOOL*)&pStillExec));
    return pStillExec;
  }

  Dao_xp::QueryDefsPtr __fastcall get_QueryDefs(void)
  {
    Dao_xp::QueryDefsPtr ppqdfs;
    OLECHECK(this->get_QueryDefs(&ppqdfs));
    return ppqdfs;
  }

  Dao_xp::RecordsetsPtr __fastcall get_Recordsets(void)
  {
    Dao_xp::RecordsetsPtr pprsts;
    OLECHECK(this->get_Recordsets(&pprsts));
    return pprsts;
  }

  Dao_xp::QueryDef* __fastcall CreateQueryDef(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT SQLText/*[in,opt]*/= TNoParam())
  {
    Dao_xp::QueryDef* ppqdf = 0;
    OLECHECK(this->CreateQueryDef(Name, SQLText, (Dao_xp::QueryDef**)&ppqdf));
    return ppqdf;
  }

  Dao_xp::Recordset* __fastcall OpenRecordset(BSTR Name/*[in]*/, 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->OpenRecordset(Name, Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }


  __property   BSTR            Name = {read = get_Name};
  __property   BSTR            Connect = {read = get_Connect};
  __property   Dao_xp::DatabasePtr Database = {read = get_Database};
  __property   long            hDbc = {read = get_hDbc};
  __property   short           QueryTimeout = {read = get_QueryTimeout, write = set_QueryTimeout};
  __property   VARIANT_BOOL    Transactions = {read = get_Transactions};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   Dao_xp::QueryDefsPtr QueryDefs = {read = get_QueryDefs};
  __property   Dao_xp::RecordsetsPtr Recordsets = {read = get_Recordsets};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: QueryDefs
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000007B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface QueryDefs  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::QueryDef** ppqdef/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::QueryDef* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::QueryDef* ppqdef = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::QueryDef**)&ppqdef));
    return ppqdef;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Recordsets
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000033-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Recordsets  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Recordset** pprst/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Recordset* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Recordset* pprst = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Recordset**)&pprst));
    return pprst;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Relations
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000008B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Relations  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Relation** pprel/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Relation* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Relation* pprel = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Relation**)&pprel));
    return pprel;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Relation
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000089-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Relation  : public Dao_xp::_DAO
{
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_Table(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Table(BSTR pbstr/*[in]*/) = 0; // [1610809346]
  virtual HRESULT STDMETHODCALLTYPE get_ForeignTable(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_ForeignTable(BSTR pbstr/*[in]*/) = 0; // [1610809348]
  virtual HRESULT STDMETHODCALLTYPE get_Attributes(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Attributes(long pl/*[in]*/) = 0; // [1610809350]
  virtual HRESULT STDMETHODCALLTYPE get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                                VARIANT Size/*[in,opt]*/, 
                                                Dao_xp::Field** ppfld/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_PartialReplica(VARIANT_BOOL* pfPartialReplica/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_PartialReplica(VARIANT_BOOL pfPartialReplica/*[in]*/) = 0; // [1610809354]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

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

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

  Dao_xp::Field* __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT Type/*[in,opt]*/= TNoParam(), 
                                        VARIANT Size/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Field* ppfld = 0;
    OLECHECK(this->CreateField(Name, Type, Size, (Dao_xp::Field**)&ppfld));
    return ppfld;
  }

  VARIANT_BOOL __fastcall get_PartialReplica(void)
  {
    VARIANT_BOOL pfPartialReplica;
    OLECHECK(this->get_PartialReplica((VARIANT_BOOL*)&pfPartialReplica));
    return pfPartialReplica;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            Table = {read = get_Table, write = set_Table};
  __property   BSTR            ForeignTable = {read = get_ForeignTable, write = set_ForeignTable};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   VARIANT_BOOL    PartialReplica = {read = get_PartialReplica, write = set_PartialReplica};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Containers
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000093-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Containers  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Container** ppctn/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Container* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Container* ppctn = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Container**)&ppctn));
    return ppctn;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Container
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000091-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Container  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Owner(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Owner(BSTR pbstr/*[in]*/) = 0; // [1610809345]
  virtual HRESULT STDMETHODCALLTYPE get_UserName(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_UserName(BSTR pbstr/*[in]*/) = 0; // [1610809347]
  virtual HRESULT STDMETHODCALLTYPE get_Permissions(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Permissions(long pl/*[in]*/) = 0; // [1610809349]
  virtual HRESULT STDMETHODCALLTYPE get_Inherit(VARIANT_BOOL* pb/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Inherit(VARIANT_BOOL pb/*[in]*/) = 0; // [1610809351]
  virtual HRESULT STDMETHODCALLTYPE get_Documents(Dao_xp::Documents** ppdocs/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE get_AllPermissions(long* pl/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

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

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

  Dao_xp::DocumentsPtr __fastcall get_Documents(void)
  {
    Dao_xp::DocumentsPtr ppdocs;
    OLECHECK(this->get_Documents(&ppdocs));
    return ppdocs;
  }

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


  __property   BSTR            Name = {read = get_Name};
  __property   BSTR            Owner = {read = get_Owner, write = set_Owner};
  __property   BSTR            UserName = {read = get_UserName, write = set_UserName};
  __property   long            Permissions = {read = get_Permissions, write = set_Permissions};
  __property   VARIANT_BOOL    Inherit = {read = get_Inherit, write = set_Inherit};
  __property   Dao_xp::DocumentsPtr Documents = {read = get_Documents};
  __property   long            AllPermissions = {read = get_AllPermissions};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Documents
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000009B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Documents  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Document** ppdoc/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Document* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Document* ppdoc = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Document**)&ppdoc));
    return ppdoc;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Document
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000099-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Document  : public Dao_xp::_DAO
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Owner(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Owner(BSTR pbstr/*[in]*/) = 0; // [1610809345]
  virtual HRESULT STDMETHODCALLTYPE get_Container(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_UserName(BSTR* pbstr/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_UserName(BSTR pbstr/*[in]*/) = 0; // [1610809348]
  virtual HRESULT STDMETHODCALLTYPE get_Permissions(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Permissions(long pl/*[in]*/) = 0; // [1610809350]
  virtual HRESULT STDMETHODCALLTYPE get_DateCreated(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_LastUpdated(VARIANT* pvar/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_AllPermissions(long* pl/*[out,retval]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateProperty(VARIANT Name/*[in,opt]*/, 
                                                   VARIANT Type/*[in,opt]*/, 
                                                   VARIANT Value/*[in,opt]*/, 
                                                   VARIANT DDL/*[in,opt]*/, 
                                                   Dao_xp::Property** pprp/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

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

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

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

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

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

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

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

  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Property* pprp = 0;
    OLECHECK(this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp));
    return pprp;
  }


  __property   BSTR            Name = {read = get_Name};
  __property   BSTR            Owner = {read = get_Owner, write = set_Owner};
  __property   BSTR            Container = {read = get_Container};
  __property   BSTR            UserName = {read = get_UserName, write = set_UserName};
  __property   long            Permissions = {read = get_Permissions, write = set_Permissions};
  __property   long            AllPermissions = {read = get_AllPermissions};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Users
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000006B-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Users  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::User** ppusr/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::User* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::User* ppusr = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::User**)&ppusr));
    return ppusr;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _User
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000069-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _User  : public Dao_xp::_DAO
{
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 set_PID(BSTR Param1/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE set_Password(BSTR Param1/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                                Dao_xp::Group** ppgrp/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

  Dao_xp::GroupsPtr __fastcall get_Groups(void)
  {
    Dao_xp::GroupsPtr ppgrps;
    OLECHECK(this->get_Groups(&ppgrps));
    return ppgrps;
  }

  Dao_xp::Group* __fastcall CreateGroup(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT PID/*[in,opt]*/= TNoParam())
  {
    Dao_xp::Group* ppgrp = 0;
    OLECHECK(this->CreateGroup(Name, PID, (Dao_xp::Group**)&ppgrp));
    return ppgrp;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            PID = {write = set_PID};
  __property   BSTR            Password = {write = set_Password};
  __property   Dao_xp::GroupsPtr Groups = {read = get_Groups};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Groups
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000063-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Groups  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Group** ppgrp/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Group* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Group* ppgrp = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Group**)&ppgrp));
    return ppgrp;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _Group
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000061-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface _Group  : public Dao_xp::_DAO
{
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 set_PID(BSTR Param1/*[in]*/) = 0; // [-1]
  virtual HRESULT STDMETHODCALLTYPE get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/) = 0; // [0]
  virtual HRESULT STDMETHODCALLTYPE CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                               VARIANT Password/*[in,opt]*/, 
                                               Dao_xp::User** ppusr/*[out,retval]*/) = 0; // [-1]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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

  Dao_xp::UsersPtr __fastcall get_Users(void)
  {
    Dao_xp::UsersPtr ppusrs;
    OLECHECK(this->get_Users(&ppusrs));
    return ppusrs;
  }

  Dao_xp::User* __fastcall CreateUser(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                      VARIANT PID/*[in,opt]*/= TNoParam(), 
                                      VARIANT Password/*[in,opt]*/= TNoParam())
  {
    Dao_xp::User* ppusr = 0;
    OLECHECK(this->CreateUser(Name, PID, Password, (Dao_xp::User**)&ppusr));
    return ppusr;
  }


  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            PID = {write = set_PID};
  __property   Dao_xp::UsersPtr Users = {read = get_Users};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Connections
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000043-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Connections  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Connection** ppconn/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  Dao_xp::Connection* __fastcall get_Item(VARIANT Item/*[in]*/)
  {
    Dao_xp::Connection* ppconn = 0;
    OLECHECK(this->get_Item(Item, (Dao_xp::Connection**)&ppconn));
    return ppconn;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Errors
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000025-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface Errors  : public Dao_xp::_Collection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in]*/, 
                                             Dao_xp::Error** pperr/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: Error
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000023-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]

#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;
  }


  __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};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IndexFields
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000005D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
interface IndexFields  : public Dao_xp::_DynaCollection
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Item/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/) = 0; // [0]

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  VARIANT __fastcall get_Item(VARIANT Item/*[in,opt]*/= TNoParam())
  {
    VARIANT pvar;
    OLECHECK(this->get_Item(Item, (VARIANT*)&pvar));
    return pvar;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
typedef TComInterface<_DAO>  TCOM_DAO;

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

  _DAODispT(_DAO *pintf)
  {
    TAutoDriver<_DAO>::Bind(pintf, false);
  }

  _DAODispT(_DAOPtr pintf)
  {
    TAutoDriver<_DAO>::Bind(pintf, true);
  }

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

  _DAODispT& operator=(_DAOPtr pintf)
  {
    TAutoDriver<_DAO>::Bind(pintf, true);
    return *this;
  }

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

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _DAODispT<_DAO> _DAODisp;

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

  HRESULT         __fastcall get_Version(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Version(void);
  HRESULT         __fastcall get_IniPath(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_IniPath(void);
  HRESULT         __fastcall set_IniPath(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall set_DefaultUser(BSTR Param1/*[in]*/);
  HRESULT         __fastcall set_DefaultPassword(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_LoginTimeout(short* ps/*[out,retval]*/);
  short           __fastcall get_LoginTimeout(void);
  HRESULT         __fastcall set_LoginTimeout(short ps/*[in]*/);
  HRESULT         __fastcall get_Workspaces(Dao_xp::Workspaces** ppworks/*[out,retval]*/);
  Dao_xp::WorkspacesPtr __fastcall get_Workspaces(void);
  HRESULT         __fastcall get_Errors(Dao_xp::Errors** pperrs/*[out,retval]*/);
  Dao_xp::ErrorsPtr __fastcall get_Errors(void);
  HRESULT         __fastcall Idle(VARIANT Action/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CompactDatabase(BSTR SrcName/*[in]*/, BSTR DstName/*[in]*/, 
                                             VARIANT DstLocale/*[in,opt]*/= TNoParam(), 
                                             VARIANT Options/*[in,opt]*/= TNoParam(), 
                                             VARIANT SrcLocale/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall RepairDatabase(BSTR Name/*[in]*/);
  HRESULT         __fastcall RegisterDatabase(BSTR Dsn/*[in]*/, BSTR Driver/*[in]*/, 
                                              VARIANT_BOOL Silent/*[in]*/, BSTR Attributes/*[in]*/);
  HRESULT         __fastcall _30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                 BSTR Password/*[in]*/, 
                                                 Dao_xp::Workspace** ppwrk/*[out,retval]*/);
  Dao_xp::Workspace* __fastcall _30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                    BSTR Password/*[in]*/);
  HRESULT         __fastcall OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                          VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                          Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall OpenDatabase(BSTR Name/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam(), 
                                            VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                            VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, 
                                            VARIANT Option/*[in,opt]*/, 
                                            Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, 
                                              VARIANT Option/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall FreeLocks(void);
  HRESULT         __fastcall BeginTrans(void);
  HRESULT         __fastcall CommitTrans(long Option/*[in,def,opt]*/);
  HRESULT         __fastcall Rollback(void);
  HRESULT         __fastcall SetDefaultWorkspace(BSTR Name/*[in]*/, BSTR Password/*[in]*/);
  HRESULT         __fastcall SetDataAccessOption(short Option/*[in]*/, VARIANT Value/*[in]*/);
  HRESULT         __fastcall ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/, 
                                       long* pl/*[out,retval]*/);
  long            __fastcall ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_SystemDB(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SystemDB(void);
  HRESULT         __fastcall set_SystemDB(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                             BSTR Password/*[in]*/, VARIANT UseType/*[in,opt]*/, 
                                             Dao_xp::Workspace** ppwrk/*[out,retval]*/);
  Dao_xp::Workspace* __fastcall CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                BSTR Password/*[in]*/, 
                                                VARIANT UseType/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                            VARIANT ReadOnly/*[in,opt]*/, 
                                            VARIANT Connect/*[in,opt]*/, 
                                            Dao_xp::Connection** ppconn/*[out,retval]*/);
  Dao_xp::Connection* __fastcall OpenConnection(BSTR Name/*[in]*/, 
                                                VARIANT Options/*[in,opt]*/= TNoParam(), 
                                                VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                                VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_DefaultType(long* Option/*[out,retval]*/);
  long            __fastcall get_DefaultType(void);
  HRESULT         __fastcall set_DefaultType(long Option/*[in]*/);
  HRESULT         __fastcall SetOption(long Option/*[in]*/, VARIANT Value/*[in]*/);

  __property   BSTR            Version = {read = get_Version};
  __property   BSTR            IniPath = {read = get_IniPath, write = set_IniPath};
  __property   BSTR            DefaultUser = {write = set_DefaultUser};
  __property   BSTR            DefaultPassword = {write = set_DefaultPassword};
  __property   short           LoginTimeout = {read = get_LoginTimeout, write = set_LoginTimeout};
  __property   Dao_xp::WorkspacesPtr Workspaces = {read = get_Workspaces};
  __property   Dao_xp::ErrorsPtr Errors = {read = get_Errors};
  __property   BSTR            SystemDB = {read = get_SystemDB, write = set_SystemDB};
  __property   long            DefaultType = {read = get_DefaultType, write = set_DefaultType};
};
typedef TCOM_DBEngineT<_DBEngine> TCOM_DBEngine;

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

  _DBEngineDispT(_DBEngine *pintf)
  {
    TAutoDriver<_DBEngine>::Bind(pintf, false);
  }

  _DBEngineDispT(_DBEnginePtr pintf)
  {
    TAutoDriver<_DBEngine>::Bind(pintf, true);
  }

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

  _DBEngineDispT& operator=(_DBEnginePtr pintf)
  {
    TAutoDriver<_DBEngine>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_Version(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Version(void);
  HRESULT         __fastcall get_IniPath(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_IniPath(void);
  HRESULT         __fastcall set_IniPath(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall set_DefaultUser(BSTR Param1/*[in]*/);
  HRESULT         __fastcall set_DefaultPassword(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_LoginTimeout(short* ps/*[out,retval]*/);
  short           __fastcall get_LoginTimeout(void);
  HRESULT         __fastcall set_LoginTimeout(short ps/*[in]*/);
  HRESULT         __fastcall get_Workspaces(Dao_xp::Workspaces** ppworks/*[out,retval]*/);
  Dao_xp::WorkspacesPtr __fastcall get_Workspaces(void);
  HRESULT         __fastcall get_Errors(Dao_xp::Errors** pperrs/*[out,retval]*/);
  Dao_xp::ErrorsPtr __fastcall get_Errors(void);
  HRESULT         __fastcall Idle(VARIANT Action/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CompactDatabase(BSTR SrcName/*[in]*/, BSTR DstName/*[in]*/, 
                                             VARIANT DstLocale/*[in,opt]*/= TNoParam(), 
                                             VARIANT Options/*[in,opt]*/= TNoParam(), 
                                             VARIANT SrcLocale/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall RepairDatabase(BSTR Name/*[in]*/);
  HRESULT         __fastcall RegisterDatabase(BSTR Dsn/*[in]*/, BSTR Driver/*[in]*/, 
                                              VARIANT_BOOL Silent/*[in]*/, BSTR Attributes/*[in]*/);
  HRESULT         __fastcall _30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                 BSTR Password/*[in]*/, 
                                                 Dao_xp::Workspace** ppwrk/*[out,retval]*/);
  Dao_xp::Workspace* __fastcall _30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                    BSTR Password/*[in]*/);
  HRESULT         __fastcall OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                          VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/
                                          , Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall OpenDatabase(BSTR Name/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam(), 
                                            VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                            VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, 
                                            VARIANT Option/*[in,opt]*/, 
                                            Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, 
                                              VARIANT Option/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall FreeLocks();
  HRESULT         __fastcall BeginTrans();
  HRESULT         __fastcall CommitTrans(long Option/*[in,def,opt]*/);
  HRESULT         __fastcall Rollback();
  HRESULT         __fastcall SetDefaultWorkspace(BSTR Name/*[in]*/, BSTR Password/*[in]*/);
  HRESULT         __fastcall SetDataAccessOption(short Option/*[in]*/, VARIANT Value/*[in]*/);
  HRESULT         __fastcall ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/, 
                                       long* pl/*[out,retval]*/);
  long            __fastcall ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_SystemDB(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SystemDB(void);
  HRESULT         __fastcall set_SystemDB(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                             BSTR Password/*[in]*/, VARIANT UseType/*[in,opt]*/, 
                                             Dao_xp::Workspace** ppwrk/*[out,retval]*/);
  Dao_xp::Workspace* __fastcall CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                                BSTR Password/*[in]*/, 
                                                VARIANT UseType/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                            VARIANT ReadOnly/*[in,opt]*/, 
                                            VARIANT Connect/*[in,opt]*/, 
                                            Dao_xp::Connection** ppconn/*[out,retval]*/);
  Dao_xp::Connection* __fastcall OpenConnection(BSTR Name/*[in]*/, 
                                                VARIANT Options/*[in,opt]*/= TNoParam(), 
                                                VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                                VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_DefaultType(long* Option/*[out,retval]*/);
  long            __fastcall get_DefaultType(void);
  HRESULT         __fastcall set_DefaultType(long Option/*[in]*/);
  HRESULT         __fastcall SetOption(long Option/*[in]*/, VARIANT Value/*[in]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Version = {read = get_Version};
  __property   BSTR            IniPath = {read = get_IniPath, write = set_IniPath};
  __property   BSTR            DefaultUser = {write = set_DefaultUser};
  __property   BSTR            DefaultPassword = {write = set_DefaultPassword};
  __property   short           LoginTimeout = {read = get_LoginTimeout, write = set_LoginTimeout};
  __property   Dao_xp::WorkspacesPtr Workspaces = {read = get_Workspaces};
  __property   Dao_xp::ErrorsPtr Errors = {read = get_Errors};
  __property   BSTR            SystemDB = {read = get_SystemDB, write = set_SystemDB};
  __property   long            DefaultType = {read = get_DefaultType, write = set_DefaultType};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _DBEngineDispT<_DBEngine> _DBEngineDisp;

typedef TComInterface<_Collection>  TCOM_Collection;

// *********************************************************************//
// DispIntf:  _Collection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {000000A0-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(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();

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

typedef TComInterface<_DynaCollection>  TCOM_DynaCollection;

// *********************************************************************//
// DispIntf:  _DynaCollection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {000000A2-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(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


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

typedef TComInterface<Properties>  TCOMProperties;

// *********************************************************************//
// DispIntf:  Properties
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000029-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 Item/*[in]*/, 
                                      Dao_xp::Property** ppprop/*[out,retval]*/);
  Dao_xp::Property* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



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

typedef TComInterface<Property>  TCOMProperty;

// *********************************************************************//
// DispIntf:  Property
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000027-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 set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Type(short* ptype/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall set_Type(short ptype/*[in]*/);
  HRESULT         __fastcall get_Inherited(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Inherited(void);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   VARIANT_BOOL    Inherited = {read = get_Inherited};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef PropertyDispT<Property> PropertyDisp;

typedef TComInterface<Workspaces>  TCOMWorkspaces;

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

  WorkspacesDispT(Workspaces *pintf)
  {
    TAutoDriver<Workspaces>::Bind(pintf, false);
  }

  WorkspacesDispT(WorkspacesPtr pintf)
  {
    TAutoDriver<Workspaces>::Bind(pintf, true);
  }

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

  WorkspacesDispT& operator=(WorkspacesPtr pintf)
  {
    TAutoDriver<Workspaces>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, 
                                      Dao_xp::Workspace** ppwrk/*[out,retval]*/);
  Dao_xp::Workspace* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef WorkspacesDispT<Workspaces> WorkspacesDisp;

typedef TComInterface<Workspace>  TCOMWorkspace;

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

  WorkspaceDispT(Workspace *pintf)
  {
    TAutoDriver<Workspace>::Bind(pintf, false);
  }

  WorkspaceDispT(WorkspacePtr pintf)
  {
    TAutoDriver<Workspace>::Bind(pintf, true);
  }

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

  WorkspaceDispT& operator=(WorkspacePtr pintf)
  {
    TAutoDriver<Workspace>::Bind(pintf, 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_UserName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_UserName(void);
  HRESULT         __fastcall set__30_UserName(BSTR Param1/*[in]*/);
  HRESULT         __fastcall set__30_Password(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_IsolateODBCTrans(short* ps/*[out,retval]*/);
  short           __fastcall get_IsolateODBCTrans(void);
  HRESULT         __fastcall set_IsolateODBCTrans(short ps/*[in]*/);
  HRESULT         __fastcall get_Databases(Dao_xp::Databases** ppdbs/*[out,retval]*/);
  Dao_xp::DatabasesPtr __fastcall get_Databases(void);
  HRESULT         __fastcall get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/);
  Dao_xp::UsersPtr __fastcall get_Users(void);
  HRESULT         __fastcall get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/);
  Dao_xp::GroupsPtr __fastcall get_Groups(void);
  HRESULT         __fastcall BeginTrans();
  HRESULT         __fastcall CommitTrans(long Options/*[in,def,opt]*/);
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Rollback();
  HRESULT         __fastcall OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                          VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/
                                          , Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall OpenDatabase(BSTR Name/*[in]*/, 
                                            VARIANT Options/*[in,opt]*/= TNoParam(), 
                                            VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                            VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Connect/*[in]*/, 
                                            VARIANT Option/*[in,opt]*/, 
                                            Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall CreateDatabase(BSTR Name/*[in]*/, BSTR Connect/*[in]*/, 
                                              VARIANT Option/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                        VARIANT Password/*[in,opt]*/, 
                                        Dao_xp::User** ppusr/*[out,retval]*/);
  Dao_xp::User*   __fastcall CreateUser(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT PID/*[in,opt]*/= TNoParam(), 
                                        VARIANT Password/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                         Dao_xp::Group** ppgrp/*[out,retval]*/);
  Dao_xp::Group*  __fastcall CreateGroup(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT PID/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                            VARIANT ReadOnly/*[in,opt]*/, 
                                            VARIANT Connect/*[in,opt]*/, 
                                            Dao_xp::Connection** ppconn/*[out,retval]*/);
  Dao_xp::Connection* __fastcall OpenConnection(BSTR Name/*[in]*/, 
                                                VARIANT Options/*[in,opt]*/= TNoParam(), 
                                                VARIANT ReadOnly/*[in,opt]*/= TNoParam(), 
                                                VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_LoginTimeout(long* pTimeout/*[out,retval]*/);
  long            __fastcall get_LoginTimeout(void);
  HRESULT         __fastcall set_LoginTimeout(long pTimeout/*[in]*/);
  HRESULT         __fastcall get_DefaultCursorDriver(long* pCursorType/*[out,retval]*/);
  long            __fastcall get_DefaultCursorDriver(void);
  HRESULT         __fastcall set_DefaultCursorDriver(long pCursorType/*[in]*/);
  HRESULT         __fastcall get_hEnv(long* phEnv/*[out,retval]*/);
  long            __fastcall get_hEnv(void);
  HRESULT         __fastcall get_Type(long* ptype/*[out,retval]*/);
  long            __fastcall get_Type(void);
  HRESULT         __fastcall get_Connections(Dao_xp::Connections** ppcns/*[out,retval]*/);
  Dao_xp::ConnectionsPtr __fastcall get_Connections(void);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            UserName = {read = get_UserName};
  __property   BSTR            _30_UserName = {write = set__30_UserName};
  __property   BSTR            _30_Password = {write = set__30_Password};
  __property   short           IsolateODBCTrans = {read = get_IsolateODBCTrans, write = set_IsolateODBCTrans};
  __property   Dao_xp::DatabasesPtr Databases = {read = get_Databases};
  __property   Dao_xp::UsersPtr Users = {read = get_Users};
  __property   Dao_xp::GroupsPtr Groups = {read = get_Groups};
  __property   long            LoginTimeout = {read = get_LoginTimeout, write = set_LoginTimeout};
  __property   long            DefaultCursorDriver = {read = get_DefaultCursorDriver, write = set_DefaultCursorDriver};
  __property   long            hEnv = {read = get_hEnv};
  __property   long            Type = {read = get_Type};
  __property   Dao_xp::ConnectionsPtr Connections = {read = get_Connections};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef WorkspaceDispT<Workspace> WorkspaceDisp;

typedef TComInterface<Databases>  TCOMDatabases;

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

  DatabasesDispT(Databases *pintf)
  {
    TAutoDriver<Databases>::Bind(pintf, false);
  }

  DatabasesDispT(DatabasesPtr pintf)
  {
    TAutoDriver<Databases>::Bind(pintf, true);
  }

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

  DatabasesDispT& operator=(DatabasesPtr pintf)
  {
    TAutoDriver<Databases>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::Database* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   short           Count = {read = get_Count};
};
typedef DatabasesDispT<Databases> DatabasesDisp;

typedef TComInterface<Database>  TCOMDatabase;

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

  DatabaseDispT(Database *pintf)
  {
    TAutoDriver<Database>::Bind(pintf, false);
  }

  DatabaseDispT(DatabasePtr pintf)
  {
    TAutoDriver<Database>::Bind(pintf, true);
  }

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

  DatabaseDispT& operator=(DatabasePtr pintf)
  {
    TAutoDriver<Database>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_CollatingOrder(long* pl/*[out,retval]*/);
  long            __fastcall get_CollatingOrder(void);
  HRESULT         __fastcall get_Connect(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Connect(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_QueryTimeout(short* ps/*[out,retval]*/);
  short           __fastcall get_QueryTimeout(void);
  HRESULT         __fastcall set_QueryTimeout(short ps/*[in]*/);
  HRESULT         __fastcall get_Transactions(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Transactions(void);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_Version(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Version(void);
  HRESULT         __fastcall get_RecordsAffected(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordsAffected(void);
  HRESULT         __fastcall get_TableDefs(Dao_xp::TableDefs** pptdfs/*[out,retval]*/);
  Dao_xp::TableDefsPtr __fastcall get_TableDefs(void);
  HRESULT         __fastcall get_QueryDefs(Dao_xp::QueryDefs** ppqdfs/*[out,retval]*/);
  Dao_xp::QueryDefsPtr __fastcall get_QueryDefs(void);
  HRESULT         __fastcall get_Relations(Dao_xp::Relations** pprls/*[out,retval]*/);
  Dao_xp::RelationsPtr __fastcall get_Relations(void);
  HRESULT         __fastcall get_Containers(Dao_xp::Containers** ppctns/*[out,retval]*/);
  Dao_xp::ContainersPtr __fastcall get_Containers(void);
  HRESULT         __fastcall get_Recordsets(Dao_xp::Recordsets** pprsts/*[out,retval]*/);
  Dao_xp::RecordsetsPtr __fastcall get_Recordsets(void);
  HRESULT         __fastcall Close();
  HRESULT         __fastcall Execute(BSTR Query/*[in]*/, VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _30_OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                               VARIANT Options/*[in,opt]*/, 
                                               Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _30_OpenRecordset(BSTR Name/*[in]*/, 
                                                  VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                  VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateRelation(VARIANT Name/*[in,opt]*/, VARIANT Table/*[in,opt]*/, 
                                            VARIANT ForeignTable/*[in,opt]*/, 
                                            VARIANT Attributes/*[in,opt]*/, 
                                            Dao_xp::Relation** pprel/*[out,retval]*/);
  Dao_xp::Relation* __fastcall CreateRelation(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Table/*[in,opt]*/= TNoParam(), 
                                              VARIANT ForeignTable/*[in,opt]*/= TNoParam(), 
                                              VARIANT Attributes/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateTableDef(VARIANT Name/*[in,opt]*/, VARIANT Attributes/*[in,opt]*/
                                            , VARIANT SourceTableName/*[in,opt]*/, 
                                            VARIANT Connect/*[in,opt]*/, 
                                            Dao_xp::TableDef** pptdf/*[out,retval]*/);
  Dao_xp::TableDef* __fastcall CreateTableDef(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Attributes/*[in,opt]*/= TNoParam(), 
                                              VARIANT SourceTableName/*[in,opt]*/= TNoParam(), 
                                              VARIANT Connect/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall BeginTrans();
  HRESULT         __fastcall CommitTrans(long Options/*[in,def,opt]*/);
  HRESULT         __fastcall Rollback();
  HRESULT         __fastcall CreateDynaset(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                           VARIANT Inconsistent/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateDynaset(BSTR Name/*[in]*/, 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateQueryDef(VARIANT Name/*[in,opt]*/, VARIANT SQLText/*[in,opt]*/, 
                                            Dao_xp::QueryDef** ppqdf/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall CreateQueryDef(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT SQLText/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateSnapshot(BSTR Source/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                            Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateSnapshot(BSTR Source/*[in]*/, 
                                               VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall DeleteQueryDef(BSTR Name/*[in]*/);
  HRESULT         __fastcall ExecuteSQL(BSTR SQL/*[in]*/, long* pl/*[out,retval]*/);
  long            __fastcall ExecuteSQL(BSTR SQL/*[in]*/);
  HRESULT         __fastcall ListFields(BSTR Name/*[in]*/, Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall ListFields(BSTR Name/*[in]*/);
  HRESULT         __fastcall ListTables(Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall ListTables(void);
  HRESULT         __fastcall OpenQueryDef(BSTR Name/*[in]*/, 
                                          Dao_xp::QueryDef** ppqdf/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall OpenQueryDef(BSTR Name/*[in]*/);
  HRESULT         __fastcall OpenTable(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                       Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenTable(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_ReplicaID(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ReplicaID(void);
  HRESULT         __fastcall get_DesignMasterID(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_DesignMasterID(void);
  HRESULT         __fastcall set_DesignMasterID(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall Synchronize(BSTR DbPathName/*[in]*/, 
                                         VARIANT ExchangeType/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall MakeReplica(BSTR PathName/*[in]*/, BSTR Description/*[in]*/, 
                                         VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall set_Connect(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/);
  HRESULT         __fastcall OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                           VARIANT Options/*[in,opt]*/, VARIANT LockEdit/*[in,opt]*/
                                           , Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(BSTR Name/*[in]*/, 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Connection(Dao_xp::Connection** ppCn/*[out,retval]*/);
  Dao_xp::ConnectionPtr __fastcall get_Connection(void);
  HRESULT         __fastcall PopulatePartial(BSTR DbPathName/*[in]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   long            CollatingOrder = {read = get_CollatingOrder};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   BSTR            Name = {read = get_Name};
  __property   short           QueryTimeout = {read = get_QueryTimeout, write = set_QueryTimeout};
  __property   VARIANT_BOOL    Transactions = {read = get_Transactions};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            Version = {read = get_Version};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   Dao_xp::TableDefsPtr TableDefs = {read = get_TableDefs};
  __property   Dao_xp::QueryDefsPtr QueryDefs = {read = get_QueryDefs};
  __property   Dao_xp::RelationsPtr Relations = {read = get_Relations};
  __property   Dao_xp::ContainersPtr Containers = {read = get_Containers};
  __property   Dao_xp::RecordsetsPtr Recordsets = {read = get_Recordsets};
  __property   BSTR            ReplicaID = {read = get_ReplicaID};
  __property   BSTR            DesignMasterID = {read = get_DesignMasterID, write = set_DesignMasterID};
  __property   Dao_xp::ConnectionPtr Connection = {read = get_Connection};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef DatabaseDispT<Database> DatabaseDisp;

typedef TComInterface<TableDefs>  TCOMTableDefs;

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

  TableDefsDispT(TableDefs *pintf)
  {
    TAutoDriver<TableDefs>::Bind(pintf, false);
  }

  TableDefsDispT(TableDefsPtr pintf)
  {
    TAutoDriver<TableDefs>::Bind(pintf, true);
  }

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

  TableDefsDispT& operator=(TableDefsPtr pintf)
  {
    TAutoDriver<TableDefs>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::TableDef** pptdf/*[out,retval]*/);
  Dao_xp::TableDef* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef TableDefsDispT<TableDefs> TableDefsDisp;

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

  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_Connect(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Connect(void);
  HRESULT         __fastcall set_Connect(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_DateCreated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DateCreated(void);
  HRESULT         __fastcall get_LastUpdated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_LastUpdated(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_SourceTableName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SourceTableName(void);
  HRESULT         __fastcall set_SourceTableName(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_ValidationText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationText(void);
  HRESULT         __fastcall set_ValidationText(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ValidationRule(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationRule(void);
  HRESULT         __fastcall set_ValidationRule(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_RecordCount(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordCount(void);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/);
  Dao_xp::IndexesPtr __fastcall get_Indexes(void);
  HRESULT         __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall RefreshLink(void);
  HRESULT         __fastcall CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                         VARIANT Size/*[in,opt]*/, 
                                         Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT Type/*[in,opt]*/= TNoParam(), 
                                         VARIANT Size/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateIndex(VARIANT Name/*[in,opt]*/, 
                                         Dao_xp::Index** ppidx/*[out,retval]*/);
  Dao_xp::Index*  __fastcall CreateIndex(VARIANT Name/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_ConflictTable(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ConflictTable(void);
  HRESULT         __fastcall get_ReplicaFilter(VARIANT* pFilter/*[out,retval]*/);
  VARIANT         __fastcall get_ReplicaFilter(void);
  HRESULT         __fastcall set_ReplicaFilter(VARIANT pFilter/*[in]*/);

  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            SourceTableName = {read = get_SourceTableName, write = set_SourceTableName};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            ValidationText = {read = get_ValidationText, write = set_ValidationText};
  __property   BSTR            ValidationRule = {read = get_ValidationRule, write = set_ValidationRule};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::IndexesPtr Indexes = {read = get_Indexes};
  __property   BSTR            ConflictTable = {read = get_ConflictTable};
};
typedef TCOM_TableDefT<_TableDef> TCOM_TableDef;

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

  _TableDefDispT(_TableDef *pintf)
  {
    TAutoDriver<_TableDef>::Bind(pintf, false);
  }

  _TableDefDispT(_TableDefPtr pintf)
  {
    TAutoDriver<_TableDef>::Bind(pintf, true);
  }

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

  _TableDefDispT& operator=(_TableDefPtr pintf)
  {
    TAutoDriver<_TableDef>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_Connect(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Connect(void);
  HRESULT         __fastcall set_Connect(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_DateCreated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DateCreated(void);
  HRESULT         __fastcall get_LastUpdated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_LastUpdated(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_SourceTableName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SourceTableName(void);
  HRESULT         __fastcall set_SourceTableName(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_ValidationText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationText(void);
  HRESULT         __fastcall set_ValidationText(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ValidationRule(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationRule(void);
  HRESULT         __fastcall set_ValidationRule(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_RecordCount(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordCount(void);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/);
  Dao_xp::IndexesPtr __fastcall get_Indexes(void);
  HRESULT         __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall RefreshLink();
  HRESULT         __fastcall CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                         VARIANT Size/*[in,opt]*/, 
                                         Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT Type/*[in,opt]*/= TNoParam(), 
                                         VARIANT Size/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateIndex(VARIANT Name/*[in,opt]*/, 
                                         Dao_xp::Index** ppidx/*[out,retval]*/);
  Dao_xp::Index*  __fastcall CreateIndex(VARIANT Name/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_ConflictTable(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ConflictTable(void);
  HRESULT         __fastcall get_ReplicaFilter(VARIANT* pFilter/*[out,retval]*/);
  VARIANT         __fastcall get_ReplicaFilter(void);
  HRESULT         __fastcall set_ReplicaFilter(VARIANT pFilter/*[in]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            SourceTableName = {read = get_SourceTableName, write = set_SourceTableName};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            ValidationText = {read = get_ValidationText, write = set_ValidationText};
  __property   BSTR            ValidationRule = {read = get_ValidationRule, write = set_ValidationRule};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::IndexesPtr Indexes = {read = get_Indexes};
  __property   BSTR            ConflictTable = {read = get_ConflictTable};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _TableDefDispT<_TableDef> _TableDefDisp;

typedef TComInterface<Fields>  TCOMFields;

// *********************************************************************//
// DispIntf:  Fields
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000053-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 get_Item(VARIANT Item/*[in]*/, Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



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

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

  HRESULT         __fastcall get_CollatingOrder(long* pl/*[out,retval]*/);
  long            __fastcall get_CollatingOrder(void);
  HRESULT         __fastcall get_Type(short* ps/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall set_Type(short ps/*[in]*/);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Size(long* pl/*[out,retval]*/);
  long            __fastcall get_Size(void);
  HRESULT         __fastcall set_Size(long pl/*[in]*/);
  HRESULT         __fastcall get_SourceField(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SourceField(void);
  HRESULT         __fastcall get_SourceTable(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SourceTable(void);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_OrdinalPosition(short* ps/*[out,retval]*/);
  short           __fastcall get_OrdinalPosition(void);
  HRESULT         __fastcall set_OrdinalPosition(short ps/*[in]*/);
  HRESULT         __fastcall get_ValidationText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationText(void);
  HRESULT         __fastcall set_ValidationText(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ValidateOnSet(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_ValidateOnSet(void);
  HRESULT         __fastcall set_ValidateOnSet(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_ValidationRule(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationRule(void);
  HRESULT         __fastcall set_ValidationRule(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_DefaultValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DefaultValue(void);
  HRESULT         __fastcall set_DefaultValue(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Required(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Required(void);
  HRESULT         __fastcall set_Required(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_AllowZeroLength(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_AllowZeroLength(void);
  HRESULT         __fastcall set_AllowZeroLength(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_DataUpdatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_DataUpdatable(void);
  HRESULT         __fastcall get_ForeignName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ForeignName(void);
  HRESULT         __fastcall set_ForeignName(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall AppendChunk(VARIANT Val/*[in]*/);
  HRESULT         __fastcall GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/, 
                                      VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/);
  HRESULT         __fastcall _30_FieldSize(long* pl/*[out,retval]*/);
  long            __fastcall _30_FieldSize(void);
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_CollectionIndex(short* i/*[out,retval]*/);
  short           __fastcall get_CollectionIndex(void);
  HRESULT         __fastcall get_OriginalValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_OriginalValue(void);
  HRESULT         __fastcall get_VisibleValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_VisibleValue(void);
  HRESULT         __fastcall get_FieldSize(long* pl/*[out,retval]*/);
  long            __fastcall get_FieldSize(void);

  __property   long            CollatingOrder = {read = get_CollatingOrder};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   long            Size = {read = get_Size, write = set_Size};
  __property   BSTR            SourceField = {read = get_SourceField};
  __property   BSTR            SourceTable = {read = get_SourceTable};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   short           OrdinalPosition = {read = get_OrdinalPosition, write = set_OrdinalPosition};
  __property   BSTR            ValidationText = {read = get_ValidationText, write = set_ValidationText};
  __property   VARIANT_BOOL    ValidateOnSet = {read = get_ValidateOnSet, write = set_ValidateOnSet};
  __property   BSTR            ValidationRule = {read = get_ValidationRule, write = set_ValidationRule};
  __property   VARIANT_BOOL    Required = {read = get_Required, write = set_Required};
  __property   VARIANT_BOOL    AllowZeroLength = {read = get_AllowZeroLength, write = set_AllowZeroLength};
  __property   VARIANT_BOOL    DataUpdatable = {read = get_DataUpdatable};
  __property   BSTR            ForeignName = {read = get_ForeignName, write = set_ForeignName};
  __property   short           CollectionIndex = {read = get_CollectionIndex};
  __property   long            FieldSize = {read = get_FieldSize};
};
typedef TCOM_FieldT<_Field> TCOM_Field;

// *********************************************************************//
// DispIntf:  _Field
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000051-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 BindDefault()
  {
    return OLECHECK(Bind(CLSID_Field));
  }

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

  HRESULT         __fastcall get_CollatingOrder(long* pl/*[out,retval]*/);
  long            __fastcall get_CollatingOrder(void);
  HRESULT         __fastcall get_Type(short* ps/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall set_Type(short ps/*[in]*/);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Size(long* pl/*[out,retval]*/);
  long            __fastcall get_Size(void);
  HRESULT         __fastcall set_Size(long pl/*[in]*/);
  HRESULT         __fastcall get_SourceField(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SourceField(void);
  HRESULT         __fastcall get_SourceTable(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SourceTable(void);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_OrdinalPosition(short* ps/*[out,retval]*/);
  short           __fastcall get_OrdinalPosition(void);
  HRESULT         __fastcall set_OrdinalPosition(short ps/*[in]*/);
  HRESULT         __fastcall get_ValidationText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationText(void);
  HRESULT         __fastcall set_ValidationText(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ValidateOnSet(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_ValidateOnSet(void);
  HRESULT         __fastcall set_ValidateOnSet(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_ValidationRule(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationRule(void);
  HRESULT         __fastcall set_ValidationRule(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_DefaultValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DefaultValue(void);
  HRESULT         __fastcall set_DefaultValue(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Required(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Required(void);
  HRESULT         __fastcall set_Required(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_AllowZeroLength(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_AllowZeroLength(void);
  HRESULT         __fastcall set_AllowZeroLength(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_DataUpdatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_DataUpdatable(void);
  HRESULT         __fastcall get_ForeignName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ForeignName(void);
  HRESULT         __fastcall set_ForeignName(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall AppendChunk(VARIANT Val/*[in]*/);
  HRESULT         __fastcall GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/, 
                                      VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/);
  HRESULT         __fastcall _30_FieldSize(long* pl/*[out,retval]*/);
  long            __fastcall _30_FieldSize(void);
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_CollectionIndex(short* i/*[out,retval]*/);
  short           __fastcall get_CollectionIndex(void);
  HRESULT         __fastcall get_OriginalValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_OriginalValue(void);
  HRESULT         __fastcall get_VisibleValue(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_VisibleValue(void);
  HRESULT         __fastcall get_FieldSize(long* pl/*[out,retval]*/);
  long            __fastcall get_FieldSize(void);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   long            CollatingOrder = {read = get_CollatingOrder};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   long            Size = {read = get_Size, write = set_Size};
  __property   BSTR            SourceField = {read = get_SourceField};
  __property   BSTR            SourceTable = {read = get_SourceTable};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   short           OrdinalPosition = {read = get_OrdinalPosition, write = set_OrdinalPosition};
  __property   BSTR            ValidationText = {read = get_ValidationText, write = set_ValidationText};
  __property   VARIANT_BOOL    ValidateOnSet = {read = get_ValidateOnSet, write = set_ValidateOnSet};
  __property   BSTR            ValidationRule = {read = get_ValidationRule, write = set_ValidationRule};
  __property   VARIANT_BOOL    Required = {read = get_Required, write = set_Required};
  __property   VARIANT_BOOL    AllowZeroLength = {read = get_AllowZeroLength, write = set_AllowZeroLength};
  __property   VARIANT_BOOL    DataUpdatable = {read = get_DataUpdatable};
  __property   BSTR            ForeignName = {read = get_ForeignName, write = set_ForeignName};
  __property   short           CollectionIndex = {read = get_CollectionIndex};
  __property   long            FieldSize = {read = get_FieldSize};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _FieldDispT<_Field> _FieldDisp;

typedef TComInterface<Indexes>  TCOMIndexes;

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

  IndexesDispT(Indexes *pintf)
  {
    TAutoDriver<Indexes>::Bind(pintf, false);
  }

  IndexesDispT(IndexesPtr pintf)
  {
    TAutoDriver<Indexes>::Bind(pintf, true);
  }

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

  IndexesDispT& operator=(IndexesPtr pintf)
  {
    TAutoDriver<Indexes>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::Index** ppidx/*[out,retval]*/);
  Dao_xp::Index*  __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef IndexesDispT<Indexes> IndexesDisp;

// *********************************************************************//
// SmartIntf: TCOM_Index
// Interface: _Index
// *********************************************************************//
template <class T /* _Index */ >
class TCOM_IndexT : public TComInterface<_Index>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_IndexT() {}
  TCOM_IndexT(_Index *intf, bool addRef = false) : TComInterface<_Index>(intf, addRef) {}
  TCOM_IndexT(const TCOM_IndexT& src) : TComInterface<_Index>(src) {}
  TCOM_IndexT& operator=(const TCOM_IndexT& 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_Foreign(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Foreign(void);
  HRESULT         __fastcall get_Unique(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Unique(void);
  HRESULT         __fastcall set_Unique(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Clustered(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Clustered(void);
  HRESULT         __fastcall set_Clustered(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Required(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Required(void);
  HRESULT         __fastcall set_Required(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_IgnoreNulls(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_IgnoreNulls(void);
  HRESULT         __fastcall set_IgnoreNulls(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Primary(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Primary(void);
  HRESULT         __fastcall set_Primary(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_DistinctCount(long* pl/*[out,retval]*/);
  long            __fastcall get_DistinctCount(void);
  HRESULT         __fastcall get_Fields(VARIANT* pv/*[out,retval]*/);
  VARIANT         __fastcall get_Fields(void);
  HRESULT         __fastcall set_Fields(VARIANT pv/*[in]*/);
  HRESULT         __fastcall CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                         VARIANT Size/*[in,opt]*/, 
                                         Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT Type/*[in,opt]*/= TNoParam(), 
                                         VARIANT Size/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   VARIANT_BOOL    Foreign = {read = get_Foreign};
  __property   VARIANT_BOOL    Unique = {read = get_Unique, write = set_Unique};
  __property   VARIANT_BOOL    Clustered = {read = get_Clustered, write = set_Clustered};
  __property   VARIANT_BOOL    Required = {read = get_Required, write = set_Required};
  __property   VARIANT_BOOL    IgnoreNulls = {read = get_IgnoreNulls, write = set_IgnoreNulls};
  __property   VARIANT_BOOL    Primary = {read = get_Primary, write = set_Primary};
  __property   long            DistinctCount = {read = get_DistinctCount};
};
typedef TCOM_IndexT<_Index> TCOM_Index;

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

  _IndexDispT(_Index *pintf)
  {
    TAutoDriver<_Index>::Bind(pintf, false);
  }

  _IndexDispT(_IndexPtr pintf)
  {
    TAutoDriver<_Index>::Bind(pintf, true);
  }

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

  _IndexDispT& operator=(_IndexPtr pintf)
  {
    TAutoDriver<_Index>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Foreign(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Foreign(void);
  HRESULT         __fastcall get_Unique(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Unique(void);
  HRESULT         __fastcall set_Unique(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Clustered(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Clustered(void);
  HRESULT         __fastcall set_Clustered(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Required(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Required(void);
  HRESULT         __fastcall set_Required(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_IgnoreNulls(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_IgnoreNulls(void);
  HRESULT         __fastcall set_IgnoreNulls(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Primary(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Primary(void);
  HRESULT         __fastcall set_Primary(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_DistinctCount(long* pl/*[out,retval]*/);
  long            __fastcall get_DistinctCount(void);
  HRESULT         __fastcall get_Fields(VARIANT* pv/*[out,retval]*/);
  VARIANT         __fastcall get_Fields(void);
  HRESULT         __fastcall set_Fields(VARIANT pv/*[in]*/);
  HRESULT         __fastcall CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                         VARIANT Size/*[in,opt]*/, 
                                         Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT Type/*[in,opt]*/= TNoParam(), 
                                         VARIANT Size/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   VARIANT_BOOL    Foreign = {read = get_Foreign};
  __property   VARIANT_BOOL    Unique = {read = get_Unique, write = set_Unique};
  __property   VARIANT_BOOL    Clustered = {read = get_Clustered, write = set_Clustered};
  __property   VARIANT_BOOL    Required = {read = get_Required, write = set_Required};
  __property   VARIANT_BOOL    IgnoreNulls = {read = get_IgnoreNulls, write = set_IgnoreNulls};
  __property   VARIANT_BOOL    Primary = {read = get_Primary, write = set_Primary};
  __property   long            DistinctCount = {read = get_DistinctCount};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _IndexDispT<_Index> _IndexDisp;

typedef TComInterface<Recordset>  TCOMRecordset;

// *********************************************************************//
// DispIntf:  Recordset
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000031-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         __fastcall get_BOF(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_BOF(void);
  HRESULT         __fastcall get_Bookmark(LPSAFEARRAY* ppsach/*[out,retval]*/);
  LPSAFEARRAY     __fastcall get_Bookmark(void);
  HRESULT         __fastcall set_Bookmark(LPSAFEARRAY* ppsach/*[in]*/);
  HRESULT         __fastcall get_Bookmarkable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Bookmarkable(void);
  HRESULT         __fastcall get_DateCreated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DateCreated(void);
  HRESULT         __fastcall get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_EOF_(void);
  HRESULT         __fastcall get_Filter(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Filter(void);
  HRESULT         __fastcall set_Filter(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Index(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Index(void);
  HRESULT         __fastcall set_Index(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_LastModified(LPSAFEARRAY* ppsa/*[out,retval]*/);
  LPSAFEARRAY     __fastcall get_LastModified(void);
  HRESULT         __fastcall get_LastUpdated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_LastUpdated(void);
  HRESULT         __fastcall get_LockEdits(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_LockEdits(void);
  HRESULT         __fastcall set_LockEdits(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_NoMatch(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_NoMatch(void);
  HRESULT         __fastcall get_Sort(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Sort(void);
  HRESULT         __fastcall set_Sort(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Transactions(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Transactions(void);
  HRESULT         __fastcall get_Type(short* ps/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall get_RecordCount(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordCount(void);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_Restartable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Restartable(void);
  HRESULT         __fastcall get_ValidationText(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationText(void);
  HRESULT         __fastcall get_ValidationRule(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ValidationRule(void);
  HRESULT         __fastcall get_CacheStart(LPSAFEARRAY* ppsa/*[out,retval]*/);
  LPSAFEARRAY     __fastcall get_CacheStart(void);
  HRESULT         __fastcall set_CacheStart(LPSAFEARRAY* ppsa/*[in]*/);
  HRESULT         __fastcall get_CacheSize(long* pl/*[out,retval]*/);
  long            __fastcall get_CacheSize(void);
  HRESULT         __fastcall set_CacheSize(long pl/*[in]*/);
  HRESULT         __fastcall get_PercentPosition(float* pd/*[out,retval]*/);
  float           __fastcall get_PercentPosition(void);
  HRESULT         __fastcall set_PercentPosition(float pd/*[in]*/);
  HRESULT         __fastcall get_AbsolutePosition(long* pl/*[out,retval]*/);
  long            __fastcall get_AbsolutePosition(void);
  HRESULT         __fastcall set_AbsolutePosition(long pl/*[in]*/);
  HRESULT         __fastcall get_EditMode(short* pi/*[out,retval]*/);
  short           __fastcall get_EditMode(void);
  HRESULT         __fastcall get_ODBCFetchCount(long* pl/*[out,retval]*/);
  long            __fastcall get_ODBCFetchCount(void);
  HRESULT         __fastcall get_ODBCFetchDelay(long* pl/*[out,retval]*/);
  long            __fastcall get_ODBCFetchDelay(void);
  HRESULT         __fastcall get_Parent(Dao_xp::Database** pdb/*[out,retval]*/);
  Dao_xp::DatabasePtr __fastcall get_Parent(void);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/);
  Dao_xp::IndexesPtr __fastcall get_Indexes(void);
  HRESULT         __fastcall _30_CancelUpdate();
  HRESULT         __fastcall AddNew();
  HRESULT         __fastcall Close();
  HRESULT         __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Delete();
  HRESULT         __fastcall Edit();
  HRESULT         __fastcall FindFirst(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall FindLast(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall FindNext(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall FindPrevious(BSTR Criteria/*[in]*/);
  HRESULT         __fastcall MoveFirst();
  HRESULT         __fastcall _30_MoveLast();
  HRESULT         __fastcall MoveNext();
  HRESULT         __fastcall MovePrevious();
  HRESULT         __fastcall Seek(BSTR Comparison/*[in]*/, VARIANT Key1/*[in]*/, 
                                  VARIANT Key2/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key3/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key4/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key5/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key6/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key7/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key8/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key9/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key10/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key11/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key12/*[in,opt]*/= TNoParam(), 
                                  VARIANT Key13/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _30_Update();
  HRESULT         __fastcall Clone(Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall Clone(void);
  HRESULT         __fastcall Requery(VARIANT NewQueryDef/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Move(long Rows/*[in]*/, VARIANT StartBookmark/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall FillCache(VARIANT Rows/*[in,opt]*/= TNoParam(), 
                                       VARIANT StartBookmark/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/, 
                                           VARIANT Inconsistent/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                            Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CopyQueryDef(Dao_xp::QueryDef** ppqdf/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall CopyQueryDef(void);
  HRESULT         __fastcall ListFields(Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall ListFields(void);
  HRESULT         __fastcall ListIndexes(Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall ListIndexes(void);
  HRESULT         __fastcall GetRows(VARIANT NumRows/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall GetRows(VARIANT NumRows/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Collect(VARIANT Item/*[in]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Collect(VARIANT Item/*[in]*/);
  HRESULT         __fastcall set_Collect(VARIANT Item/*[in]*/, VARIANT pvar/*[in]*/);
  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall NextRecordset(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall NextRecordset(void);
  HRESULT         __fastcall get_hStmt(long* phStmt/*[out,retval]*/);
  long            __fastcall get_hStmt(void);
  HRESULT         __fastcall get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_StillExecuting(void);
  HRESULT         __fastcall get_BatchSize(long* pl/*[out,retval]*/);
  long            __fastcall get_BatchSize(void);
  HRESULT         __fastcall set_BatchSize(long pl/*[in]*/);
  HRESULT         __fastcall get_BatchCollisionCount(long* pl/*[out,retval]*/);
  long            __fastcall get_BatchCollisionCount(void);
  HRESULT         __fastcall get_BatchCollisions(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_BatchCollisions(void);
  HRESULT         __fastcall get_Connection(Dao_xp::Connection** ppCn/*[out,retval]*/);
  Dao_xp::ConnectionPtr __fastcall get_Connection(void);
  HRESULT         __fastcall _set_Connection(Dao_xp::Connection* ppCn/*[in]*/);
  HRESULT         __fastcall get_RecordStatus(short* pi/*[out,retval]*/);
  short           __fastcall get_RecordStatus(void);
  HRESULT         __fastcall get_UpdateOptions(long* pl/*[out,retval]*/);
  long            __fastcall get_UpdateOptions(void);
  HRESULT         __fastcall set_UpdateOptions(long pl/*[in]*/);
  HRESULT         __fastcall CancelUpdate(long UpdateType/*[in,def,opt]*/);
  HRESULT         __fastcall _Update(long UpdateType/*[in,def,opt]*/, 
                                     VARIANT_BOOL Force/*[in,def,opt]*/);
  HRESULT         __fastcall MoveLast(long Options/*[in,def,opt]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   VARIANT_BOOL    BOF = {read = get_BOF};
  __property   VARIANT_BOOL    Bookmarkable = {read = get_Bookmarkable};
  __property   VARIANT_BOOL    EOF_ = {read = get_EOF_};
  __property   BSTR            Filter = {read = get_Filter, write = set_Filter};
  __property   BSTR            Index = {read = get_Index, write = set_Index};
  __property   VARIANT_BOOL    LockEdits = {read = get_LockEdits, write = set_LockEdits};
  __property   BSTR            Name = {read = get_Name};
  __property   VARIANT_BOOL    NoMatch = {read = get_NoMatch};
  __property   BSTR            Sort = {read = get_Sort, write = set_Sort};
  __property   VARIANT_BOOL    Transactions = {read = get_Transactions};
  __property   short           Type = {read = get_Type};
  __property   long            RecordCount = {read = get_RecordCount};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   VARIANT_BOOL    Restartable = {read = get_Restartable};
  __property   BSTR            ValidationText = {read = get_ValidationText};
  __property   BSTR            ValidationRule = {read = get_ValidationRule};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
  __property   float           PercentPosition = {read = get_PercentPosition, write = set_PercentPosition};
  __property   long            AbsolutePosition = {read = get_AbsolutePosition, write = set_AbsolutePosition};
  __property   short           EditMode = {read = get_EditMode};
  __property   long            ODBCFetchCount = {read = get_ODBCFetchCount};
  __property   long            ODBCFetchDelay = {read = get_ODBCFetchDelay};
  __property   Dao_xp::DatabasePtr Parent = {read = get_Parent};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::IndexesPtr Indexes = {read = get_Indexes};
  __property   long            hStmt = {read = get_hStmt};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   long            BatchSize = {read = get_BatchSize, write = set_BatchSize};
  __property   long            BatchCollisionCount = {read = get_BatchCollisionCount};
  __property   Dao_xp::ConnectionPtr Connection = {read = get_Connection};
  __property   short           RecordStatus = {read = get_RecordStatus};
  __property   long            UpdateOptions = {read = get_UpdateOptions, write = set_UpdateOptions};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef RecordsetDispT<Recordset> RecordsetDisp;

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

  HRESULT         __fastcall get_DateCreated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DateCreated(void);
  HRESULT         __fastcall get_LastUpdated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_LastUpdated(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ODBCTimeout(short* ps/*[out,retval]*/);
  short           __fastcall get_ODBCTimeout(void);
  HRESULT         __fastcall set_ODBCTimeout(short ps/*[in]*/);
  HRESULT         __fastcall get_Type(short* pi/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall get_SQL(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SQL(void);
  HRESULT         __fastcall set_SQL(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_Connect(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Connect(void);
  HRESULT         __fastcall set_Connect(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ReturnsRecords(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_ReturnsRecords(void);
  HRESULT         __fastcall set_ReturnsRecords(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_RecordsAffected(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordsAffected(void);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_Parameters(Dao_xp::Parameters** ppprms/*[out,retval]*/);
  Dao_xp::ParametersPtr __fastcall get_Parameters(void);
  HRESULT         __fastcall Close(void);
  HRESULT         __fastcall _30_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                               Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _30_OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                  VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _30__OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                VARIANT Options/*[in,opt]*/, 
                                                Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _30__OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                   VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _Copy(Dao_xp::QueryDef** ppqdf/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall _Copy(void);
  HRESULT         __fastcall Execute(VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Compare(Dao_xp::QueryDef* pQdef/*[in]*/, short* lps/*[in]*/);
  HRESULT         __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/, 
                                           VARIANT Inconsistent/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                            Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall ListParameters(Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall ListParameters(void);
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                           VARIANT LockEdit/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                            VARIANT LockEdit/*[in,opt]*/, 
                                            Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                               VARIANT Options/*[in,opt]*/= TNoParam(), 
                                               VARIANT LockEdit/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Cancel(void);
  HRESULT         __fastcall get_hStmt(long* phStmt/*[out,retval]*/);
  long            __fastcall get_hStmt(void);
  HRESULT         __fastcall get_MaxRecords(long* pMxRecs/*[out,retval]*/);
  long            __fastcall get_MaxRecords(void);
  HRESULT         __fastcall set_MaxRecords(long pMxRecs/*[in]*/);
  HRESULT         __fastcall get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_StillExecuting(void);
  HRESULT         __fastcall get_CacheSize(long* lCacheSize/*[out,retval]*/);
  long            __fastcall get_CacheSize(void);
  HRESULT         __fastcall set_CacheSize(long lCacheSize/*[in]*/);
  HRESULT         __fastcall get_Prepare(VARIANT* pb/*[out,retval]*/);
  VARIANT         __fastcall get_Prepare(void);
  HRESULT         __fastcall set_Prepare(VARIANT pb/*[in]*/);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   short           ODBCTimeout = {read = get_ODBCTimeout, write = set_ODBCTimeout};
  __property   short           Type = {read = get_Type};
  __property   BSTR            SQL = {read = get_SQL, write = set_SQL};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   VARIANT_BOOL    ReturnsRecords = {read = get_ReturnsRecords, write = set_ReturnsRecords};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::ParametersPtr Parameters = {read = get_Parameters};
  __property   long            hStmt = {read = get_hStmt};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};
};
typedef TCOM_QueryDefT<_QueryDef> TCOM_QueryDef;

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

  _QueryDefDispT(_QueryDef *pintf)
  {
    TAutoDriver<_QueryDef>::Bind(pintf, false);
  }

  _QueryDefDispT(_QueryDefPtr pintf)
  {
    TAutoDriver<_QueryDef>::Bind(pintf, true);
  }

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

  _QueryDefDispT& operator=(_QueryDefPtr pintf)
  {
    TAutoDriver<_QueryDef>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_DateCreated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DateCreated(void);
  HRESULT         __fastcall get_LastUpdated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_LastUpdated(void);
  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ODBCTimeout(short* ps/*[out,retval]*/);
  short           __fastcall get_ODBCTimeout(void);
  HRESULT         __fastcall set_ODBCTimeout(short ps/*[in]*/);
  HRESULT         __fastcall get_Type(short* pi/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall get_SQL(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_SQL(void);
  HRESULT         __fastcall set_SQL(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_Connect(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Connect(void);
  HRESULT         __fastcall set_Connect(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ReturnsRecords(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_ReturnsRecords(void);
  HRESULT         __fastcall set_ReturnsRecords(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_RecordsAffected(long* pl/*[out,retval]*/);
  long            __fastcall get_RecordsAffected(void);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall get_Parameters(Dao_xp::Parameters** ppprms/*[out,retval]*/);
  Dao_xp::ParametersPtr __fastcall get_Parameters(void);
  HRESULT         __fastcall Close();
  HRESULT         __fastcall _30_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/
                                               , Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _30_OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                  VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _30__OpenRecordset(VARIANT Type/*[in,opt]*/, 
                                                VARIANT Options/*[in,opt]*/, 
                                                Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _30__OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                                   VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _Copy(Dao_xp::QueryDef** ppqdf/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall _Copy(void);
  HRESULT         __fastcall Execute(VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Compare(Dao_xp::QueryDef* pQdef/*[in]*/, short* lps/*[in]*/);
  HRESULT         __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/, 
                                           VARIANT Inconsistent/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateDynaset(VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT Inconsistent/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                            Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall CreateSnapshot(VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall ListParameters(Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall ListParameters(void);
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                           VARIANT LockEdit/*[in,opt]*/, 
                                           Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall _OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                            VARIANT LockEdit/*[in,opt]*/, 
                                            Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall _OpenRecordset(VARIANT Type/*[in,opt]*/= TNoParam(), 
                                               VARIANT Options/*[in,opt]*/= TNoParam(), 
                                               VARIANT LockEdit/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall get_hStmt(long* phStmt/*[out,retval]*/);
  long            __fastcall get_hStmt(void);
  HRESULT         __fastcall get_MaxRecords(long* pMxRecs/*[out,retval]*/);
  long            __fastcall get_MaxRecords(void);
  HRESULT         __fastcall set_MaxRecords(long pMxRecs/*[in]*/);
  HRESULT         __fastcall get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_StillExecuting(void);
  HRESULT         __fastcall get_CacheSize(long* lCacheSize/*[out,retval]*/);
  long            __fastcall get_CacheSize(void);
  HRESULT         __fastcall set_CacheSize(long lCacheSize/*[in]*/);
  HRESULT         __fastcall get_Prepare(VARIANT* pb/*[out,retval]*/);
  VARIANT         __fastcall get_Prepare(void);
  HRESULT         __fastcall set_Prepare(VARIANT pb/*[in]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   short           ODBCTimeout = {read = get_ODBCTimeout, write = set_ODBCTimeout};
  __property   short           Type = {read = get_Type};
  __property   BSTR            SQL = {read = get_SQL, write = set_SQL};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   BSTR            Connect = {read = get_Connect, write = set_Connect};
  __property   VARIANT_BOOL    ReturnsRecords = {read = get_ReturnsRecords, write = set_ReturnsRecords};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   Dao_xp::ParametersPtr Parameters = {read = get_Parameters};
  __property   long            hStmt = {read = get_hStmt};
  __property   long            MaxRecords = {read = get_MaxRecords, write = set_MaxRecords};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   long            CacheSize = {read = get_CacheSize, write = set_CacheSize};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _QueryDefDispT<_QueryDef> _QueryDefDisp;

typedef TComInterface<Parameters>  TCOMParameters;

// *********************************************************************//
// DispIntf:  Parameters
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000083-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 Item/*[in]*/, 
                                      Dao_xp::Parameter** ppprm/*[out,retval]*/);
  Dao_xp::Parameter* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


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

typedef TComInterface<Parameter>  TCOMParameter;

// *********************************************************************//
// DispIntf:  Parameter
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000081-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         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Value(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Value(void);
  HRESULT         __fastcall set_Value(VARIANT pvar/*[in]*/);
  HRESULT         __fastcall get_Type(short* ps/*[out,retval]*/);
  short           __fastcall get_Type(void);
  HRESULT         __fastcall set_Type(short ps/*[in]*/);
  HRESULT         __fastcall get_Direction(short* pOption/*[out,retval]*/);
  short           __fastcall get_Direction(void);
  HRESULT         __fastcall set_Direction(short pOption/*[in]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name};
  __property   short           Type = {read = get_Type, write = set_Type};
  __property   short           Direction = {read = get_Direction, write = set_Direction};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef ParameterDispT<Parameter> ParameterDisp;

typedef TComInterface<Connection>  TCOMConnection;

// *********************************************************************//
// DispIntf:  Connection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000041-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         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Connect(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Connect(void);
  HRESULT         __fastcall get_Database(Dao_xp::Database** ppDb/*[out,retval]*/);
  Dao_xp::DatabasePtr __fastcall get_Database(void);
  HRESULT         __fastcall get_hDbc(long* phDbc/*[out,retval]*/);
  long            __fastcall get_hDbc(void);
  HRESULT         __fastcall get_QueryTimeout(short* pSeconds/*[out,retval]*/);
  short           __fastcall get_QueryTimeout(void);
  HRESULT         __fastcall set_QueryTimeout(short pSeconds/*[in]*/);
  HRESULT         __fastcall get_Transactions(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Transactions(void);
  HRESULT         __fastcall get_RecordsAffected(long* pRecords/*[out,retval]*/);
  long            __fastcall get_RecordsAffected(void);
  HRESULT         __fastcall get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_StillExecuting(void);
  HRESULT         __fastcall get_Updatable(VARIANT_BOOL* pStillExec/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Updatable(void);
  HRESULT         __fastcall get_QueryDefs(Dao_xp::QueryDefs** ppqdfs/*[out,retval]*/);
  Dao_xp::QueryDefsPtr __fastcall get_QueryDefs(void);
  HRESULT         __fastcall get_Recordsets(Dao_xp::Recordsets** pprsts/*[out,retval]*/);
  Dao_xp::RecordsetsPtr __fastcall get_Recordsets(void);
  HRESULT         __fastcall Cancel();
  HRESULT         __fastcall Close();
  HRESULT         __fastcall CreateQueryDef(VARIANT Name/*[in,opt]*/, VARIANT SQLText/*[in,opt]*/, 
                                            Dao_xp::QueryDef** ppqdf/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall CreateQueryDef(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT SQLText/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Execute(BSTR Query/*[in]*/, VARIANT Options/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                           VARIANT Options/*[in,opt]*/, VARIANT LockEdit/*[in,opt]*/
                                           , Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall OpenRecordset(BSTR Name/*[in]*/, 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Options/*[in,opt]*/= TNoParam(), 
                                              VARIANT LockEdit/*[in,opt]*/= TNoParam());

  __property   BSTR            Name = {read = get_Name};
  __property   BSTR            Connect = {read = get_Connect};
  __property   Dao_xp::DatabasePtr Database = {read = get_Database};
  __property   long            hDbc = {read = get_hDbc};
  __property   short           QueryTimeout = {read = get_QueryTimeout, write = set_QueryTimeout};
  __property   VARIANT_BOOL    Transactions = {read = get_Transactions};
  __property   long            RecordsAffected = {read = get_RecordsAffected};
  __property   VARIANT_BOOL    StillExecuting = {read = get_StillExecuting};
  __property   VARIANT_BOOL    Updatable = {read = get_Updatable};
  __property   Dao_xp::QueryDefsPtr QueryDefs = {read = get_QueryDefs};
  __property   Dao_xp::RecordsetsPtr Recordsets = {read = get_Recordsets};
};
typedef ConnectionDispT<Connection> ConnectionDisp;

typedef TComInterface<QueryDefs>  TCOMQueryDefs;

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

  QueryDefsDispT(QueryDefs *pintf)
  {
    TAutoDriver<QueryDefs>::Bind(pintf, false);
  }

  QueryDefsDispT(QueryDefsPtr pintf)
  {
    TAutoDriver<QueryDefs>::Bind(pintf, true);
  }

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

  QueryDefsDispT& operator=(QueryDefsPtr pintf)
  {
    TAutoDriver<QueryDefs>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, 
                                      Dao_xp::QueryDef** ppqdef/*[out,retval]*/);
  Dao_xp::QueryDef* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef QueryDefsDispT<QueryDefs> QueryDefsDisp;

typedef TComInterface<Recordsets>  TCOMRecordsets;

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

  RecordsetsDispT(Recordsets *pintf)
  {
    TAutoDriver<Recordsets>::Bind(pintf, false);
  }

  RecordsetsDispT(RecordsetsPtr pintf)
  {
    TAutoDriver<Recordsets>::Bind(pintf, true);
  }

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

  RecordsetsDispT& operator=(RecordsetsPtr pintf)
  {
    TAutoDriver<Recordsets>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, 
                                      Dao_xp::Recordset** pprst/*[out,retval]*/);
  Dao_xp::Recordset* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   short           Count = {read = get_Count};
};
typedef RecordsetsDispT<Recordsets> RecordsetsDisp;

typedef TComInterface<Relations>  TCOMRelations;

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

  RelationsDispT(Relations *pintf)
  {
    TAutoDriver<Relations>::Bind(pintf, false);
  }

  RelationsDispT(RelationsPtr pintf)
  {
    TAutoDriver<Relations>::Bind(pintf, true);
  }

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

  RelationsDispT& operator=(RelationsPtr pintf)
  {
    TAutoDriver<Relations>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::Relation** pprel/*[out,retval]*/);
  Dao_xp::Relation* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef RelationsDispT<Relations> RelationsDisp;

// *********************************************************************//
// SmartIntf: TCOM_Relation
// Interface: _Relation
// *********************************************************************//
template <class T /* _Relation */ >
class TCOM_RelationT : public TComInterface<_Relation>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_RelationT() {}
  TCOM_RelationT(_Relation *intf, bool addRef = false) : TComInterface<_Relation>(intf, addRef) {}
  TCOM_RelationT(const TCOM_RelationT& src) : TComInterface<_Relation>(src) {}
  TCOM_RelationT& operator=(const TCOM_RelationT& 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_Table(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Table(void);
  HRESULT         __fastcall set_Table(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ForeignTable(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ForeignTable(void);
  HRESULT         __fastcall set_ForeignTable(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                         VARIANT Size/*[in,opt]*/, 
                                         Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT Type/*[in,opt]*/= TNoParam(), 
                                         VARIANT Size/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_PartialReplica(VARIANT_BOOL* pfPartialReplica/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_PartialReplica(void);
  HRESULT         __fastcall set_PartialReplica(VARIANT_BOOL pfPartialReplica/*[in]*/);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            Table = {read = get_Table, write = set_Table};
  __property   BSTR            ForeignTable = {read = get_ForeignTable, write = set_ForeignTable};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   VARIANT_BOOL    PartialReplica = {read = get_PartialReplica, write = set_PartialReplica};
};
typedef TCOM_RelationT<_Relation> TCOM_Relation;

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

  _RelationDispT(_Relation *pintf)
  {
    TAutoDriver<_Relation>::Bind(pintf, false);
  }

  _RelationDispT(_RelationPtr pintf)
  {
    TAutoDriver<_Relation>::Bind(pintf, true);
  }

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

  _RelationDispT& operator=(_RelationPtr pintf)
  {
    TAutoDriver<_Relation>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Table(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Table(void);
  HRESULT         __fastcall set_Table(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_ForeignTable(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_ForeignTable(void);
  HRESULT         __fastcall set_ForeignTable(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Attributes(long* pl/*[out,retval]*/);
  long            __fastcall get_Attributes(void);
  HRESULT         __fastcall set_Attributes(long pl/*[in]*/);
  HRESULT         __fastcall get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/);
  Dao_xp::FieldsPtr __fastcall get_Fields(void);
  HRESULT         __fastcall CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                         VARIANT Size/*[in,opt]*/, 
                                         Dao_xp::Field** ppfld/*[out,retval]*/);
  Dao_xp::Field*  __fastcall CreateField(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT Type/*[in,opt]*/= TNoParam(), 
                                         VARIANT Size/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_PartialReplica(VARIANT_BOOL* pfPartialReplica/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_PartialReplica(void);
  HRESULT         __fastcall set_PartialReplica(VARIANT_BOOL pfPartialReplica/*[in]*/);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            Table = {read = get_Table, write = set_Table};
  __property   BSTR            ForeignTable = {read = get_ForeignTable, write = set_ForeignTable};
  __property   long            Attributes = {read = get_Attributes, write = set_Attributes};
  __property   Dao_xp::FieldsPtr Fields = {read = get_Fields};
  __property   VARIANT_BOOL    PartialReplica = {read = get_PartialReplica, write = set_PartialReplica};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _RelationDispT<_Relation> _RelationDisp;

typedef TComInterface<Containers>  TCOMContainers;

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

  ContainersDispT(Containers *pintf)
  {
    TAutoDriver<Containers>::Bind(pintf, false);
  }

  ContainersDispT(ContainersPtr pintf)
  {
    TAutoDriver<Containers>::Bind(pintf, true);
  }

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

  ContainersDispT& operator=(ContainersPtr pintf)
  {
    TAutoDriver<Containers>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, 
                                      Dao_xp::Container** ppctn/*[out,retval]*/);
  Dao_xp::Container* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   short           Count = {read = get_Count};
};
typedef ContainersDispT<Containers> ContainersDisp;

typedef TComInterface<Container>  TCOMContainer;

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

  ContainerDispT(Container *pintf)
  {
    TAutoDriver<Container>::Bind(pintf, false);
  }

  ContainerDispT(ContainerPtr pintf)
  {
    TAutoDriver<Container>::Bind(pintf, true);
  }

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

  ContainerDispT& operator=(ContainerPtr pintf)
  {
    TAutoDriver<Container>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Owner(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Owner(void);
  HRESULT         __fastcall set_Owner(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_UserName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_UserName(void);
  HRESULT         __fastcall set_UserName(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Permissions(long* pl/*[out,retval]*/);
  long            __fastcall get_Permissions(void);
  HRESULT         __fastcall set_Permissions(long pl/*[in]*/);
  HRESULT         __fastcall get_Inherit(VARIANT_BOOL* pb/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_Inherit(void);
  HRESULT         __fastcall set_Inherit(VARIANT_BOOL pb/*[in]*/);
  HRESULT         __fastcall get_Documents(Dao_xp::Documents** ppdocs/*[out,retval]*/);
  Dao_xp::DocumentsPtr __fastcall get_Documents(void);
  HRESULT         __fastcall get_AllPermissions(long* pl/*[out,retval]*/);
  long            __fastcall get_AllPermissions(void);
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name};
  __property   BSTR            Owner = {read = get_Owner, write = set_Owner};
  __property   BSTR            UserName = {read = get_UserName, write = set_UserName};
  __property   long            Permissions = {read = get_Permissions, write = set_Permissions};
  __property   VARIANT_BOOL    Inherit = {read = get_Inherit, write = set_Inherit};
  __property   Dao_xp::DocumentsPtr Documents = {read = get_Documents};
  __property   long            AllPermissions = {read = get_AllPermissions};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef ContainerDispT<Container> ContainerDisp;

typedef TComInterface<Documents>  TCOMDocuments;

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

  DocumentsDispT(Documents *pintf)
  {
    TAutoDriver<Documents>::Bind(pintf, false);
  }

  DocumentsDispT(DocumentsPtr pintf)
  {
    TAutoDriver<Documents>::Bind(pintf, true);
  }

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

  DocumentsDispT& operator=(DocumentsPtr pintf)
  {
    TAutoDriver<Documents>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::Document** ppdoc/*[out,retval]*/);
  Dao_xp::Document* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   short           Count = {read = get_Count};
};
typedef DocumentsDispT<Documents> DocumentsDisp;

typedef TComInterface<Document>  TCOMDocument;

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

  DocumentDispT(Document *pintf)
  {
    TAutoDriver<Document>::Bind(pintf, false);
  }

  DocumentDispT(DocumentPtr pintf)
  {
    TAutoDriver<Document>::Bind(pintf, true);
  }

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

  DocumentDispT& operator=(DocumentPtr pintf)
  {
    TAutoDriver<Document>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_Owner(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Owner(void);
  HRESULT         __fastcall set_Owner(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Container(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Container(void);
  HRESULT         __fastcall get_UserName(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_UserName(void);
  HRESULT         __fastcall set_UserName(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall get_Permissions(long* pl/*[out,retval]*/);
  long            __fastcall get_Permissions(void);
  HRESULT         __fastcall set_Permissions(long pl/*[in]*/);
  HRESULT         __fastcall get_DateCreated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_DateCreated(void);
  HRESULT         __fastcall get_LastUpdated(VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_LastUpdated(void);
  HRESULT         __fastcall get_AllPermissions(long* pl/*[out,retval]*/);
  long            __fastcall get_AllPermissions(void);
  HRESULT         __fastcall CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                            VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                            Dao_xp::Property** pprp/*[out,retval]*/);
  Dao_xp::Property* __fastcall CreateProperty(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                              VARIANT Type/*[in,opt]*/= TNoParam(), 
                                              VARIANT Value/*[in,opt]*/= TNoParam(), 
                                              VARIANT DDL/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name};
  __property   BSTR            Owner = {read = get_Owner, write = set_Owner};
  __property   BSTR            Container = {read = get_Container};
  __property   BSTR            UserName = {read = get_UserName, write = set_UserName};
  __property   long            Permissions = {read = get_Permissions, write = set_Permissions};
  __property   long            AllPermissions = {read = get_AllPermissions};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef DocumentDispT<Document> DocumentDisp;

typedef TComInterface<Users>  TCOMUsers;

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

  UsersDispT(Users *pintf)
  {
    TAutoDriver<Users>::Bind(pintf, false);
  }

  UsersDispT(UsersPtr pintf)
  {
    TAutoDriver<Users>::Bind(pintf, true);
  }

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

  UsersDispT& operator=(UsersPtr pintf)
  {
    TAutoDriver<Users>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::User** ppusr/*[out,retval]*/);
  Dao_xp::User*   __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef UsersDispT<Users> UsersDisp;

// *********************************************************************//
// SmartIntf: TCOM_User
// Interface: _User
// *********************************************************************//
template <class T /* _User */ >
class TCOM_UserT : public TComInterface<_User>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_UserT() {}
  TCOM_UserT(_User *intf, bool addRef = false) : TComInterface<_User>(intf, addRef) {}
  TCOM_UserT(const TCOM_UserT& src) : TComInterface<_User>(src) {}
  TCOM_UserT& operator=(const TCOM_UserT& 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 set_PID(BSTR Param1/*[in]*/);
  HRESULT         __fastcall set_Password(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/);
  Dao_xp::GroupsPtr __fastcall get_Groups(void);
  HRESULT         __fastcall NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/);
  HRESULT         __fastcall CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                         Dao_xp::Group** ppgrp/*[out,retval]*/);
  Dao_xp::Group*  __fastcall CreateGroup(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT PID/*[in,opt]*/= TNoParam());

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            PID = {write = set_PID};
  __property   BSTR            Password = {write = set_Password};
  __property   Dao_xp::GroupsPtr Groups = {read = get_Groups};
};
typedef TCOM_UserT<_User> TCOM_User;

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

  _UserDispT(_User *pintf)
  {
    TAutoDriver<_User>::Bind(pintf, false);
  }

  _UserDispT(_UserPtr pintf)
  {
    TAutoDriver<_User>::Bind(pintf, true);
  }

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

  _UserDispT& operator=(_UserPtr pintf)
  {
    TAutoDriver<_User>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall set_PID(BSTR Param1/*[in]*/);
  HRESULT         __fastcall set_Password(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/);
  Dao_xp::GroupsPtr __fastcall get_Groups(void);
  HRESULT         __fastcall NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/);
  HRESULT         __fastcall CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                         Dao_xp::Group** ppgrp/*[out,retval]*/);
  Dao_xp::Group*  __fastcall CreateGroup(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                         VARIANT PID/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            PID = {write = set_PID};
  __property   BSTR            Password = {write = set_Password};
  __property   Dao_xp::GroupsPtr Groups = {read = get_Groups};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _UserDispT<_User> _UserDisp;

typedef TComInterface<Groups>  TCOMGroups;

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

  GroupsDispT(Groups *pintf)
  {
    TAutoDriver<Groups>::Bind(pintf, false);
  }

  GroupsDispT(GroupsPtr pintf)
  {
    TAutoDriver<Groups>::Bind(pintf, true);
  }

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

  GroupsDispT& operator=(GroupsPtr pintf)
  {
    TAutoDriver<Groups>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, Dao_xp::Group** ppgrp/*[out,retval]*/);
  Dao_xp::Group*  __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef GroupsDispT<Groups> GroupsDisp;

// *********************************************************************//
// SmartIntf: TCOM_Group
// Interface: _Group
// *********************************************************************//
template <class T /* _Group */ >
class TCOM_GroupT : public TComInterface<_Group>, public TComInterfaceBase<IUnknown>
{
public:
  TCOM_GroupT() {}
  TCOM_GroupT(_Group *intf, bool addRef = false) : TComInterface<_Group>(intf, addRef) {}
  TCOM_GroupT(const TCOM_GroupT& src) : TComInterface<_Group>(src) {}
  TCOM_GroupT& operator=(const TCOM_GroupT& 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 set_PID(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/);
  Dao_xp::UsersPtr __fastcall get_Users(void);
  HRESULT         __fastcall CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                        VARIANT Password/*[in,opt]*/, 
                                        Dao_xp::User** ppusr/*[out,retval]*/);
  Dao_xp::User*   __fastcall CreateUser(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT PID/*[in,opt]*/= TNoParam(), 
                                        VARIANT Password/*[in,opt]*/= TNoParam());

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            PID = {write = set_PID};
  __property   Dao_xp::UsersPtr Users = {read = get_Users};
};
typedef TCOM_GroupT<_Group> TCOM_Group;

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

  _GroupDispT(_Group *pintf)
  {
    TAutoDriver<_Group>::Bind(pintf, false);
  }

  _GroupDispT(_GroupPtr pintf)
  {
    TAutoDriver<_Group>::Bind(pintf, true);
  }

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

  _GroupDispT& operator=(_GroupPtr pintf)
  {
    TAutoDriver<_Group>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall get_Name(BSTR* pbstr/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall set_Name(BSTR pbstr/*[in]*/);
  HRESULT         __fastcall set_PID(BSTR Param1/*[in]*/);
  HRESULT         __fastcall get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/);
  Dao_xp::UsersPtr __fastcall get_Users(void);
  HRESULT         __fastcall CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                                        VARIANT Password/*[in,opt]*/, 
                                        Dao_xp::User** ppusr/*[out,retval]*/);
  Dao_xp::User*   __fastcall CreateUser(VARIANT Name/*[in,opt]*/= TNoParam(), 
                                        VARIANT PID/*[in,opt]*/= TNoParam(), 
                                        VARIANT Password/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/);
  Dao_xp::PropertiesPtr __fastcall get_Properties(void);

  __property   BSTR            Name = {read = get_Name, write = set_Name};
  __property   BSTR            PID = {write = set_PID};
  __property   Dao_xp::UsersPtr Users = {read = get_Users};

  __property   Dao_xp::PropertiesPtr Properties = {read = get_Properties};
};
typedef _GroupDispT<_Group> _GroupDisp;

typedef TComInterface<Connections>  TCOMConnections;

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

  ConnectionsDispT(Connections *pintf)
  {
    TAutoDriver<Connections>::Bind(pintf, false);
  }

  ConnectionsDispT(ConnectionsPtr pintf)
  {
    TAutoDriver<Connections>::Bind(pintf, true);
  }

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

  ConnectionsDispT& operator=(ConnectionsPtr pintf)
  {
    TAutoDriver<Connections>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in]*/, 
                                      Dao_xp::Connection** ppconn/*[out,retval]*/);
  Dao_xp::Connection* __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


  __property   short           Count = {read = get_Count};
};
typedef ConnectionsDispT<Connections> ConnectionsDisp;

typedef TComInterface<Errors>  TCOMErrors;

// *********************************************************************//
// DispIntf:  Errors
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000025-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 Item/*[in]*/, Dao_xp::Error** pperr/*[out,retval]*/);
  Dao_xp::Error*  __fastcall get_Item(VARIANT Item/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();


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

typedef TComInterface<Error>  TCOMError;

// *********************************************************************//
// DispIntf:  Error
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000023-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);

  __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};
};
typedef ErrorDispT<Error> ErrorDisp;

typedef TComInterface<IndexFields>  TCOMIndexFields;

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

  IndexFieldsDispT(IndexFields *pintf)
  {
    TAutoDriver<IndexFields>::Bind(pintf, false);
  }

  IndexFieldsDispT(IndexFieldsPtr pintf)
  {
    TAutoDriver<IndexFields>::Bind(pintf, true);
  }

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

  IndexFieldsDispT& operator=(IndexFieldsPtr pintf)
  {
    TAutoDriver<IndexFields>::Bind(pintf, true);
    return *this;
  }

  HRESULT         __fastcall get_Item(VARIANT Item/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/);
  VARIANT         __fastcall get_Item(VARIANT Item/*[in,opt]*/= TNoParam());
  HRESULT         __fastcall Append(LPDISPATCH Object/*[in]*/);
  HRESULT         __fastcall Delete(BSTR Name/*[in]*/);
  HRESULT         __fastcall get_Count(short* c/*[out,retval]*/);
  short           __fastcall get_Count(void);
  HRESULT         __fastcall _NewEnum(LPUNKNOWN* ppunk/*[out,retval]*/);
  LPUNKNOWN       __fastcall _NewEnum(void);
  HRESULT         __fastcall Refresh();



  __property   short           Count = {read = get_Count};
};
typedef IndexFieldsDispT<IndexFields> IndexFieldsDisp;

// *********************************************************************//
// DispIntf:  _DAO
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000000A-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_DAODispT<T>::get_Properties(Dao_xp::Properties** ppprops/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Properties"), DISPID(10));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Properties**)ppprops /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::PropertiesPtr __fastcall
_DAODispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

// *********************************************************************//
// SmartIntf: TCOM_DBEngine
// Interface: _DBEngine
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::get_Version(BSTR* pbstr/*[out,retval]*/)
{
  return (*this)->get_Version(pbstr);
}

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

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

template <class T> BSTR __fastcall
TCOM_DBEngineT<T>::get_IniPath(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_IniPath((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::set_IniPath(BSTR pbstr/*[in]*/)
{
  return (*this)->set_IniPath(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::set_DefaultUser(BSTR Param1/*[in]*/)
{
  return (*this)->set_DefaultUser(Param1);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::set_DefaultPassword(BSTR Param1/*[in]*/)
{
  return (*this)->set_DefaultPassword(Param1);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::get_LoginTimeout(short* ps/*[out,retval]*/)
{
  return (*this)->get_LoginTimeout(ps);
}

template <class T> short __fastcall
TCOM_DBEngineT<T>::get_LoginTimeout(void)
{
  short ps;
  OLECHECK(this->get_LoginTimeout((short*)&ps));
  return ps;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::set_LoginTimeout(short ps/*[in]*/)
{
  return (*this)->set_LoginTimeout(ps);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::get_Workspaces(Dao_xp::Workspaces** ppworks/*[out,retval]*/)
{
  return (*this)->get_Workspaces(ppworks);
}

template <class T> Dao_xp::WorkspacesPtr __fastcall
TCOM_DBEngineT<T>::get_Workspaces(void)
{
  Dao_xp::WorkspacesPtr ppworks;
  OLECHECK(this->get_Workspaces((Dao_xp::WorkspacesPtr*)&ppworks));
  return ppworks;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::get_Errors(Dao_xp::Errors** pperrs/*[out,retval]*/)
{
  return (*this)->get_Errors(pperrs);
}

template <class T> Dao_xp::ErrorsPtr __fastcall
TCOM_DBEngineT<T>::get_Errors(void)
{
  Dao_xp::ErrorsPtr pperrs;
  OLECHECK(this->get_Errors((Dao_xp::ErrorsPtr*)&pperrs));
  return pperrs;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::Idle(VARIANT Action/*[in,opt]*/)
{
  return (*this)->Idle(Action);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::CompactDatabase(BSTR SrcName/*[in]*/, BSTR DstName/*[in]*/, 
                                   VARIANT DstLocale/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                   VARIANT SrcLocale/*[in,opt]*/)
{
  return (*this)->CompactDatabase(SrcName, DstName, DstLocale, Options, SrcLocale);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::RepairDatabase(BSTR Name/*[in]*/)
{
  return (*this)->RepairDatabase(Name);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::RegisterDatabase(BSTR Dsn/*[in]*/, BSTR Driver/*[in]*/, 
                                    VARIANT_BOOL Silent/*[in]*/, BSTR Attributes/*[in]*/)
{
  return (*this)->RegisterDatabase(Dsn, Driver, Silent, Attributes);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::_30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                       BSTR Password/*[in]*/, 
                                       Dao_xp::Workspace** ppwrk/*[out,retval]*/)
{
  return (*this)->_30_CreateWorkspace(Name, UserName, Password, ppwrk);
}

template <class T> Dao_xp::Workspace* __fastcall
TCOM_DBEngineT<T>::_30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                       BSTR Password/*[in]*/)
{
  Dao_xp::Workspace* ppwrk;
  OLECHECK(this->_30_CreateWorkspace(Name/*[in]*/, UserName/*[in]*/, Password/*[in]*/, (Dao_xp::Workspace**)&ppwrk));
  return ppwrk;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                Dao_xp::Database** ppDb/*[out,retval]*/)
{
  return (*this)->OpenDatabase(Name, Options, ReadOnly, Connect, ppDb);
}

template <class T> Dao_xp::Database* __fastcall
TCOM_DBEngineT<T>::OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::Database* ppDb;
  OLECHECK(this->OpenDatabase(Name/*[in]*/, Options/*[in,opt]*/, ReadOnly/*[in,opt]*/, 
                              Connect/*[in,opt]*/, (Dao_xp::Database**)&ppDb));
  return ppDb;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, VARIANT Option/*[in,opt]*/, 
                                  Dao_xp::Database** ppDb/*[out,retval]*/)
{
  return (*this)->CreateDatabase(Name, Locale, Option, ppDb);
}

template <class T> Dao_xp::Database* __fastcall
TCOM_DBEngineT<T>::CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, VARIANT Option/*[in,opt]*/)
{
  Dao_xp::Database* ppDb;
  OLECHECK(this->CreateDatabase(Name/*[in]*/, Locale/*[in]*/, Option/*[in,opt]*/, (Dao_xp::Database**)&ppDb));
  return ppDb;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::FreeLocks(void)
{
  return (*this)->FreeLocks();
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::BeginTrans(void)
{
  return (*this)->BeginTrans();
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::CommitTrans(long Option/*[in,def,opt]*/)
{
  return (*this)->CommitTrans(Option);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::Rollback(void)
{
  return (*this)->Rollback();
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::SetDefaultWorkspace(BSTR Name/*[in]*/, BSTR Password/*[in]*/)
{
  return (*this)->SetDefaultWorkspace(Name, Password);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::SetDataAccessOption(short Option/*[in]*/, VARIANT Value/*[in]*/)
{
  return (*this)->SetDataAccessOption(Option, Value);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/, 
                             long* pl/*[out,retval]*/)
{
  return (*this)->ISAMStats(StatNum, Reset, pl);
}

template <class T> long __fastcall
TCOM_DBEngineT<T>::ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/)
{
  long pl;
  OLECHECK(this->ISAMStats(StatNum/*[in]*/, Reset/*[in,opt]*/, (long*)&pl));
  return pl;
}

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

template <class T> BSTR __fastcall
TCOM_DBEngineT<T>::get_SystemDB(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_SystemDB((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::set_SystemDB(BSTR pbstr/*[in]*/)
{
  return (*this)->set_SystemDB(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, BSTR Password/*[in]*/, 
                                   VARIANT UseType/*[in,opt]*/, 
                                   Dao_xp::Workspace** ppwrk/*[out,retval]*/)
{
  return (*this)->CreateWorkspace(Name, UserName, Password, UseType, ppwrk);
}

template <class T> Dao_xp::Workspace* __fastcall
TCOM_DBEngineT<T>::CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, BSTR Password/*[in]*/, 
                                   VARIANT UseType/*[in,opt]*/)
{
  Dao_xp::Workspace* ppwrk;
  OLECHECK(this->CreateWorkspace(Name/*[in]*/, UserName/*[in]*/, Password/*[in]*/, 
                                 UseType/*[in,opt]*/, (Dao_xp::Workspace**)&ppwrk));
  return ppwrk;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                  Dao_xp::Connection** ppconn/*[out,retval]*/)
{
  return (*this)->OpenConnection(Name, Options, ReadOnly, Connect, ppconn);
}

template <class T> Dao_xp::Connection* __fastcall
TCOM_DBEngineT<T>::OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::Connection* ppconn;
  OLECHECK(this->OpenConnection(Name/*[in]*/, Options/*[in,opt]*/, ReadOnly/*[in,opt]*/, 
                                Connect/*[in,opt]*/, (Dao_xp::Connection**)&ppconn));
  return ppconn;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::get_DefaultType(long* Option/*[out,retval]*/)
{
  return (*this)->get_DefaultType(Option);
}

template <class T> long __fastcall
TCOM_DBEngineT<T>::get_DefaultType(void)
{
  long Option;
  OLECHECK(this->get_DefaultType((long*)&Option));
  return Option;
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::set_DefaultType(long Option/*[in]*/)
{
  return (*this)->set_DefaultType(Option);
}

template <class T> HRESULT __fastcall
TCOM_DBEngineT<T>::SetOption(long Option/*[in]*/, VARIANT Value/*[in]*/)
{
  return (*this)->SetOption(Option, Value);
}

// *********************************************************************//
// DispIntf:  _DBEngine
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000021-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_DBEngineDispT<T>::get_Version(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Version"), DISPID(1610809344));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

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

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

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::set_DefaultPassword(BSTR Param1/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultPassword"), DISPID(1610809348));
  TAutoArgs<1> _args;
  _args[1] = Param1 /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::get_LoginTimeout(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("LoginTimeout"), DISPID(1610809349));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
_DBEngineDispT<T>::get_LoginTimeout(void)
{
  short ps;
  this->get_LoginTimeout((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::set_LoginTimeout(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("LoginTimeout"), DISPID(1610809349));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::get_Workspaces(Dao_xp::Workspaces** ppworks/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Workspaces"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Workspaces**)ppworks /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::WorkspacesPtr __fastcall
_DBEngineDispT<T>::get_Workspaces(void)
{
  Dao_xp::WorkspacesPtr ppworks;
  this->get_Workspaces(&ppworks);
  return ppworks;
}

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

template <class T> Dao_xp::ErrorsPtr __fastcall
_DBEngineDispT<T>::get_Errors(void)
{
  Dao_xp::ErrorsPtr pperrs;
  this->get_Errors(&pperrs);
  return pperrs;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::Idle(VARIANT Action/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Idle"), DISPID(1610809353));
  TAutoArgs<1> _args;
  _args[1] = Action /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::CompactDatabase(BSTR SrcName/*[in]*/, BSTR DstName/*[in]*/, 
                                   VARIANT DstLocale/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                   VARIANT SrcLocale/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("CompactDatabase"), DISPID(1610809354));
  TAutoArgs<5> _args;
  _args[1] = SrcName /*[VT_BSTR:0]*/;
  _args[2] = DstName /*[VT_BSTR:0]*/;
  _args[3] = DstLocale /*[VT_VARIANT:0]*/;
  _args[4] = Options /*[VT_VARIANT:0]*/;
  _args[5] = SrcLocale /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::RepairDatabase(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("RepairDatabase"), DISPID(1610809355));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::RegisterDatabase(BSTR Dsn/*[in]*/, BSTR Driver/*[in]*/, 
                                    VARIANT_BOOL Silent/*[in]*/, BSTR Attributes/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("RegisterDatabase"), DISPID(1610809356));
  TAutoArgs<4> _args;
  _args[1] = Dsn /*[VT_BSTR:0]*/;
  _args[2] = Driver /*[VT_BSTR:0]*/;
  _args[3] = Silent /*[VT_BOOL:0]*/;
  _args[4] = Attributes /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::_30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                       BSTR Password/*[in]*/, 
                                       Dao_xp::Workspace** ppwrk/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_30_CreateWorkspace"), DISPID(1610809357));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = UserName /*[VT_BSTR:0]*/;
  _args[3] = Password /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Workspace**)ppwrk /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Workspace* __fastcall
_DBEngineDispT<T>::_30_CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, 
                                       BSTR Password/*[in]*/)
{
  Dao_xp::Workspace* ppwrk;
  this->_30_CreateWorkspace(Name, UserName, Password, (Dao_xp::Workspace**)&ppwrk);
  return ppwrk;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                Dao_xp::Database** ppDb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenDatabase"), DISPID(1610809358));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = ReadOnly /*[VT_VARIANT:0]*/;
  _args[4] = Connect /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Database**)ppDb /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Database* __fastcall
_DBEngineDispT<T>::OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::Database* ppDb;
  this->OpenDatabase(Name, Options, ReadOnly, Connect, (Dao_xp::Database**)&ppDb);
  return ppDb;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, VARIANT Option/*[in,opt]*/
                                  , Dao_xp::Database** ppDb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateDatabase"), DISPID(1610809359));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Locale /*[VT_BSTR:0]*/;
  _args[3] = Option /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Database**)ppDb /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Database* __fastcall
_DBEngineDispT<T>::CreateDatabase(BSTR Name/*[in]*/, BSTR Locale/*[in]*/, VARIANT Option/*[in,opt]*/)
{
  Dao_xp::Database* ppDb;
  this->CreateDatabase(Name, Locale, Option, (Dao_xp::Database**)&ppDb);
  return ppDb;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::FreeLocks()
{
  _TDispID _dispid(*this, OLETEXT("FreeLocks"), DISPID(1610809360));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::BeginTrans()
{
  _TDispID _dispid(*this, OLETEXT("BeginTrans"), DISPID(1610809361));
  return OleFunction(_dispid);
}

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

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::Rollback()
{
  _TDispID _dispid(*this, OLETEXT("Rollback"), DISPID(1610809363));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::SetDefaultWorkspace(BSTR Name/*[in]*/, BSTR Password/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetDefaultWorkspace"), DISPID(1610809364));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Password /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::SetDataAccessOption(short Option/*[in]*/, VARIANT Value/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetDataAccessOption"), DISPID(1610809365));
  TAutoArgs<2> _args;
  _args[1] = Option /*[VT_I2:0]*/;
  _args[2] = Value /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/, 
                             long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ISAMStats"), DISPID(1610809366));
  TAutoArgs<2> _args;
  _args[1] = StatNum /*[VT_I4:0]*/;
  _args[2] = Reset /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
_DBEngineDispT<T>::ISAMStats(long StatNum/*[in]*/, VARIANT Reset/*[in,opt]*/)
{
  long pl;
  this->ISAMStats(StatNum, Reset, (long*)&pl);
  return pl;
}

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

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

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

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, BSTR Password/*[in]*/, 
                                   VARIANT UseType/*[in,opt]*/, 
                                   Dao_xp::Workspace** ppwrk/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateWorkspace"), DISPID(1610809369));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = UserName /*[VT_BSTR:0]*/;
  _args[3] = Password /*[VT_BSTR:0]*/;
  _args[4] = UseType /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Workspace**)ppwrk /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Workspace* __fastcall
_DBEngineDispT<T>::CreateWorkspace(BSTR Name/*[in]*/, BSTR UserName/*[in]*/, BSTR Password/*[in]*/, 
                                   VARIANT UseType/*[in,opt]*/)
{
  Dao_xp::Workspace* ppwrk;
  this->CreateWorkspace(Name, UserName, Password, UseType, (Dao_xp::Workspace**)&ppwrk);
  return ppwrk;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                  Dao_xp::Connection** ppconn/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenConnection"), DISPID(1610809370));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = ReadOnly /*[VT_VARIANT:0]*/;
  _args[4] = Connect /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Connection**)ppconn /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Connection* __fastcall
_DBEngineDispT<T>::OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::Connection* ppconn;
  this->OpenConnection(Name, Options, ReadOnly, Connect, (Dao_xp::Connection**)&ppconn);
  return ppconn;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::get_DefaultType(long* Option/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultType"), DISPID(1610809371));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(Option /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_DBEngineDispT<T>::get_DefaultType(void)
{
  long Option;
  this->get_DefaultType((long*)&Option);
  return Option;
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::set_DefaultType(long Option/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultType"), DISPID(1610809371));
  TAutoArgs<1> _args;
  _args[1] = Option /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_DBEngineDispT<T>::SetOption(long Option/*[in]*/, VARIANT Value/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetOption"), DISPID(1610809373));
  TAutoArgs<2> _args;
  _args[1] = Option /*[VT_I4:0]*/;
  _args[2] = Value /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_DBEngineDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

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

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

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

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:      {000000A2-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_DynaCollectionDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
PropertiesDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
PropertiesDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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:      {00000027-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/*[1610809346]*/));
  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>::set_Name(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1610809346));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

template <class T> HRESULT __fastcall
PropertyDispT<T>::set_Type(short ptype/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1610809348));
  TAutoArgs<1> _args;
  _args[1] = ptype /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

template <class T> Dao_xp::PropertiesPtr __fastcall
PropertyDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Workspace* __fastcall
WorkspacesDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Workspace* ppwrk;
  this->get_Item(Item, (Dao_xp::Workspace**)&ppwrk);
  return ppwrk;
}

template <class T> HRESULT __fastcall
WorkspacesDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
WorkspacesDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// DispIntf:  Workspace
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000039-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
WorkspaceDispT<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
WorkspaceDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<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
WorkspaceDispT<T>::get_UserName(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("UserName"), DISPID(DISPID_UNKNOWN/*[1610809346]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::set__30_UserName(BSTR Param1/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("_30_UserName"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  TAutoArgs<1> _args;
  _args[1] = Param1 /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::set__30_Password(BSTR Param1/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("_30_Password"), DISPID(DISPID_UNKNOWN/*[1610809348]*/));
  TAutoArgs<1> _args;
  _args[1] = Param1 /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_IsolateODBCTrans(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("IsolateODBCTrans"), DISPID(DISPID_UNKNOWN/*[1610809349]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
WorkspaceDispT<T>::get_IsolateODBCTrans(void)
{
  short ps;
  this->get_IsolateODBCTrans((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::set_IsolateODBCTrans(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("IsolateODBCTrans"), DISPID(1610809349));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_Databases(Dao_xp::Databases** ppdbs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Databases"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Databases**)ppdbs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::DatabasesPtr __fastcall
WorkspaceDispT<T>::get_Databases(void)
{
  Dao_xp::DatabasesPtr ppdbs;
  this->get_Databases(&ppdbs);
  return ppdbs;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Users"), DISPID(DISPID_UNKNOWN/*[1610809352]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Users**)ppusrs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::UsersPtr __fastcall
WorkspaceDispT<T>::get_Users(void)
{
  Dao_xp::UsersPtr ppusrs;
  this->get_Users(&ppusrs);
  return ppusrs;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Groups"), DISPID(DISPID_UNKNOWN/*[1610809353]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Groups**)ppgrps /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::GroupsPtr __fastcall
WorkspaceDispT<T>::get_Groups(void)
{
  Dao_xp::GroupsPtr ppgrps;
  this->get_Groups(&ppgrps);
  return ppgrps;
}

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

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

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

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

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                Dao_xp::Database** ppDb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenDatabase"), DISPID(DISPID_UNKNOWN/*[1610809358]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = ReadOnly /*[VT_VARIANT:0]*/;
  _args[4] = Connect /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Database**)ppDb /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Database* __fastcall
WorkspaceDispT<T>::OpenDatabase(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::Database* ppDb;
  this->OpenDatabase(Name, Options, ReadOnly, Connect, (Dao_xp::Database**)&ppDb);
  return ppDb;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::CreateDatabase(BSTR Name/*[in]*/, BSTR Connect/*[in]*/, 
                                  VARIANT Option/*[in,opt]*/, 
                                  Dao_xp::Database** ppDb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateDatabase"), DISPID(DISPID_UNKNOWN/*[1610809359]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Connect /*[VT_BSTR:0]*/;
  _args[3] = Option /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Database**)ppDb /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Database* __fastcall
WorkspaceDispT<T>::CreateDatabase(BSTR Name/*[in]*/, BSTR Connect/*[in]*/, 
                                  VARIANT Option/*[in,opt]*/)
{
  Dao_xp::Database* ppDb;
  this->CreateDatabase(Name, Connect, Option, (Dao_xp::Database**)&ppDb);
  return ppDb;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                              VARIANT Password/*[in,opt]*/, Dao_xp::User** ppusr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateUser"), DISPID(DISPID_UNKNOWN/*[1610809360]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = PID /*[VT_VARIANT:0]*/;
  _args[3] = Password /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::User**)ppusr /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::User* __fastcall
WorkspaceDispT<T>::CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                              VARIANT Password/*[in,opt]*/)
{
  Dao_xp::User* ppusr;
  this->CreateUser(Name, PID, Password, (Dao_xp::User**)&ppusr);
  return ppusr;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                               Dao_xp::Group** ppgrp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateGroup"), DISPID(DISPID_UNKNOWN/*[1610809361]*/));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = PID /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Group**)ppgrp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Group* __fastcall
WorkspaceDispT<T>::CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/)
{
  Dao_xp::Group* ppgrp;
  this->CreateGroup(Name, PID, (Dao_xp::Group**)&ppgrp);
  return ppgrp;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                  Dao_xp::Connection** ppconn/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenConnection"), DISPID(DISPID_UNKNOWN/*[1610809362]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = ReadOnly /*[VT_VARIANT:0]*/;
  _args[4] = Connect /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Connection**)ppconn /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Connection* __fastcall
WorkspaceDispT<T>::OpenConnection(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT ReadOnly/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::Connection* ppconn;
  this->OpenConnection(Name, Options, ReadOnly, Connect, (Dao_xp::Connection**)&ppconn);
  return ppconn;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_LoginTimeout(long* pTimeout/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("LoginTimeout"), DISPID(DISPID_UNKNOWN/*[1610809363]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pTimeout /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
WorkspaceDispT<T>::get_LoginTimeout(void)
{
  long pTimeout;
  this->get_LoginTimeout((long*)&pTimeout);
  return pTimeout;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::set_LoginTimeout(long pTimeout/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("LoginTimeout"), DISPID(1610809363));
  TAutoArgs<1> _args;
  _args[1] = pTimeout /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_DefaultCursorDriver(long* pCursorType/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultCursorDriver"), DISPID(DISPID_UNKNOWN/*[1610809365]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pCursorType /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
WorkspaceDispT<T>::get_DefaultCursorDriver(void)
{
  long pCursorType;
  this->get_DefaultCursorDriver((long*)&pCursorType);
  return pCursorType;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::set_DefaultCursorDriver(long pCursorType/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DefaultCursorDriver"), DISPID(1610809365));
  TAutoArgs<1> _args;
  _args[1] = pCursorType /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_hEnv(long* phEnv/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("hEnv"), DISPID(DISPID_UNKNOWN/*[1610809367]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(phEnv /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
WorkspaceDispT<T>::get_hEnv(void)
{
  long phEnv;
  this->get_hEnv((long*)&phEnv);
  return phEnv;
}

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_Type(long* ptype/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(DISPID_UNKNOWN/*[1610809368]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ptype /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

template <class T> HRESULT __fastcall
WorkspaceDispT<T>::get_Connections(Dao_xp::Connections** ppcns/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Connections"), DISPID(DISPID_UNKNOWN/*[1610809369]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Connections**)ppcns /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::ConnectionsPtr __fastcall
WorkspaceDispT<T>::get_Connections(void)
{
  Dao_xp::ConnectionsPtr ppcns;
  this->get_Connections(&ppcns);
  return ppcns;
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
WorkspaceDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Database* __fastcall
DatabasesDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Database* ppDb;
  this->get_Item(Item, (Dao_xp::Database**)&ppDb);
  return ppDb;
}

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

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

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

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_QueryTimeout(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("QueryTimeout"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
DatabaseDispT<T>::get_QueryTimeout(void)
{
  short ps;
  this->get_QueryTimeout((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::set_QueryTimeout(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("QueryTimeout"), DISPID(1610809347));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_TableDefs(Dao_xp::TableDefs** pptdfs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("TableDefs"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::TableDefs**)pptdfs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::TableDefsPtr __fastcall
DatabaseDispT<T>::get_TableDefs(void)
{
  Dao_xp::TableDefsPtr pptdfs;
  this->get_TableDefs(&pptdfs);
  return pptdfs;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_QueryDefs(Dao_xp::QueryDefs** ppqdfs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("QueryDefs"), DISPID(DISPID_UNKNOWN/*[1610809354]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDefs**)ppqdfs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::QueryDefsPtr __fastcall
DatabaseDispT<T>::get_QueryDefs(void)
{
  Dao_xp::QueryDefsPtr ppqdfs;
  this->get_QueryDefs(&ppqdfs);
  return ppqdfs;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_Relations(Dao_xp::Relations** pprls/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Relations"), DISPID(DISPID_UNKNOWN/*[1610809355]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Relations**)pprls /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::RelationsPtr __fastcall
DatabaseDispT<T>::get_Relations(void)
{
  Dao_xp::RelationsPtr pprls;
  this->get_Relations(&pprls);
  return pprls;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_Containers(Dao_xp::Containers** ppctns/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Containers"), DISPID(DISPID_UNKNOWN/*[1610809356]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Containers**)ppctns /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::ContainersPtr __fastcall
DatabaseDispT<T>::get_Containers(void)
{
  Dao_xp::ContainersPtr ppctns;
  this->get_Containers(&ppctns);
  return ppctns;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_Recordsets(Dao_xp::Recordsets** pprsts/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Recordsets"), DISPID(DISPID_UNKNOWN/*[1610809357]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordsets**)pprsts /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::RecordsetsPtr __fastcall
DatabaseDispT<T>::get_Recordsets(void)
{
  Dao_xp::RecordsetsPtr pprsts;
  this->get_Recordsets(&pprsts);
  return pprsts;
}

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

template <class T> HRESULT __fastcall
DatabaseDispT<T>::Execute(BSTR Query/*[in]*/, VARIANT Options/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(DISPID_UNKNOWN/*[1610809359]*/));
  TAutoArgs<2> _args;
  _args[1] = Query /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::_30_OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                    VARIANT Options/*[in,opt]*/, 
                                    Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_30_OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809360]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::_30_OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                    VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->_30_OpenRecordset(Name, Type, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                 VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                 Dao_xp::Property** pprp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateProperty"), DISPID(DISPID_UNKNOWN/*[1610809361]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Value /*[VT_VARIANT:0]*/;
  _args[4] = DDL /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Property**)pprp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Property* __fastcall
DatabaseDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                 VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp);
  return pprp;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::CreateRelation(VARIANT Name/*[in,opt]*/, VARIANT Table/*[in,opt]*/, 
                                 VARIANT ForeignTable/*[in,opt]*/, VARIANT Attributes/*[in,opt]*/, 
                                 Dao_xp::Relation** pprel/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateRelation"), DISPID(DISPID_UNKNOWN/*[1610809362]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Table /*[VT_VARIANT:0]*/;
  _args[3] = ForeignTable /*[VT_VARIANT:0]*/;
  _args[4] = Attributes /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Relation**)pprel /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Relation* __fastcall
DatabaseDispT<T>::CreateRelation(VARIANT Name/*[in,opt]*/, VARIANT Table/*[in,opt]*/, 
                                 VARIANT ForeignTable/*[in,opt]*/, VARIANT Attributes/*[in,opt]*/)
{
  Dao_xp::Relation* pprel;
  this->CreateRelation(Name, Table, ForeignTable, Attributes, (Dao_xp::Relation**)&pprel);
  return pprel;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::CreateTableDef(VARIANT Name/*[in,opt]*/, VARIANT Attributes/*[in,opt]*/, 
                                 VARIANT SourceTableName/*[in,opt]*/, VARIANT Connect/*[in,opt]*/, 
                                 Dao_xp::TableDef** pptdf/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateTableDef"), DISPID(DISPID_UNKNOWN/*[1610809363]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Attributes /*[VT_VARIANT:0]*/;
  _args[3] = SourceTableName /*[VT_VARIANT:0]*/;
  _args[4] = Connect /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::TableDef**)pptdf /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::TableDef* __fastcall
DatabaseDispT<T>::CreateTableDef(VARIANT Name/*[in,opt]*/, VARIANT Attributes/*[in,opt]*/, 
                                 VARIANT SourceTableName/*[in,opt]*/, VARIANT Connect/*[in,opt]*/)
{
  Dao_xp::TableDef* pptdf;
  this->CreateTableDef(Name, Attributes, SourceTableName, Connect, (Dao_xp::TableDef**)&pptdf);
  return pptdf;
}

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

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

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

template <class T> HRESULT __fastcall
DatabaseDispT<T>::CreateDynaset(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT Inconsistent/*[in,opt]*/, 
                                Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateDynaset"), DISPID(DISPID_UNKNOWN/*[1610809367]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = Inconsistent /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::CreateDynaset(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                VARIANT Inconsistent/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->CreateDynaset(Name, Options, Inconsistent, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::CreateQueryDef(VARIANT Name/*[in,opt]*/, VARIANT SQLText/*[in,opt]*/, 
                                 Dao_xp::QueryDef** ppqdf/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateQueryDef"), DISPID(DISPID_UNKNOWN/*[1610809368]*/));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = SQLText /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDef**)ppqdf /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::QueryDef* __fastcall
DatabaseDispT<T>::CreateQueryDef(VARIANT Name/*[in,opt]*/, VARIANT SQLText/*[in,opt]*/)
{
  Dao_xp::QueryDef* ppqdf;
  this->CreateQueryDef(Name, SQLText, (Dao_xp::QueryDef**)&ppqdf);
  return ppqdf;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::CreateSnapshot(BSTR Source/*[in]*/, VARIANT Options/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateSnapshot"), DISPID(DISPID_UNKNOWN/*[1610809369]*/));
  TAutoArgs<2> _args;
  _args[1] = Source /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::CreateSnapshot(BSTR Source/*[in]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->CreateSnapshot(Source, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::DeleteQueryDef(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("DeleteQueryDef"), DISPID(DISPID_UNKNOWN/*[1610809370]*/));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::ExecuteSQL(BSTR SQL/*[in]*/, long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ExecuteSQL"), DISPID(DISPID_UNKNOWN/*[1610809371]*/));
  TAutoArgs<1> _args;
  _args[1] = SQL /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr(pl /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
DatabaseDispT<T>::ExecuteSQL(BSTR SQL/*[in]*/)
{
  long pl;
  this->ExecuteSQL(SQL, (long*)&pl);
  return pl;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::ListFields(BSTR Name/*[in]*/, Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ListFields"), DISPID(DISPID_UNKNOWN/*[1610809372]*/));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::ListFields(BSTR Name/*[in]*/)
{
  Dao_xp::Recordset* pprst;
  this->ListFields(Name, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::ListTables(Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ListTables"), DISPID(DISPID_UNKNOWN/*[1610809373]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::ListTables(void)
{
  Dao_xp::Recordset* pprst;
  this->ListTables((Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::OpenQueryDef(BSTR Name/*[in]*/, Dao_xp::QueryDef** ppqdf/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenQueryDef"), DISPID(DISPID_UNKNOWN/*[1610809374]*/));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDef**)ppqdf /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::QueryDef* __fastcall
DatabaseDispT<T>::OpenQueryDef(BSTR Name/*[in]*/)
{
  Dao_xp::QueryDef* ppqdf;
  this->OpenQueryDef(Name, (Dao_xp::QueryDef**)&ppqdf);
  return ppqdf;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::OpenTable(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/, 
                            Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenTable"), DISPID(DISPID_UNKNOWN/*[1610809375]*/));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::OpenTable(BSTR Name/*[in]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->OpenTable(Name, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

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

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

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

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

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

template <class T> HRESULT __fastcall
DatabaseDispT<T>::Synchronize(BSTR DbPathName/*[in]*/, VARIANT ExchangeType/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Synchronize"), DISPID(DISPID_UNKNOWN/*[1610809379]*/));
  TAutoArgs<2> _args;
  _args[1] = DbPathName /*[VT_BSTR:0]*/;
  _args[2] = ExchangeType /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::MakeReplica(BSTR PathName/*[in]*/, BSTR Description/*[in]*/, 
                              VARIANT Options/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("MakeReplica"), DISPID(DISPID_UNKNOWN/*[1610809380]*/));
  TAutoArgs<3> _args;
  _args[1] = PathName /*[VT_BSTR:0]*/;
  _args[2] = Description /*[VT_BSTR:0]*/;
  _args[3] = Options /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

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

template <class T> HRESULT __fastcall
DatabaseDispT<T>::NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("NewPassword"), DISPID(DISPID_UNKNOWN/*[1610809382]*/));
  TAutoArgs<2> _args;
  _args[1] = bstrOld /*[VT_BSTR:0]*/;
  _args[2] = bstrNew /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                VARIANT Options/*[in,opt]*/, VARIANT LockEdit/*[in,opt]*/, 
                                Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809383]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Options /*[VT_VARIANT:0]*/;
  _args[4] = LockEdit /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
DatabaseDispT<T>::OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                VARIANT Options/*[in,opt]*/, VARIANT LockEdit/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->OpenRecordset(Name, Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::get_Connection(Dao_xp::Connection** ppCn/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Connection"), DISPID(DISPID_UNKNOWN/*[1610809384]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Connection**)ppCn /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::ConnectionPtr __fastcall
DatabaseDispT<T>::get_Connection(void)
{
  Dao_xp::ConnectionPtr ppCn;
  this->get_Connection(&ppCn);
  return ppCn;
}

template <class T> HRESULT __fastcall
DatabaseDispT<T>::PopulatePartial(BSTR DbPathName/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PopulatePartial"), DISPID(DISPID_UNKNOWN/*[1610809385]*/));
  TAutoArgs<1> _args;
  _args[1] = DbPathName /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
DatabaseDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::TableDef* __fastcall
TableDefsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::TableDef* pptdf;
  this->get_Item(Item, (Dao_xp::TableDef**)&pptdf);
  return pptdf;
}

template <class T> HRESULT __fastcall
TableDefsDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
TableDefsDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// SmartIntf: TCOM_TableDef
// Interface: _TableDef
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_Attributes(long* pl/*[out,retval]*/)
{
  return (*this)->get_Attributes(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_Attributes(long pl/*[in]*/)
{
  return (*this)->set_Attributes(pl);
}

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

template <class T> BSTR __fastcall
TCOM_TableDefT<T>::get_Connect(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_Connect((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_Connect(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Connect(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_DateCreated(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_DateCreated(pvar);
}

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

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_LastUpdated(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_LastUpdated(pvar);
}

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

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

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

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

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

template <class T> BSTR __fastcall
TCOM_TableDefT<T>::get_SourceTableName(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_SourceTableName((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_SourceTableName(BSTR pbstr/*[in]*/)
{
  return (*this)->set_SourceTableName(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Updatable(pb);
}

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

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

template <class T> BSTR __fastcall
TCOM_TableDefT<T>::get_ValidationText(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ValidationText((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_ValidationText(BSTR pbstr/*[in]*/)
{
  return (*this)->set_ValidationText(pbstr);
}

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

template <class T> BSTR __fastcall
TCOM_TableDefT<T>::get_ValidationRule(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ValidationRule((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_ValidationRule(BSTR pbstr/*[in]*/)
{
  return (*this)->set_ValidationRule(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_RecordCount(long* pl/*[out,retval]*/)
{
  return (*this)->get_RecordCount(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/)
{
  return (*this)->get_Fields(ppflds);
}

template <class T> Dao_xp::FieldsPtr __fastcall
TCOM_TableDefT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  OLECHECK(this->get_Fields((Dao_xp::FieldsPtr*)&ppflds));
  return ppflds;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/)
{
  return (*this)->get_Indexes(ppidxs);
}

template <class T> Dao_xp::IndexesPtr __fastcall
TCOM_TableDefT<T>::get_Indexes(void)
{
  Dao_xp::IndexesPtr ppidxs;
  OLECHECK(this->get_Indexes((Dao_xp::IndexesPtr*)&ppidxs));
  return ppidxs;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->OpenRecordset(Type, Options, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_TableDefT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->OpenRecordset(Type/*[in,opt]*/, Options/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::RefreshLink(void)
{
  return (*this)->RefreshLink();
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/, Dao_xp::Field** ppfld/*[out,retval]*/)
{
  return (*this)->CreateField(Name, Type, Size, ppfld);
}

template <class T> Dao_xp::Field* __fastcall
TCOM_TableDefT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/)
{
  Dao_xp::Field* ppfld;
  OLECHECK(this->CreateField(Name/*[in,opt]*/, Type/*[in,opt]*/, Size/*[in,opt]*/, (Dao_xp::Field**)&ppfld));
  return ppfld;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::CreateIndex(VARIANT Name/*[in,opt]*/, Dao_xp::Index** ppidx/*[out,retval]*/)
{
  return (*this)->CreateIndex(Name, ppidx);
}

template <class T> Dao_xp::Index* __fastcall
TCOM_TableDefT<T>::CreateIndex(VARIANT Name/*[in,opt]*/)
{
  Dao_xp::Index* ppidx;
  OLECHECK(this->CreateIndex(Name/*[in,opt]*/, (Dao_xp::Index**)&ppidx));
  return ppidx;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                  Dao_xp::Property** pprp/*[out,retval]*/)
{
  return (*this)->CreateProperty(Name, Type, Value, DDL, pprp);
}

template <class T> Dao_xp::Property* __fastcall
TCOM_TableDefT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  OLECHECK(this->CreateProperty(Name/*[in,opt]*/, Type/*[in,opt]*/, Value/*[in,opt]*/, 
                                DDL/*[in,opt]*/, (Dao_xp::Property**)&pprp));
  return pprp;
}

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

template <class T> BSTR __fastcall
TCOM_TableDefT<T>::get_ConflictTable(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ConflictTable((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::get_ReplicaFilter(VARIANT* pFilter/*[out,retval]*/)
{
  return (*this)->get_ReplicaFilter(pFilter);
}

template <class T> VARIANT __fastcall
TCOM_TableDefT<T>::get_ReplicaFilter(void)
{
  VARIANT pFilter;
  OLECHECK(this->get_ReplicaFilter((VARIANT*)&pFilter));
  return pFilter;
}

template <class T> HRESULT __fastcall
TCOM_TableDefT<T>::set_ReplicaFilter(VARIANT pFilter/*[in]*/)
{
  return (*this)->set_ReplicaFilter(pFilter);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

template <class T> Dao_xp::FieldsPtr __fastcall
_TableDefDispT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  this->get_Fields(&ppflds);
  return ppflds;
}

template <class T> HRESULT __fastcall
_TableDefDispT<T>::get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Indexes"), DISPID(DISPID_UNKNOWN/*[1610809361]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Indexes**)ppidxs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::IndexesPtr __fastcall
_TableDefDispT<T>::get_Indexes(void)
{
  Dao_xp::IndexesPtr ppidxs;
  this->get_Indexes(&ppidxs);
  return ppidxs;
}

template <class T> HRESULT __fastcall
_TableDefDispT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809362]*/));
  TAutoArgs<2> _args;
  _args[1] = Type /*[VT_VARIANT:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_TableDefDispT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

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

template <class T> HRESULT __fastcall
_TableDefDispT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/, Dao_xp::Field** ppfld/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateField"), DISPID(DISPID_UNKNOWN/*[1610809364]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Size /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Field**)ppfld /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Field* __fastcall
_TableDefDispT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/)
{
  Dao_xp::Field* ppfld;
  this->CreateField(Name, Type, Size, (Dao_xp::Field**)&ppfld);
  return ppfld;
}

template <class T> HRESULT __fastcall
_TableDefDispT<T>::CreateIndex(VARIANT Name/*[in,opt]*/, Dao_xp::Index** ppidx/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateIndex"), DISPID(DISPID_UNKNOWN/*[1610809365]*/));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Index**)ppidx /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Index* __fastcall
_TableDefDispT<T>::CreateIndex(VARIANT Name/*[in,opt]*/)
{
  Dao_xp::Index* ppidx;
  this->CreateIndex(Name, (Dao_xp::Index**)&ppidx);
  return ppidx;
}

template <class T> HRESULT __fastcall
_TableDefDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                  Dao_xp::Property** pprp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateProperty"), DISPID(DISPID_UNKNOWN/*[1610809366]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Value /*[VT_VARIANT:0]*/;
  _args[4] = DDL /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Property**)pprp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Property* __fastcall
_TableDefDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp);
  return pprp;
}

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

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

template <class T> HRESULT __fastcall
_TableDefDispT<T>::get_ReplicaFilter(VARIANT* pFilter/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ReplicaFilter"), DISPID(DISPID_UNKNOWN/*[1610809368]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pFilter /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_TableDefDispT<T>::get_ReplicaFilter(void)
{
  VARIANT pFilter;
  this->get_ReplicaFilter((VARIANT*)&pFilter);
  return pFilter;
}

template <class T> HRESULT __fastcall
_TableDefDispT<T>::set_ReplicaFilter(VARIANT pFilter/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ReplicaFilter"), DISPID(1610809368));
  TAutoArgs<1> _args;
  _args[1] = pFilter /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_TableDefDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Field* __fastcall
FieldsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Field* ppfld;
  this->get_Item(Item, (Dao_xp::Field**)&ppfld);
  return ppfld;
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
FieldsDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// SmartIntf: TCOM_Field
// Interface: _Field
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_CollatingOrder(long* pl/*[out,retval]*/)
{
  return (*this)->get_CollatingOrder(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_Type(short* ps/*[out,retval]*/)
{
  return (*this)->get_Type(ps);
}

template <class T> short __fastcall
TCOM_FieldT<T>::get_Type(void)
{
  short ps;
  OLECHECK(this->get_Type((short*)&ps));
  return ps;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_Type(short ps/*[in]*/)
{
  return (*this)->set_Type(ps);
}

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

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_Size(long* pl/*[out,retval]*/)
{
  return (*this)->get_Size(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_Size(long pl/*[in]*/)
{
  return (*this)->set_Size(pl);
}

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

template <class T> BSTR __fastcall
TCOM_FieldT<T>::get_SourceField(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_SourceField((BSTR*)&pbstr));
  return pbstr;
}

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

template <class T> BSTR __fastcall
TCOM_FieldT<T>::get_SourceTable(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_SourceTable((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_Value(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_Value(pvar);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_Value(VARIANT pvar/*[in]*/)
{
  return (*this)->set_Value(pvar);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_Attributes(long* pl/*[out,retval]*/)
{
  return (*this)->get_Attributes(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_Attributes(long pl/*[in]*/)
{
  return (*this)->set_Attributes(pl);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_OrdinalPosition(short* ps/*[out,retval]*/)
{
  return (*this)->get_OrdinalPosition(ps);
}

template <class T> short __fastcall
TCOM_FieldT<T>::get_OrdinalPosition(void)
{
  short ps;
  OLECHECK(this->get_OrdinalPosition((short*)&ps));
  return ps;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_OrdinalPosition(short ps/*[in]*/)
{
  return (*this)->set_OrdinalPosition(ps);
}

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

template <class T> BSTR __fastcall
TCOM_FieldT<T>::get_ValidationText(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ValidationText((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_ValidationText(BSTR pbstr/*[in]*/)
{
  return (*this)->set_ValidationText(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_ValidateOnSet(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_ValidateOnSet(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_ValidateOnSet(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_ValidateOnSet(pb);
}

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

template <class T> BSTR __fastcall
TCOM_FieldT<T>::get_ValidationRule(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ValidationRule((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_ValidationRule(BSTR pbstr/*[in]*/)
{
  return (*this)->set_ValidationRule(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_DefaultValue(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_DefaultValue(pvar);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_DefaultValue(VARIANT pvar/*[in]*/)
{
  return (*this)->set_DefaultValue(pvar);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_Required(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Required(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_Required(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_Required(pb);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_AllowZeroLength(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_AllowZeroLength(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_AllowZeroLength(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_AllowZeroLength(pb);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_DataUpdatable(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_DataUpdatable(pb);
}

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

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

template <class T> BSTR __fastcall
TCOM_FieldT<T>::get_ForeignName(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ForeignName((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::set_ForeignName(BSTR pbstr/*[in]*/)
{
  return (*this)->set_ForeignName(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::AppendChunk(VARIANT Val/*[in]*/)
{
  return (*this)->AppendChunk(Val);
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->GetChunk(Offset, Bytes, pvar);
}

template <class T> VARIANT __fastcall
TCOM_FieldT<T>::GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/)
{
  VARIANT pvar;
  OLECHECK(this->GetChunk(Offset/*[in]*/, Bytes/*[in]*/, (VARIANT*)&pvar));
  return pvar;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::_30_FieldSize(long* pl/*[out,retval]*/)
{
  return (*this)->_30_FieldSize(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                               Dao_xp::Property** pprp/*[out,retval]*/)
{
  return (*this)->CreateProperty(Name, Type, Value, DDL, pprp);
}

template <class T> Dao_xp::Property* __fastcall
TCOM_FieldT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  OLECHECK(this->CreateProperty(Name/*[in,opt]*/, Type/*[in,opt]*/, Value/*[in,opt]*/, 
                                DDL/*[in,opt]*/, (Dao_xp::Property**)&pprp));
  return pprp;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_CollectionIndex(short* i/*[out,retval]*/)
{
  return (*this)->get_CollectionIndex(i);
}

template <class T> short __fastcall
TCOM_FieldT<T>::get_CollectionIndex(void)
{
  short i;
  OLECHECK(this->get_CollectionIndex((short*)&i));
  return i;
}

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_OriginalValue(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_OriginalValue(pvar);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_VisibleValue(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_VisibleValue(pvar);
}

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

template <class T> HRESULT __fastcall
TCOM_FieldT<T>::get_FieldSize(long* pl/*[out,retval]*/)
{
  return (*this)->get_FieldSize(pl);
}

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

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

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

template <class T> HRESULT __fastcall
_FieldDispT<T>::get_Type(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(DISPID_UNKNOWN/*[1610809345]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
_FieldDispT<T>::get_Type(void)
{
  short ps;
  this->get_Type((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
_FieldDispT<T>::set_Type(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_FieldDispT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  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>::set_Name(BSTR pbstr/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(1610809347));
  TAutoArgs<1> _args;
  _args[1] = pbstr /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

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

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

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_Attributes(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(DISPID_UNKNOWN/*[1610809355]*/));
  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>::set_Attributes(long pl/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Attributes"), DISPID(1610809355));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_FieldDispT<T>::get_OrdinalPosition(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OrdinalPosition"), DISPID(DISPID_UNKNOWN/*[1610809357]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
_FieldDispT<T>::get_OrdinalPosition(void)
{
  short ps;
  this->get_OrdinalPosition((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
_FieldDispT<T>::set_OrdinalPosition(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("OrdinalPosition"), DISPID(1610809357));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

template <class T> HRESULT __fastcall
_FieldDispT<T>::set_ValidateOnSet(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ValidateOnSet"), DISPID(1610809361));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
_FieldDispT<T>::set_Required(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Required"), DISPID(1610809367));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

template <class T> HRESULT __fastcall
_FieldDispT<T>::set_AllowZeroLength(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AllowZeroLength"), DISPID(1610809369));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

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

template <class T> HRESULT __fastcall
_FieldDispT<T>::GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetChunk"), DISPID(DISPID_UNKNOWN/*[1610809375]*/));
  TAutoArgs<2> _args;
  _args[1] = Offset /*[VT_I4:0]*/;
  _args[2] = Bytes /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
_FieldDispT<T>::GetChunk(long Offset/*[in]*/, long Bytes/*[in]*/)
{
  VARIANT pvar;
  this->GetChunk(Offset, Bytes, (VARIANT*)&pvar);
  return pvar;
}

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

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

template <class T> HRESULT __fastcall
_FieldDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                               Dao_xp::Property** pprp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateProperty"), DISPID(DISPID_UNKNOWN/*[1610809377]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Value /*[VT_VARIANT:0]*/;
  _args[4] = DDL /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Property**)pprp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Property* __fastcall
_FieldDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp);
  return pprp;
}

template <class T> HRESULT __fastcall
_FieldDispT<T>::get_CollectionIndex(short* i/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CollectionIndex"), DISPID(DISPID_UNKNOWN/*[1610809378]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(i /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
_FieldDispT<T>::get_CollectionIndex(void)
{
  short i;
  this->get_CollectionIndex((short*)&i);
  return i;
}

template <class T> HRESULT __fastcall
_FieldDispT<T>::get_OriginalValue(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OriginalValue"), DISPID(DISPID_UNKNOWN/*[1610809379]*/));
  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_VisibleValue(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("VisibleValue"), DISPID(DISPID_UNKNOWN/*[1610809380]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_FieldDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Index* __fastcall
IndexesDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Index* ppidx;
  this->get_Item(Item, (Dao_xp::Index**)&ppidx);
  return ppidx;
}

template <class T> HRESULT __fastcall
IndexesDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IndexesDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// SmartIntf: TCOM_Index
// Interface: _Index
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  return (*this)->get_Name(pbstr);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Foreign(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Foreign(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Unique(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Unique(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_Unique(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_Unique(pb);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Clustered(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Clustered(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_Clustered(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_Clustered(pb);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Required(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Required(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_Required(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_Required(pb);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_IgnoreNulls(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_IgnoreNulls(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_IgnoreNulls(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_IgnoreNulls(pb);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Primary(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Primary(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_Primary(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_Primary(pb);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_DistinctCount(long* pl/*[out,retval]*/)
{
  return (*this)->get_DistinctCount(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::get_Fields(VARIANT* pv/*[out,retval]*/)
{
  return (*this)->get_Fields(pv);
}

template <class T> VARIANT __fastcall
TCOM_IndexT<T>::get_Fields(void)
{
  VARIANT pv;
  OLECHECK(this->get_Fields((VARIANT*)&pv));
  return pv;
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::set_Fields(VARIANT pv/*[in]*/)
{
  return (*this)->set_Fields(pv);
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                            VARIANT Size/*[in,opt]*/, Dao_xp::Field** ppfld/*[out,retval]*/)
{
  return (*this)->CreateField(Name, Type, Size, ppfld);
}

template <class T> Dao_xp::Field* __fastcall
TCOM_IndexT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                            VARIANT Size/*[in,opt]*/)
{
  Dao_xp::Field* ppfld;
  OLECHECK(this->CreateField(Name/*[in,opt]*/, Type/*[in,opt]*/, Size/*[in,opt]*/, (Dao_xp::Field**)&ppfld));
  return ppfld;
}

template <class T> HRESULT __fastcall
TCOM_IndexT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                               Dao_xp::Property** pprp/*[out,retval]*/)
{
  return (*this)->CreateProperty(Name, Type, Value, DDL, pprp);
}

template <class T> Dao_xp::Property* __fastcall
TCOM_IndexT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  OLECHECK(this->CreateProperty(Name/*[in,opt]*/, Type/*[in,opt]*/, Value/*[in,opt]*/, 
                                DDL/*[in,opt]*/, (Dao_xp::Property**)&pprp));
  return pprp;
}

// *********************************************************************//
// DispIntf:  _Index
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000059-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_IndexDispT<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
_IndexDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_IndexDispT<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
_IndexDispT<T>::get_Foreign(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Foreign"), DISPID(DISPID_UNKNOWN/*[1610809346]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

template <class T> HRESULT __fastcall
_IndexDispT<T>::set_Unique(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Unique"), DISPID(1610809347));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

template <class T> HRESULT __fastcall
_IndexDispT<T>::set_Clustered(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Clustered"), DISPID(1610809349));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

template <class T> HRESULT __fastcall
_IndexDispT<T>::set_IgnoreNulls(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("IgnoreNulls"), DISPID(1610809353));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

template <class T> HRESULT __fastcall
_IndexDispT<T>::set_Primary(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Primary"), DISPID(1610809355));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

template <class T> HRESULT __fastcall
_IndexDispT<T>::get_Fields(VARIANT* pv/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Fields"), DISPID(DISPID_UNKNOWN/*[1610809358]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pv /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_IndexDispT<T>::get_Fields(void)
{
  VARIANT pv;
  this->get_Fields((VARIANT*)&pv);
  return pv;
}

template <class T> HRESULT __fastcall
_IndexDispT<T>::set_Fields(VARIANT pv/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Fields"), DISPID(1610809358));
  TAutoArgs<1> _args;
  _args[1] = pv /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_IndexDispT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                            VARIANT Size/*[in,opt]*/, Dao_xp::Field** ppfld/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateField"), DISPID(DISPID_UNKNOWN/*[1610809360]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Size /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Field**)ppfld /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Field* __fastcall
_IndexDispT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                            VARIANT Size/*[in,opt]*/)
{
  Dao_xp::Field* ppfld;
  this->CreateField(Name, Type, Size, (Dao_xp::Field**)&ppfld);
  return ppfld;
}

template <class T> HRESULT __fastcall
_IndexDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                               Dao_xp::Property** pprp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateProperty"), DISPID(DISPID_UNKNOWN/*[1610809361]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Value /*[VT_VARIANT:0]*/;
  _args[4] = DDL /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Property**)pprp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Property* __fastcall
_IndexDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp);
  return pprp;
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_IndexDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

// *********************************************************************//
// DispIntf:  Recordset
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000031-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_BOF(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BOF"), DISPID(101));
  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(LPSAFEARRAY* ppsach/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(102));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppsach /*[VT_SAFEARRAY:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPSAFEARRAY __fastcall
RecordsetDispT<T>::get_Bookmark(void)
{
  LPSAFEARRAY ppsach;
  this->get_Bookmark((LPSAFEARRAY*)&ppsach);
  return ppsach;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::set_Bookmark(LPSAFEARRAY* ppsach/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Bookmark"), DISPID(102));
  TAutoArgs<1> _args;
  _args[1] = ppsach /*[VT_SAFEARRAY:1]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_EOF_(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EOF"), DISPID(105));
  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_Filter(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Filter"), DISPID(106));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_LastModified(LPSAFEARRAY* ppsa/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("LastModified"), DISPID(108));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppsa /*[VT_SAFEARRAY:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPSAFEARRAY __fastcall
RecordsetDispT<T>::get_LastModified(void)
{
  LPSAFEARRAY ppsa;
  this->get_LastModified((LPSAFEARRAY*)&ppsa);
  return ppsa;
}

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::set_LockEdits(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("LockEdits"), DISPID(110));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_Type(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(115));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
RecordsetDispT<T>::get_Type(void)
{
  short ps;
  this->get_Type((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_RecordCount(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RecordCount"), DISPID(116));
  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>::get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Updatable"), DISPID(117));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_CacheStart(LPSAFEARRAY* ppsa/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheStart"), DISPID(121));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppsa /*[VT_SAFEARRAY:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPSAFEARRAY __fastcall
RecordsetDispT<T>::get_CacheStart(void)
{
  LPSAFEARRAY ppsa;
  this->get_CacheStart((LPSAFEARRAY*)&ppsa);
  return ppsa;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::set_CacheStart(LPSAFEARRAY* ppsa/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheStart"), DISPID(121));
  TAutoArgs<1> _args;
  _args[1] = ppsa /*[VT_SAFEARRAY:1]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_CacheSize(long* pl/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CacheSize"), DISPID(122));
  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(122));
  TAutoArgs<1> _args;
  _args[1] = pl /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_PercentPosition(float* pd/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PercentPosition"), DISPID(123));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pd /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
RecordsetDispT<T>::get_PercentPosition(void)
{
  float pd;
  this->get_PercentPosition((float*)&pd);
  return pd;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::set_PercentPosition(float pd/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PercentPosition"), DISPID(123));
  TAutoArgs<1> _args;
  _args[1] = pd /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_EditMode(short* pi/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("EditMode"), DISPID(125));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pi /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
RecordsetDispT<T>::get_EditMode(void)
{
  short pi;
  this->get_EditMode((short*)&pi);
  return pi;
}

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_Parent(Dao_xp::Database** pdb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Parent"), DISPID(128));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Database**)pdb /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::DatabasePtr __fastcall
RecordsetDispT<T>::get_Parent(void)
{
  Dao_xp::DatabasePtr pdb;
  this->get_Parent(&pdb);
  return pdb;
}

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

template <class T> Dao_xp::FieldsPtr __fastcall
RecordsetDispT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  this->get_Fields(&ppflds);
  return ppflds;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_Indexes(Dao_xp::Indexes** ppidxs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Indexes"), DISPID(130));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Indexes**)ppidxs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::IndexesPtr __fastcall
RecordsetDispT<T>::get_Indexes(void)
{
  Dao_xp::IndexesPtr ppidxs;
  this->get_Indexes(&ppidxs);
  return ppidxs;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::_30_CancelUpdate()
{
  _TDispID _dispid(*this, OLETEXT("_30_CancelUpdate"), DISPID(131));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::AddNew()
{
  _TDispID _dispid(*this, OLETEXT("AddNew"), DISPID(132));
  return OleFunction(_dispid);
}

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenRecordset"), DISPID(134));
  TAutoArgs<2> _args;
  _args[1] = Type /*[VT_VARIANT:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
RecordsetDispT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::Delete()
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(135));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::Edit()
{
  _TDispID _dispid(*this, OLETEXT("Edit"), DISPID(136));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::FindFirst(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("FindFirst"), DISPID(137));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::FindLast(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("FindLast"), DISPID(138));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::FindNext(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("FindNext"), DISPID(139));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::FindPrevious(BSTR Criteria/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("FindPrevious"), DISPID(140));
  TAutoArgs<1> _args;
  _args[1] = Criteria /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::_30_MoveLast()
{
  _TDispID _dispid(*this, OLETEXT("_30_MoveLast"), DISPID(142));
  return OleFunction(_dispid);
}

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::Seek(BSTR Comparison/*[in]*/, VARIANT Key1/*[in]*/, VARIANT Key2/*[in,opt]*/, 
                        VARIANT Key3/*[in,opt]*/, VARIANT Key4/*[in,opt]*/, VARIANT Key5/*[in,opt]*/
                        , VARIANT Key6/*[in,opt]*/, VARIANT Key7/*[in,opt]*/, 
                        VARIANT Key8/*[in,opt]*/, VARIANT Key9/*[in,opt]*/, 
                        VARIANT Key10/*[in,opt]*/, VARIANT Key11/*[in,opt]*/, 
                        VARIANT Key12/*[in,opt]*/, VARIANT Key13/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Seek"), DISPID(145));
  TAutoArgs<14> _args;
  _args[1] = Comparison /*[VT_BSTR:0]*/;
  _args[2] = Key1 /*[VT_VARIANT:0]*/;
  _args[3] = Key2 /*[VT_VARIANT:0]*/;
  _args[4] = Key3 /*[VT_VARIANT:0]*/;
  _args[5] = Key4 /*[VT_VARIANT:0]*/;
  _args[6] = Key5 /*[VT_VARIANT:0]*/;
  _args[7] = Key6 /*[VT_VARIANT:0]*/;
  _args[8] = Key7 /*[VT_VARIANT:0]*/;
  _args[9] = Key8 /*[VT_VARIANT:0]*/;
  _args[10] = Key9 /*[VT_VARIANT:0]*/;
  _args[11] = Key10 /*[VT_VARIANT:0]*/;
  _args[12] = Key11 /*[VT_VARIANT:0]*/;
  _args[13] = Key12 /*[VT_VARIANT:0]*/;
  _args[14] = Key13 /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::_30_Update()
{
  _TDispID _dispid(*this, OLETEXT("_30_Update"), DISPID(146));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::Clone(Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Clone"), DISPID(147));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
RecordsetDispT<T>::Clone(void)
{
  Dao_xp::Recordset* pprst;
  this->Clone((Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::Requery(VARIANT NewQueryDef/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Requery"), DISPID(148));
  TAutoArgs<1> _args;
  _args[1] = NewQueryDef /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::FillCache(VARIANT Rows/*[in,opt]*/, VARIANT StartBookmark/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("FillCache"), DISPID(150));
  TAutoArgs<2> _args;
  _args[1] = Rows /*[VT_VARIANT:0]*/;
  _args[2] = StartBookmark /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::CreateDynaset(VARIANT Options/*[in,opt]*/, VARIANT Inconsistent/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateDynaset"), DISPID(151));
  TAutoArgs<2> _args;
  _args[1] = Options /*[VT_VARIANT:0]*/;
  _args[2] = Inconsistent /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
RecordsetDispT<T>::CreateDynaset(VARIANT Options/*[in,opt]*/, VARIANT Inconsistent/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->CreateDynaset(Options, Inconsistent, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                  Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateSnapshot"), DISPID(152));
  TAutoArgs<1> _args;
  _args[1] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
RecordsetDispT<T>::CreateSnapshot(VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->CreateSnapshot(Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::CopyQueryDef(Dao_xp::QueryDef** ppqdf/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CopyQueryDef"), DISPID(153));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDef**)ppqdf /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::QueryDef* __fastcall
RecordsetDispT<T>::CopyQueryDef(void)
{
  Dao_xp::QueryDef* ppqdf;
  this->CopyQueryDef((Dao_xp::QueryDef**)&ppqdf);
  return ppqdf;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::ListFields(Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ListFields"), DISPID(154));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
RecordsetDispT<T>::ListFields(void)
{
  Dao_xp::Recordset* pprst;
  this->ListFields((Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::ListIndexes(Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ListIndexes"), DISPID(155));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
RecordsetDispT<T>::ListIndexes(void)
{
  Dao_xp::Recordset* pprst;
  this->ListIndexes((Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::GetRows(VARIANT NumRows/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetRows"), DISPID(156));
  TAutoArgs<1> _args;
  _args[1] = NumRows /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
RecordsetDispT<T>::GetRows(VARIANT NumRows/*[in,opt]*/)
{
  VARIANT pvar;
  this->GetRows(NumRows, (VARIANT*)&pvar);
  return pvar;
}

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::Cancel()
{
  _TDispID _dispid(*this, OLETEXT("Cancel"), DISPID(157));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::NextRecordset(VARIANT_BOOL* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NextRecordset"), DISPID(158));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_BOOL:1]*/, _args, OleFunction(_dispid, _args));
}

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_hStmt(long* phStmt/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("hStmt"), DISPID(159));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(phStmt /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
RecordsetDispT<T>::get_hStmt(void)
{
  long phStmt;
  this->get_hStmt((long*)&phStmt);
  return phStmt;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("StillExecuting"), DISPID(160));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pStillExec /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
RecordsetDispT<T>::get_StillExecuting(void)
{
  VARIANT_BOOL pStillExec;
  this->get_StillExecuting((VARIANT_BOOL*)&pStillExec);
  return pStillExec;
}

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_Connection(Dao_xp::Connection** ppCn/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Connection"), DISPID(164));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Connection**)ppCn /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::ConnectionPtr __fastcall
RecordsetDispT<T>::get_Connection(void)
{
  Dao_xp::ConnectionPtr ppCn;
  this->get_Connection(&ppCn);
  return ppCn;
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::_set_Connection(Dao_xp::Connection* ppCn/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Connection"), DISPID(164));
  TAutoArgs<1> _args;
  _args[1] = (LPDISPATCH)(Dao_xp::Connection*)ppCn /*[VT_USERDEFINED:1]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
RecordsetDispT<T>::get_RecordStatus(short* pi/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RecordStatus"), DISPID(165));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pi /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
RecordsetDispT<T>::get_RecordStatus(void)
{
  short pi;
  this->get_RecordStatus((short*)&pi);
  return pi;
}

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

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

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

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

template <class T> HRESULT __fastcall
RecordsetDispT<T>::_Update(long UpdateType/*[in,def,opt]*/, VARIANT_BOOL Force/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Update"), DISPID(168));
  TAutoArgs<2> _args;
  _args[1] = UpdateType /*[VT_I4:0]*/;
  _args[2] = Force /*[VT_BOOL:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

template <class T> Dao_xp::PropertiesPtr __fastcall
RecordsetDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

// *********************************************************************//
// SmartIntf: TCOM_QueryDef
// Interface: _QueryDef
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_DateCreated(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_DateCreated(pvar);
}

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

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_LastUpdated(VARIANT* pvar/*[out,retval]*/)
{
  return (*this)->get_LastUpdated(pvar);
}

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

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

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

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_ODBCTimeout(short* ps/*[out,retval]*/)
{
  return (*this)->get_ODBCTimeout(ps);
}

template <class T> short __fastcall
TCOM_QueryDefT<T>::get_ODBCTimeout(void)
{
  short ps;
  OLECHECK(this->get_ODBCTimeout((short*)&ps));
  return ps;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_ODBCTimeout(short ps/*[in]*/)
{
  return (*this)->set_ODBCTimeout(ps);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_Type(short* pi/*[out,retval]*/)
{
  return (*this)->get_Type(pi);
}

template <class T> short __fastcall
TCOM_QueryDefT<T>::get_Type(void)
{
  short pi;
  OLECHECK(this->get_Type((short*)&pi));
  return pi;
}

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

template <class T> BSTR __fastcall
TCOM_QueryDefT<T>::get_SQL(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_SQL((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_SQL(BSTR pbstr/*[in]*/)
{
  return (*this)->set_SQL(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_Updatable(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_Updatable(pb);
}

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

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

template <class T> BSTR __fastcall
TCOM_QueryDefT<T>::get_Connect(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_Connect((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_Connect(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Connect(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_ReturnsRecords(VARIANT_BOOL* pb/*[out,retval]*/)
{
  return (*this)->get_ReturnsRecords(pb);
}

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

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_ReturnsRecords(VARIANT_BOOL pb/*[in]*/)
{
  return (*this)->set_ReturnsRecords(pb);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_RecordsAffected(long* pl/*[out,retval]*/)
{
  return (*this)->get_RecordsAffected(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/)
{
  return (*this)->get_Fields(ppflds);
}

template <class T> Dao_xp::FieldsPtr __fastcall
TCOM_QueryDefT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  OLECHECK(this->get_Fields((Dao_xp::FieldsPtr*)&ppflds));
  return ppflds;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_Parameters(Dao_xp::Parameters** ppprms/*[out,retval]*/)
{
  return (*this)->get_Parameters(ppprms);
}

template <class T> Dao_xp::ParametersPtr __fastcall
TCOM_QueryDefT<T>::get_Parameters(void)
{
  Dao_xp::ParametersPtr ppprms;
  OLECHECK(this->get_Parameters((Dao_xp::ParametersPtr*)&ppprms));
  return ppprms;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::Close(void)
{
  return (*this)->Close();
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::_30_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                     Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->_30_OpenRecordset(Type, Options, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::_30_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->_30_OpenRecordset(Type/*[in,opt]*/, Options/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::_30__OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                      Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->_30__OpenRecordset(Type, Options, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::_30__OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->_30__OpenRecordset(Type/*[in,opt]*/, Options/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::_Copy(Dao_xp::QueryDef** ppqdf/*[out,retval]*/)
{
  return (*this)->_Copy(ppqdf);
}

template <class T> Dao_xp::QueryDef* __fastcall
TCOM_QueryDefT<T>::_Copy(void)
{
  Dao_xp::QueryDef* ppqdf;
  OLECHECK(this->_Copy((Dao_xp::QueryDef**)&ppqdf));
  return ppqdf;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::Execute(VARIANT Options/*[in,opt]*/)
{
  return (*this)->Execute(Options);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::Compare(Dao_xp::QueryDef* pQdef/*[in]*/, short* lps/*[in]*/)
{
  return (*this)->Compare(pQdef, lps);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::CreateDynaset(VARIANT Options/*[in,opt]*/, VARIANT Inconsistent/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->CreateDynaset(Options, Inconsistent, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::CreateDynaset(VARIANT Options/*[in,opt]*/, VARIANT Inconsistent/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->CreateDynaset(Options/*[in,opt]*/, Inconsistent/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                  Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->CreateSnapshot(Options, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::CreateSnapshot(VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->CreateSnapshot(Options/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::ListParameters(Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->ListParameters(pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::ListParameters(void)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->ListParameters((Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                  Dao_xp::Property** pprp/*[out,retval]*/)
{
  return (*this)->CreateProperty(Name, Type, Value, DDL, pprp);
}

template <class T> Dao_xp::Property* __fastcall
TCOM_QueryDefT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  OLECHECK(this->CreateProperty(Name/*[in,opt]*/, Type/*[in,opt]*/, Value/*[in,opt]*/, 
                                DDL/*[in,opt]*/, (Dao_xp::Property**)&pprp));
  return pprp;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 VARIANT LockEdit/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->OpenRecordset(Type, Options, LockEdit, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 VARIANT LockEdit/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->OpenRecordset(Type/*[in,opt]*/, Options/*[in,opt]*/, LockEdit/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT LockEdit/*[in,opt]*/, 
                                  Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  return (*this)->_OpenRecordset(Type, Options, LockEdit, pprst);
}

template <class T> Dao_xp::Recordset* __fastcall
TCOM_QueryDefT<T>::_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT LockEdit/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  OLECHECK(this->_OpenRecordset(Type/*[in,opt]*/, Options/*[in,opt]*/, LockEdit/*[in,opt]*/, (Dao_xp::Recordset**)&pprst));
  return pprst;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::Cancel(void)
{
  return (*this)->Cancel();
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_hStmt(long* phStmt/*[out,retval]*/)
{
  return (*this)->get_hStmt(phStmt);
}

template <class T> long __fastcall
TCOM_QueryDefT<T>::get_hStmt(void)
{
  long phStmt;
  OLECHECK(this->get_hStmt((long*)&phStmt));
  return phStmt;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_MaxRecords(long* pMxRecs/*[out,retval]*/)
{
  return (*this)->get_MaxRecords(pMxRecs);
}

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

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_MaxRecords(long pMxRecs/*[in]*/)
{
  return (*this)->set_MaxRecords(pMxRecs);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/)
{
  return (*this)->get_StillExecuting(pStillExec);
}

template <class T> VARIANT_BOOL __fastcall
TCOM_QueryDefT<T>::get_StillExecuting(void)
{
  VARIANT_BOOL pStillExec;
  OLECHECK(this->get_StillExecuting((VARIANT_BOOL*)&pStillExec));
  return pStillExec;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_CacheSize(long* lCacheSize/*[out,retval]*/)
{
  return (*this)->get_CacheSize(lCacheSize);
}

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

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_CacheSize(long lCacheSize/*[in]*/)
{
  return (*this)->set_CacheSize(lCacheSize);
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::get_Prepare(VARIANT* pb/*[out,retval]*/)
{
  return (*this)->get_Prepare(pb);
}

template <class T> VARIANT __fastcall
TCOM_QueryDefT<T>::get_Prepare(void)
{
  VARIANT pb;
  OLECHECK(this->get_Prepare((VARIANT*)&pb));
  return pb;
}

template <class T> HRESULT __fastcall
TCOM_QueryDefT<T>::set_Prepare(VARIANT pb/*[in]*/)
{
  return (*this)->set_Prepare(pb);
}

// *********************************************************************//
// DispIntf:  _QueryDef
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000079-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_QueryDefDispT<T>::get_DateCreated(VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("DateCreated"), DISPID(DISPID_UNKNOWN/*[1610809344]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

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

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

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

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::get_ODBCTimeout(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ODBCTimeout"), DISPID(DISPID_UNKNOWN/*[1610809348]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
_QueryDefDispT<T>::get_ODBCTimeout(void)
{
  short ps;
  this->get_ODBCTimeout((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::set_ODBCTimeout(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ODBCTimeout"), DISPID(1610809348));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::get_Type(short* pi/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(DISPID_UNKNOWN/*[1610809350]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pi /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
_QueryDefDispT<T>::get_Type(void)
{
  short pi;
  this->get_Type((short*)&pi);
  return pi;
}

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

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

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::set_ReturnsRecords(VARIANT_BOOL pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ReturnsRecords"), DISPID(1610809356));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

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

template <class T> Dao_xp::FieldsPtr __fastcall
_QueryDefDispT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  this->get_Fields(&ppflds);
  return ppflds;
}

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

template <class T> Dao_xp::ParametersPtr __fastcall
_QueryDefDispT<T>::get_Parameters(void)
{
  Dao_xp::ParametersPtr ppprms;
  this->get_Parameters(&ppprms);
  return ppprms;
}

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

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::_30_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                     Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_30_OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809362]*/));
  TAutoArgs<2> _args;
  _args[1] = Type /*[VT_VARIANT:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::_30_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->_30_OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::_30__OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                      Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_30__OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809363]*/));
  TAutoArgs<2> _args;
  _args[1] = Type /*[VT_VARIANT:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::_30__OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->_30__OpenRecordset(Type, Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::_Copy(Dao_xp::QueryDef** ppqdf/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_Copy"), DISPID(DISPID_UNKNOWN/*[1610809364]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDef**)ppqdf /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::QueryDef* __fastcall
_QueryDefDispT<T>::_Copy(void)
{
  Dao_xp::QueryDef* ppqdf;
  this->_Copy((Dao_xp::QueryDef**)&ppqdf);
  return ppqdf;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::Execute(VARIANT Options/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(DISPID_UNKNOWN/*[1610809365]*/));
  TAutoArgs<1> _args;
  _args[1] = Options /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::Compare(Dao_xp::QueryDef* pQdef/*[in]*/, short* lps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Compare"), DISPID(DISPID_UNKNOWN/*[1610809366]*/));
  TAutoArgs<2> _args;
  _args[1] = (LPDISPATCH)(Dao_xp::QueryDef*)pQdef /*[VT_USERDEFINED:1]*/;
  _args[2] = lps /*[VT_I2:1]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::CreateDynaset(VARIANT Options/*[in,opt]*/, VARIANT Inconsistent/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateDynaset"), DISPID(DISPID_UNKNOWN/*[1610809367]*/));
  TAutoArgs<2> _args;
  _args[1] = Options /*[VT_VARIANT:0]*/;
  _args[2] = Inconsistent /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::CreateDynaset(VARIANT Options/*[in,opt]*/, VARIANT Inconsistent/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->CreateDynaset(Options, Inconsistent, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::CreateSnapshot(VARIANT Options/*[in,opt]*/, 
                                  Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateSnapshot"), DISPID(DISPID_UNKNOWN/*[1610809368]*/));
  TAutoArgs<1> _args;
  _args[1] = Options /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::CreateSnapshot(VARIANT Options/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->CreateSnapshot(Options, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::ListParameters(Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ListParameters"), DISPID(DISPID_UNKNOWN/*[1610809369]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::ListParameters(void)
{
  Dao_xp::Recordset* pprst;
  this->ListParameters((Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                  Dao_xp::Property** pprp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateProperty"), DISPID(DISPID_UNKNOWN/*[1610809370]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Value /*[VT_VARIANT:0]*/;
  _args[4] = DDL /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Property**)pprp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Property* __fastcall
_QueryDefDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp);
  return pprp;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 VARIANT LockEdit/*[in,opt]*/, 
                                 Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809371]*/));
  TAutoArgs<3> _args;
  _args[1] = Type /*[VT_VARIANT:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = LockEdit /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                 VARIANT LockEdit/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->OpenRecordset(Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT LockEdit/*[in,opt]*/, 
                                  Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610809372]*/));
  TAutoArgs<3> _args;
  _args[1] = Type /*[VT_VARIANT:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  _args[3] = LockEdit /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
_QueryDefDispT<T>::_OpenRecordset(VARIANT Type/*[in,opt]*/, VARIANT Options/*[in,opt]*/, 
                                  VARIANT LockEdit/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->_OpenRecordset(Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

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

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::get_hStmt(long* phStmt/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("hStmt"), DISPID(DISPID_UNKNOWN/*[1610809374]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(phStmt /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
_QueryDefDispT<T>::get_hStmt(void)
{
  long phStmt;
  this->get_hStmt((long*)&phStmt);
  return phStmt;
}

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

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

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

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("StillExecuting"), DISPID(DISPID_UNKNOWN/*[1610809377]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pStillExec /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_QueryDefDispT<T>::get_StillExecuting(void)
{
  VARIANT_BOOL pStillExec;
  this->get_StillExecuting((VARIANT_BOOL*)&pStillExec);
  return pStillExec;
}

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

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

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

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::get_Prepare(VARIANT* pb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Prepare"), DISPID(DISPID_UNKNOWN/*[1610809380]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pb /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
_QueryDefDispT<T>::get_Prepare(void)
{
  VARIANT pb;
  this->get_Prepare((VARIANT*)&pb);
  return pb;
}

template <class T> HRESULT __fastcall
_QueryDefDispT<T>::set_Prepare(VARIANT pb/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Prepare"), DISPID(1610809380));
  TAutoArgs<1> _args;
  _args[1] = pb /*[VT_VARIANT:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_QueryDefDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Parameter* __fastcall
ParametersDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Parameter* ppprm;
  this->get_Item(Item, (Dao_xp::Parameter**)&ppprm);
  return ppprm;
}

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

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

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

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

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

// *********************************************************************//
// DispIntf:  Parameter
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000081-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>::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(short* ps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ps /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
ParameterDispT<T>::get_Type(void)
{
  short ps;
  this->get_Type((short*)&ps);
  return ps;
}

template <class T> HRESULT __fastcall
ParameterDispT<T>::set_Type(short ps/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Type"), DISPID(1610809347));
  TAutoArgs<1> _args;
  _args[1] = ps /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
ParameterDispT<T>::get_Direction(short* pOption/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Direction"), DISPID(DISPID_UNKNOWN/*[1610809349]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pOption /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
ParameterDispT<T>::get_Direction(void)
{
  short pOption;
  this->get_Direction((short*)&pOption);
  return pOption;
}

template <class T> HRESULT __fastcall
ParameterDispT<T>::set_Direction(short pOption/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Direction"), DISPID(1610809349));
  TAutoArgs<1> _args;
  _args[1] = pOption /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
ParameterDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

// *********************************************************************//
// DispIntf:  Connection
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000041-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(DISPID_UNKNOWN/*[1610743808]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_Database(Dao_xp::Database** ppDb/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Database"), DISPID(DISPID_UNKNOWN/*[1610743810]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Database**)ppDb /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::DatabasePtr __fastcall
ConnectionDispT<T>::get_Database(void)
{
  Dao_xp::DatabasePtr ppDb;
  this->get_Database(&ppDb);
  return ppDb;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_hDbc(long* phDbc/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("hDbc"), DISPID(DISPID_UNKNOWN/*[1610743811]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(phDbc /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ConnectionDispT<T>::get_hDbc(void)
{
  long phDbc;
  this->get_hDbc((long*)&phDbc);
  return phDbc;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_QueryTimeout(short* pSeconds/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("QueryTimeout"), DISPID(DISPID_UNKNOWN/*[1610743812]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pSeconds /*[VT_I2:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> short __fastcall
ConnectionDispT<T>::get_QueryTimeout(void)
{
  short pSeconds;
  this->get_QueryTimeout((short*)&pSeconds);
  return pSeconds;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::set_QueryTimeout(short pSeconds/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("QueryTimeout"), DISPID(1610743812));
  TAutoArgs<1> _args;
  _args[1] = pSeconds /*[VT_I2:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

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

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_RecordsAffected(long* pRecords/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RecordsAffected"), DISPID(DISPID_UNKNOWN/*[1610743815]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pRecords /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
ConnectionDispT<T>::get_RecordsAffected(void)
{
  long pRecords;
  this->get_RecordsAffected((long*)&pRecords);
  return pRecords;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_StillExecuting(VARIANT_BOOL* pStillExec/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("StillExecuting"), DISPID(DISPID_UNKNOWN/*[1610743816]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pStillExec /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
ConnectionDispT<T>::get_StillExecuting(void)
{
  VARIANT_BOOL pStillExec;
  this->get_StillExecuting((VARIANT_BOOL*)&pStillExec);
  return pStillExec;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_Updatable(VARIANT_BOOL* pStillExec/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Updatable"), DISPID(DISPID_UNKNOWN/*[1610743817]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pStillExec /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
ConnectionDispT<T>::get_Updatable(void)
{
  VARIANT_BOOL pStillExec;
  this->get_Updatable((VARIANT_BOOL*)&pStillExec);
  return pStillExec;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_QueryDefs(Dao_xp::QueryDefs** ppqdfs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("QueryDefs"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDefs**)ppqdfs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::QueryDefsPtr __fastcall
ConnectionDispT<T>::get_QueryDefs(void)
{
  Dao_xp::QueryDefsPtr ppqdfs;
  this->get_QueryDefs(&ppqdfs);
  return ppqdfs;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::get_Recordsets(Dao_xp::Recordsets** pprsts/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Recordsets"), DISPID(DISPID_UNKNOWN/*[1610743819]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordsets**)pprsts /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::RecordsetsPtr __fastcall
ConnectionDispT<T>::get_Recordsets(void)
{
  Dao_xp::RecordsetsPtr pprsts;
  this->get_Recordsets(&pprsts);
  return pprsts;
}

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

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

template <class T> HRESULT __fastcall
ConnectionDispT<T>::CreateQueryDef(VARIANT Name/*[in,opt]*/, VARIANT SQLText/*[in,opt]*/, 
                                   Dao_xp::QueryDef** ppqdf/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateQueryDef"), DISPID(DISPID_UNKNOWN/*[1610743822]*/));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = SQLText /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::QueryDef**)ppqdf /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::QueryDef* __fastcall
ConnectionDispT<T>::CreateQueryDef(VARIANT Name/*[in,opt]*/, VARIANT SQLText/*[in,opt]*/)
{
  Dao_xp::QueryDef* ppqdf;
  this->CreateQueryDef(Name, SQLText, (Dao_xp::QueryDef**)&ppqdf);
  return ppqdf;
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::Execute(BSTR Query/*[in]*/, VARIANT Options/*[in,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("Execute"), DISPID(DISPID_UNKNOWN/*[1610743823]*/));
  TAutoArgs<2> _args;
  _args[1] = Query /*[VT_BSTR:0]*/;
  _args[2] = Options /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
ConnectionDispT<T>::OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Options/*[in,opt]*/, VARIANT LockEdit/*[in,opt]*/, 
                                  Dao_xp::Recordset** pprst/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("OpenRecordset"), DISPID(DISPID_UNKNOWN/*[1610743824]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Options /*[VT_VARIANT:0]*/;
  _args[4] = LockEdit /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Recordset**)pprst /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Recordset* __fastcall
ConnectionDispT<T>::OpenRecordset(BSTR Name/*[in]*/, VARIANT Type/*[in,opt]*/, 
                                  VARIANT Options/*[in,opt]*/, VARIANT LockEdit/*[in,opt]*/)
{
  Dao_xp::Recordset* pprst;
  this->OpenRecordset(Name, Type, Options, LockEdit, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

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

template <class T> Dao_xp::QueryDef* __fastcall
QueryDefsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::QueryDef* ppqdef;
  this->get_Item(Item, (Dao_xp::QueryDef**)&ppqdef);
  return ppqdef;
}

template <class T> HRESULT __fastcall
QueryDefsDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
QueryDefsDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

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

template <class T> Dao_xp::Recordset* __fastcall
RecordsetsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Recordset* pprst;
  this->get_Item(Item, (Dao_xp::Recordset**)&pprst);
  return pprst;
}

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

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

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

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

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

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

template <class T> Dao_xp::Relation* __fastcall
RelationsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Relation* pprel;
  this->get_Item(Item, (Dao_xp::Relation**)&pprel);
  return pprel;
}

template <class T> HRESULT __fastcall
RelationsDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
RelationsDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// SmartIntf: TCOM_Relation
// Interface: _Relation
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_RelationT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  return (*this)->get_Name(pbstr);
}

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

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

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

template <class T> BSTR __fastcall
TCOM_RelationT<T>::get_Table(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_Table((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::set_Table(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Table(pbstr);
}

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

template <class T> BSTR __fastcall
TCOM_RelationT<T>::get_ForeignTable(void)
{
  BSTR pbstr = 0;
  OLECHECK(this->get_ForeignTable((BSTR*)&pbstr));
  return pbstr;
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::set_ForeignTable(BSTR pbstr/*[in]*/)
{
  return (*this)->set_ForeignTable(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::get_Attributes(long* pl/*[out,retval]*/)
{
  return (*this)->get_Attributes(pl);
}

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

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::set_Attributes(long pl/*[in]*/)
{
  return (*this)->set_Attributes(pl);
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::get_Fields(Dao_xp::Fields** ppflds/*[out,retval]*/)
{
  return (*this)->get_Fields(ppflds);
}

template <class T> Dao_xp::FieldsPtr __fastcall
TCOM_RelationT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  OLECHECK(this->get_Fields((Dao_xp::FieldsPtr*)&ppflds));
  return ppflds;
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/, Dao_xp::Field** ppfld/*[out,retval]*/)
{
  return (*this)->CreateField(Name, Type, Size, ppfld);
}

template <class T> Dao_xp::Field* __fastcall
TCOM_RelationT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/)
{
  Dao_xp::Field* ppfld;
  OLECHECK(this->CreateField(Name/*[in,opt]*/, Type/*[in,opt]*/, Size/*[in,opt]*/, (Dao_xp::Field**)&ppfld));
  return ppfld;
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::get_PartialReplica(VARIANT_BOOL* pfPartialReplica/*[out,retval]*/)
{
  return (*this)->get_PartialReplica(pfPartialReplica);
}

template <class T> VARIANT_BOOL __fastcall
TCOM_RelationT<T>::get_PartialReplica(void)
{
  VARIANT_BOOL pfPartialReplica;
  OLECHECK(this->get_PartialReplica((VARIANT_BOOL*)&pfPartialReplica));
  return pfPartialReplica;
}

template <class T> HRESULT __fastcall
TCOM_RelationT<T>::set_PartialReplica(VARIANT_BOOL pfPartialReplica/*[in]*/)
{
  return (*this)->set_PartialReplica(pfPartialReplica);
}

// *********************************************************************//
// DispIntf:  _Relation
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000089-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_RelationDispT<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
_RelationDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_RelationDispT<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
_RelationDispT<T>::get_Table(BSTR* pbstr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Table"), DISPID(DISPID_UNKNOWN/*[1610809346]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstr /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

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

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

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

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

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

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

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

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

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

template <class T> Dao_xp::FieldsPtr __fastcall
_RelationDispT<T>::get_Fields(void)
{
  Dao_xp::FieldsPtr ppflds;
  this->get_Fields(&ppflds);
  return ppflds;
}

template <class T> HRESULT __fastcall
_RelationDispT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/, Dao_xp::Field** ppfld/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateField"), DISPID(DISPID_UNKNOWN/*[1610809353]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Size /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Field**)ppfld /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Field* __fastcall
_RelationDispT<T>::CreateField(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                               VARIANT Size/*[in,opt]*/)
{
  Dao_xp::Field* ppfld;
  this->CreateField(Name, Type, Size, (Dao_xp::Field**)&ppfld);
  return ppfld;
}

template <class T> HRESULT __fastcall
_RelationDispT<T>::get_PartialReplica(VARIANT_BOOL* pfPartialReplica/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PartialReplica"), DISPID(DISPID_UNKNOWN/*[1610809354]*/));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pfPartialReplica /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
_RelationDispT<T>::get_PartialReplica(void)
{
  VARIANT_BOOL pfPartialReplica;
  this->get_PartialReplica((VARIANT_BOOL*)&pfPartialReplica);
  return pfPartialReplica;
}

template <class T> HRESULT __fastcall
_RelationDispT<T>::set_PartialReplica(VARIANT_BOOL pfPartialReplica/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PartialReplica"), DISPID(1610809354));
  TAutoArgs<1> _args;
  _args[1] = pfPartialReplica /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_RelationDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Container* __fastcall
ContainersDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Container* ppctn;
  this->get_Item(Item, (Dao_xp::Container**)&ppctn);
  return ppctn;
}

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

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

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

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

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

// *********************************************************************//
// DispIntf:  Container
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000091-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
ContainerDispT<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
ContainerDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

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

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

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

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

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
ContainerDispT<T>::get_Documents(Dao_xp::Documents** ppdocs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Documents"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Documents**)ppdocs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::DocumentsPtr __fastcall
ContainerDispT<T>::get_Documents(void)
{
  Dao_xp::DocumentsPtr ppdocs;
  this->get_Documents(&ppdocs);
  return ppdocs;
}

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

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

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

template <class T> Dao_xp::PropertiesPtr __fastcall
ContainerDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Document* __fastcall
DocumentsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Document* ppdoc;
  this->get_Item(Item, (Dao_xp::Document**)&ppdoc);
  return ppdoc;
}

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

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

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

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

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

// *********************************************************************//
// DispIntf:  Document
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000099-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
DocumentDispT<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
DocumentDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

template <class T> HRESULT __fastcall
DocumentDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                 VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/, 
                                 Dao_xp::Property** pprp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateProperty"), DISPID(DISPID_UNKNOWN/*[1610809355]*/));
  TAutoArgs<4> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = Type /*[VT_VARIANT:0]*/;
  _args[3] = Value /*[VT_VARIANT:0]*/;
  _args[4] = DDL /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Property**)pprp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Property* __fastcall
DocumentDispT<T>::CreateProperty(VARIANT Name/*[in,opt]*/, VARIANT Type/*[in,opt]*/, 
                                 VARIANT Value/*[in,opt]*/, VARIANT DDL/*[in,opt]*/)
{
  Dao_xp::Property* pprp;
  this->CreateProperty(Name, Type, Value, DDL, (Dao_xp::Property**)&pprp);
  return pprp;
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
DocumentDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::User* __fastcall
UsersDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::User* ppusr;
  this->get_Item(Item, (Dao_xp::User**)&ppusr);
  return ppusr;
}

template <class T> HRESULT __fastcall
UsersDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
UsersDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// SmartIntf: TCOM_User
// Interface: _User
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_UserT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  return (*this)->get_Name(pbstr);
}

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

template <class T> HRESULT __fastcall
TCOM_UserT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_UserT<T>::set_PID(BSTR Param1/*[in]*/)
{
  return (*this)->set_PID(Param1);
}

template <class T> HRESULT __fastcall
TCOM_UserT<T>::set_Password(BSTR Param1/*[in]*/)
{
  return (*this)->set_Password(Param1);
}

template <class T> HRESULT __fastcall
TCOM_UserT<T>::get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/)
{
  return (*this)->get_Groups(ppgrps);
}

template <class T> Dao_xp::GroupsPtr __fastcall
TCOM_UserT<T>::get_Groups(void)
{
  Dao_xp::GroupsPtr ppgrps;
  OLECHECK(this->get_Groups((Dao_xp::GroupsPtr*)&ppgrps));
  return ppgrps;
}

template <class T> HRESULT __fastcall
TCOM_UserT<T>::NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/)
{
  return (*this)->NewPassword(bstrOld, bstrNew);
}

template <class T> HRESULT __fastcall
TCOM_UserT<T>::CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                           Dao_xp::Group** ppgrp/*[out,retval]*/)
{
  return (*this)->CreateGroup(Name, PID, ppgrp);
}

template <class T> Dao_xp::Group* __fastcall
TCOM_UserT<T>::CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/)
{
  Dao_xp::Group* ppgrp;
  OLECHECK(this->CreateGroup(Name/*[in,opt]*/, PID/*[in,opt]*/, (Dao_xp::Group**)&ppgrp));
  return ppgrp;
}

// *********************************************************************//
// DispIntf:  _User
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000069-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_UserDispT<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
_UserDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_UserDispT<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
_UserDispT<T>::set_PID(BSTR Param1/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PID"), DISPID(DISPID_UNKNOWN/*[1610809346]*/));
  TAutoArgs<1> _args;
  _args[1] = Param1 /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_UserDispT<T>::set_Password(BSTR Param1/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Password"), DISPID(DISPID_UNKNOWN/*[1610809347]*/));
  TAutoArgs<1> _args;
  _args[1] = Param1 /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_UserDispT<T>::get_Groups(Dao_xp::Groups** ppgrps/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Groups"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Groups**)ppgrps /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::GroupsPtr __fastcall
_UserDispT<T>::get_Groups(void)
{
  Dao_xp::GroupsPtr ppgrps;
  this->get_Groups(&ppgrps);
  return ppgrps;
}

template <class T> HRESULT __fastcall
_UserDispT<T>::NewPassword(BSTR bstrOld/*[in]*/, BSTR bstrNew/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("NewPassword"), DISPID(DISPID_UNKNOWN/*[1610809349]*/));
  TAutoArgs<2> _args;
  _args[1] = bstrOld /*[VT_BSTR:0]*/;
  _args[2] = bstrNew /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_UserDispT<T>::CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                           Dao_xp::Group** ppgrp/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateGroup"), DISPID(DISPID_UNKNOWN/*[1610809350]*/));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = PID /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Group**)ppgrp /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::Group* __fastcall
_UserDispT<T>::CreateGroup(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/)
{
  Dao_xp::Group* ppgrp;
  this->CreateGroup(Name, PID, (Dao_xp::Group**)&ppgrp);
  return ppgrp;
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_UserDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Group* __fastcall
GroupsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Group* ppgrp;
  this->get_Item(Item, (Dao_xp::Group**)&ppgrp);
  return ppgrp;
}

template <class T> HRESULT __fastcall
GroupsDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
GroupsDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// SmartIntf: TCOM_Group
// Interface: _Group
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOM_GroupT<T>::get_Name(BSTR* pbstr/*[out,retval]*/)
{
  return (*this)->get_Name(pbstr);
}

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

template <class T> HRESULT __fastcall
TCOM_GroupT<T>::set_Name(BSTR pbstr/*[in]*/)
{
  return (*this)->set_Name(pbstr);
}

template <class T> HRESULT __fastcall
TCOM_GroupT<T>::set_PID(BSTR Param1/*[in]*/)
{
  return (*this)->set_PID(Param1);
}

template <class T> HRESULT __fastcall
TCOM_GroupT<T>::get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/)
{
  return (*this)->get_Users(ppusrs);
}

template <class T> Dao_xp::UsersPtr __fastcall
TCOM_GroupT<T>::get_Users(void)
{
  Dao_xp::UsersPtr ppusrs;
  OLECHECK(this->get_Users((Dao_xp::UsersPtr*)&ppusrs));
  return ppusrs;
}

template <class T> HRESULT __fastcall
TCOM_GroupT<T>::CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                           VARIANT Password/*[in,opt]*/, Dao_xp::User** ppusr/*[out,retval]*/)
{
  return (*this)->CreateUser(Name, PID, Password, ppusr);
}

template <class T> Dao_xp::User* __fastcall
TCOM_GroupT<T>::CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                           VARIANT Password/*[in,opt]*/)
{
  Dao_xp::User* ppusr;
  OLECHECK(this->CreateUser(Name/*[in,opt]*/, PID/*[in,opt]*/, Password/*[in,opt]*/, (Dao_xp::User**)&ppusr));
  return ppusr;
}

// *********************************************************************//
// DispIntf:  _Group
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000061-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
_GroupDispT<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
_GroupDispT<T>::get_Name(void)
{
  BSTR pbstr;
  this->get_Name((BSTR*)&pbstr);
  return pbstr;
}

template <class T> HRESULT __fastcall
_GroupDispT<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
_GroupDispT<T>::set_PID(BSTR Param1/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PID"), DISPID(DISPID_UNKNOWN/*[1610809346]*/));
  TAutoArgs<1> _args;
  _args[1] = Param1 /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
_GroupDispT<T>::get_Users(Dao_xp::Users** ppusrs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Users"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::Users**)ppusrs /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Dao_xp::UsersPtr __fastcall
_GroupDispT<T>::get_Users(void)
{
  Dao_xp::UsersPtr ppusrs;
  this->get_Users(&ppusrs);
  return ppusrs;
}

template <class T> HRESULT __fastcall
_GroupDispT<T>::CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                           VARIANT Password/*[in,opt]*/, Dao_xp::User** ppusr/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateUser"), DISPID(DISPID_UNKNOWN/*[1610809348]*/));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_VARIANT:0]*/;
  _args[2] = PID /*[VT_VARIANT:0]*/;
  _args[3] = Password /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Dao_xp::User**)ppusr /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Dao_xp::User* __fastcall
_GroupDispT<T>::CreateUser(VARIANT Name/*[in,opt]*/, VARIANT PID/*[in,opt]*/, 
                           VARIANT Password/*[in,opt]*/)
{
  Dao_xp::User* ppusr;
  this->CreateUser(Name, PID, Password, (Dao_xp::User**)&ppusr);
  return ppusr;
}

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

template <class T> Dao_xp::PropertiesPtr __fastcall
_GroupDispT<T>::get_Properties(void)
{
  Dao_xp::PropertiesPtr ppprops;
  this->get_Properties(&ppprops);
  return ppprops;
}

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

template <class T> Dao_xp::Connection* __fastcall
ConnectionsDispT<T>::get_Item(VARIANT Item/*[in]*/)
{
  Dao_xp::Connection* ppconn;
  this->get_Item(Item, (Dao_xp::Connection**)&ppconn);
  return ppconn;
}

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

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

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

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

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

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

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

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

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

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

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

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

// *********************************************************************//
// DispIntf:  Error
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {00000023-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;
}

// *********************************************************************//
// DispIntf:  IndexFields
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0000005D-0000-0010-8000-00AA006D2EA4}
// *********************************************************************//
template <class T> HRESULT __fastcall
IndexFieldsDispT<T>::get_Item(VARIANT Item/*[in,opt]*/, VARIANT* pvar/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Item /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(pvar /*[VT_VARIANT:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT __fastcall
IndexFieldsDispT<T>::get_Item(VARIANT Item/*[in,opt]*/)
{
  VARIANT pvar;
  this->get_Item(Item, (VARIANT*)&pvar);
  return pvar;
}

template <class T> HRESULT __fastcall
IndexFieldsDispT<T>::Append(LPDISPATCH Object/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Append"), DISPID(1610809344));
  TAutoArgs<1> _args;
  _args[1] = Object /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IndexFieldsDispT<T>::Delete(BSTR Name/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Delete"), DISPID(1610809345));
  TAutoArgs<1> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

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

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

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

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

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

// *********************************************************************//
// 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  : TableDef
// Interface: TCOM_TableDef
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_TableDef, _TableDef, &CLSID_TableDef, &IID__TableDef> CoTableDef;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Field
// Interface: TCOM_Field
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Field, _Field, &CLSID_Field, &IID__Field> CoField;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Index
// Interface: TCOM_Index
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Index, _Index, &CLSID_Index, &IID__Index> CoIndex;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : QueryDef
// Interface: TCOM_QueryDef
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_QueryDef, _QueryDef, &CLSID_QueryDef, &IID__QueryDef> CoQueryDef;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Relation
// Interface: TCOM_Relation
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Relation, _Relation, &CLSID_Relation, &IID__Relation> CoRelation;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : User
// Interface: TCOM_User
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_User, _User, &CLSID_User, &IID__User> CoUser;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Group
// Interface: TCOM_Group
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_Group, _Group, &CLSID_Group, &IID__Group> CoGroup;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : DBEngine
// Interface: TCOM_DBEngine
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_DBEngine, _DBEngine, &CLSID_DBEngine, &IID__DBEngine> CoDBEngine;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : PrivDBEngine
// Interface: TCOM_DBEngine
// *********************************************************************//
typedef TCoClassCreatorT<TCOM_DBEngine, _DBEngine, &CLSID_PrivDBEngine, &IID__DBEngine> CoPrivDBEngine;
#endif  //   __TLB_NO_INTERFACE_WRAPPERS


};     // namespace Dao_xp

#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using  namespace Dao_xp;
#endif

#pragma option pop

#endif // DAO_XPH
