/*=================================================================
   Copyright (C) 2013 BizStation Corp All rights reserved.

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version 2
   of the License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software 
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  
   02111-1307, USA.
=================================================================*/
import "oaidl.idl";
import "ocidl.idl";

coclass Database;
interface IDbDef;
coclass DbDef;
  
interface ITableDef;
interface IFieldDef;
interface IKeyDef;
interface ITable;
interface IFlags;
interface IKeySegment;
interface IField;
interface ITdVersion;


typedef
[
  helpstring("Update, Insert type Constants")
]
enum eUpdateType
{
  changeCurrentCc  = 0,
  changeCurrentNcc = 1,
  changeInKey = 2
}eUpdateType;

typedef
[
  helpstring("Field info query type Constants")
]
enum eFieldQuery 
{
    minlen = 0, 
	mxlen = 1,
	defaultlen = 2,
	decimals = 3
}eFieldQuery;

typedef
[
  helpstring("Find type Constants")
]
enum eFindType
{
  findForword = 0,
  findBackForword = 0
}eFindType;


typedef
[
  helpstring("Schema type enum")
]
enum eSchemaType
{
	schemaBdf = (short)0,
    schemaDdf = (short)1
}eSchemaType;

typedef
[
  helpstring("Open mode enum")
]
enum eOpenMode
{
	normal = 0,
    readOnly = -2,
	exclusive = -4
}eOpenMode;



typedef
[
  helpstring("Status code Constants")
]
enum eStatus
{
	STATUS_TABLE_YET_OPEN		= -3,
	STATUS_DURING_TRANSACTION	= -4,
	STATUS_NO_ACR_UPDATE_DELETE = -5,
	STATUS_NO_ACR_INSERT		= -6,
	STATUS_NO_ACR_READ			= -7,
	STATUS_CANT_ALLOC_MEMORY	= -8,
	STATUS_USE_KEYFIELD			= -9,
	STATUS_TOO_MANY_TABLES		= -10,
	STATUS_INVARID_PRM_KEY_NUM	= -11,
	STATUS_INVARID_PNT_KEY_NUM	= -12,
	STATUS_INVARID_REP_KEY_NUM	= -13,
	STATUS_INVARID_FIELD_IDX	= -14,
	STATUS_ALREADY_DELETED		= -15,
	STATUS_LMITS_MAX_TABLES		= -16,
	STATUS_DB_YET_OPEN			= -17,
	STATUS_TABLENAME_NOTFOUND	= -18,
	STATUS_DIFFERENT_DBVERSION	= -19,
	STATUS_DUPLICATE_FIELDNAME	= -20,
	STATUS_INVALID_TABLE_IDX	= -21,
	STATUS_AUTH_DENIED			= -22,
	STATUS_TOO_MANY_FIELDS		= -23,
	STATUS_FILTERSTRING_ERROR	= -24,
	STATUS_INVALID_FIELDLENGTH	= -25,
	STATUS_INVALID_KEYTYPE		= -26,
	STATUS_LVAR_NOTE_NOT_LAST	= -27,
	STATUS_NODEF_FOR_CONVERT	= -28,
	STATUS_AUTOINC_SPACE_ERROR  = -31,
	STATUS_TOO_LONG_OWNERNAME   = -32,
	STATUS_CANT_DEL_FOR_REL		= -33,
	STATUS_NO_AUTOINC_SPACE		= -34,
	STATUS_INVALID_RECLEN		= -35,
	STATUS_INVALID_FIELDVALUE	= -36,
	STATUS_INVALID_VALLEN		= -37,
	STATUS_FIELDTYPE_NOTSUPPORT = -42,
	STATUS_SUCCESS				= 0,
	STATUS_PROGRAM_ERROR		= 1,
	STATUS_IO_ERROR				= 2,
	STATUS_FILE_NOT_OPENED		= 3,
	STATUS_NOT_FOUND_TI			= 4,
	STATUS_DUPPLICATE_KEYVALUE	= 5,
	STATUS_INVALID_KEYNUM		= 6,
	STATUS_NO_CURRENT			= 8,
	STATUS_EOF					= 9,
	STATUS_TABLE_NOTOPEN		= 12,
	STATUS_REQUESTER_DEACTIVE   = 20,
	STATUS_KEYBUFFERTOOSMALL	= 21,
	STATUS_BUFFERTOOSMALL		= 22,
	STATUS_CANT_CREATE          = 25,
	STATUS_NOSUPPORT_OP         = 41,
	STATUS_INVALID_BOOKMARK		= 43,
	STATUS_ACCESS_DENIED		= 46,
	STATUS_INVALID_OWNERNAME	= 51,
	STATUS_TABLE_EXISTS_ERROR	= 59,
	STATUS_LIMMIT_OF_REJECT		= 60,
	STATUS_REACHED_FILTER_COND	= 64,
	STATUS_INVALID_FIELD_OFFSET = 65,
	STATUS_CHANGE_CONFLICT		= 80,
	STATUS_INVALID_LOCKTYPE		= 83,
	STATUS_LOCK_ERROR			= 84,
	STATUS_FILE_LOCKED			= 85,
	STATUS_CANNOT_LOCK_TABLE	= 88,
	TATUS_INVALID_KEYNAME		= 6,
	STATUS_INVALID_DATASIZE		= 22,
	STATUS_INVALID_FIELDNAME	= 65,
	ERROR_TD_INVALID_CLINETHOST	= 171,
	ERROR_NOSPECIFY_TABLE       = 176,
	NET_BAD_SRB_FORMAT			= 3021,
	ERROR_TD_HOSTNAME_NOT_FOUND = 3103,
	ERROR_TD_CONNECTION_FAILURE = 3106,
	ERROR_TD_NOT_CONNECTED      = 3110
}eStatus;

typedef
[
  helpstring("Field type Constants")
]
enum eFieldType
{
	ft_string		= 0, 
	ft_integer		= 1,
	ft_float		= 2,
	ft_date			= 3,
	ft_time			= 4,
	ft_decimal		= 5,
	ft_money		= 6,
	ft_logical		= 7,
	ft_numeric		= 8,
	ft_bfloat		= 9, 
	ft_lstring		= 10,
	ft_zstring		= 11,
	ft_note			= 12,
	ft_lvar			= 13,
	ft_uinteger		= 14,
	ft_autoinc		= 15,
	ft_bit			= 16,
	ft_numericsts	= 17,
	ft_numericsa	= 18,
	ft_currency		= 19,
	ft_timestamp	= 20,
	ft_blob			= 21,
	ft_reserve22	= 22,
	ft_reserve23	= 23,
	ft_reserve24	= 24,
	ft_wstring		= 25,
	ft_wzstring		= 26,
	ft_guid			= 27,
	ft_datatime		= 30,
	ft_myvarchar	= 40,
	ft_myvarbinary	= 41,
	ft_mywvarchar	= 42,
	ft_mywvarbinary	= 43,
	ft_mychar		= 44,
	ft_mywchar		= 45,
	ft_mydate		= 46,
	ft_mytime		= 47,
	ft_mydatetime 	= 48,
	ft_mytimestamp	= 49,
	ft_mytext 		= 50,
	ft_myblob 		= 51,
	ft_nullindicator = 255
}eFieldType;

typedef
[
  helpstring("Charset type Constants")
]
enum eCharset
{
	CHARSET_LATIN1  =  1,
	CHARSET_CP850   =  4,
	CHARSET_ASCII   =  9,
	CHARSET_SJIS	= 11,
	CHARSET_UTF8	= 22,
	CHARSET_USC2	= 23,
	CHARSET_UTF8B4	= 30,
	CHARSET_UTF16LE	= 33,
	CHARSET_CP932	= 38,
	CHARSET_EUCJ	= 40,
	MAX_CHAR_INFO   = 41

}eCharset;

typedef
[
  helpstring("Lock type Constants")
]
enum eLockType
{
  LOCK_NONE           = 0,
  LOCK_SINGLE_WAIT    = 100,
  LOCK_SINGLE_NOWAIT  = 200,
  LOCK_MULTI_WAIT     = 300,
  LOCK_MULTI_NOWAIT   = 400,
  NOWAIT_WRITE        = 500,
  PARALLEL_TRN        = 1000,
  PARA_SINGLE_NOWAIT  = 1700,
  PARA_MULTI_NOWAIT   = 1900
}eLockType;

typedef
[
  helpstring("Continus operation types")
]
enum eContinusOpr
{
	backup_start = 0,
	backup_end = 1
}eContinusOpr;

typedef
[
  helpstring("Continus operation types")
]
enum eContinusStatus
{
	TD_BACKUP_MODE_OK            = 0,
	TD_BACKUP_MODE_NOT_SUPPORT   = 1,
	TD_BACKUP_MODE_BUSY          = 88,
	TD_BACKUP_MODE_NOT_PERMIT    = 41,
	TD_BACKUP_MODE_SERVER_ERROR  = 91	
}eContinusStatus;



[
  object,
  uuid(3EE9F43F-99D0-4300-B8A4-3085A2C4D00B),
  dual,
  nonextensible,
  pointer_default(unique)
]
interface IDatabase : IDispatch
{
  [id(0x00000001)]
  HRESULT _stdcall Open([in] BSTR Uri, [in, defaultvalue(schemaBdf)] eSchemaType SchemaType, [in, defaultvalue(readOnly)] eOpenMode Mode, [in, defaultvalue("")] BSTR Dir, [in, defaultvalue("")] BSTR OwnerName, [out, retval] VARIANT_BOOL* Param6);
  [propget, id(0x00000008)]
  HRESULT _stdcall DbDef([out, retval] IDbDef** Value);
  [id(0x00000002)]
  HRESULT _stdcall OpenTable([in] VARIANT TableID, [in,  defaultvalue(normal)] eOpenMode Mode, [in, defaultvalue(-1)] VARIANT_BOOL AutoCreate, [in, defaultvalue("")] BSTR OwnerName, [in, defaultvalue("")] BSTR Uri, [out, retval] ITable** ret);
  [id(0x00000003), hidden]
  HRESULT _stdcall AtatchDatabase([in] hyper* nativeDatabase);
  [propget, id(0x00000004)]
  HRESULT _stdcall RootDir([out, retval] BSTR* Value);
  [propput, id(0x00000004)]
  HRESULT _stdcall RootDir([in] BSTR Value);
  [propget, id(0x00000005)]
  HRESULT _stdcall Stat([out, retval] eStatus* Value);
  [id(0x00000006)]
  HRESULT _stdcall BeginTrn([in, defaultvalue(PARA_SINGLE_NOWAIT)] eLockType Bias);
  [id(0x00000007)]
  HRESULT _stdcall EndTrn(void);
  [id(0x00000009)]
  HRESULT _stdcall AbortTrn(void);
  [propget, id(0x0000000A)]
  HRESULT _stdcall NativeDatabase([out, retval] hyper** Value);
  [id(0x000000C9)]
  HRESULT _stdcall BeginSnapshot(void);
  [id(0x000000CA)]
  HRESULT _stdcall EndSnapshot(void);
  [id(0x000000CB)]
  HRESULT _stdcall Drop(void);
  [id(0x000000CC)]
  HRESULT _stdcall DropTable([in] BSTR TableName);
  [id(0x000000CD)]
  HRESULT _stdcall Create([in] BSTR Uri, [in, defaultvalue(0)] int type);
  [id(0x000000CE)]
  HRESULT _stdcall Connect([in] BSTR Uri, [in, defaultvalue(0)] VARIANT_BOOL NewConnection, [out, retval] VARIANT_BOOL* Value);
  [id(0x000000CF)]
  HRESULT _stdcall Disconnect([in] BSTR Uri, [out, retval] VARIANT_BOOL* Param2);
  [id(0x000000D0)]
  HRESULT _stdcall Close(void);
  [propget, id(0x000000D1)]
  HRESULT _stdcall EnableTrn([out, retval] VARIANT_BOOL* Value);
  [id(0x000000D2)]
  HRESULT _stdcall GetBtrVersion([in]int Index, [out, retval] ITdVersion** Value);

  [id(0x000000D4)]
  HRESULT _stdcall IsTransactdUri([in] BSTR Uri, [out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000D5)]
  HRESULT _stdcall IsUseTransactd([out, retval] VARIANT_BOOL* Value);
  [id(0x000000D6)]
  HRESULT _stdcall SetUseTransactd(void);
  [propget, id(0x000000D7)]
  HRESULT _stdcall LocalSharing([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000D7)]
  HRESULT _stdcall LocalSharing([in] VARIANT_BOOL Value);
  [propget, id(0x000000D8)]
  HRESULT _stdcall LockWaitCount([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000D8)]
  HRESULT _stdcall LockWaitCount([in] VARIANT_BOOL Value);
  [propget, id(0x000000D9)]
  HRESULT _stdcall LockWaitTime([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000D9)]
  HRESULT _stdcall LockWaitTime([in] VARIANT_BOOL Value);
  [propget, id(0x000000DA)]
  HRESULT _stdcall UseLongFilename([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000DA)]
  HRESULT _stdcall UseLongFilename([in] VARIANT_BOOL Value);
  [propget, id(0x000000DB)]
  HRESULT _stdcall OpenTableCount([out, retval] short* Value);
  [id(0x000000DC)]
  HRESULT _stdcall ReadDatabaseDirectory([out, retval] BSTR* Value);
  [id(0x000000DE)]
  HRESULT _stdcall Rename([in] BSTR OldUri, [in] BSTR newUri);
  [propget, id(0x000000DF)]
  HRESULT _stdcall Uri( [out, retval] BSTR* Uri);
  [id(0x000000E1)]
  HRESULT _stdcall TdapErr([in]OLE_HANDLE hWnd, [out, retval] BSTR* Value);
  [id(0x000000E3)]
  HRESULT _stdcall Clone([out, retval] IDatabase** Value);
  [id(0x000000E4)]
  HRESULT _stdcall AssignSchemaData([in] IDbDef* Src, [out, retval] short* Value);
  [id(0x000000E5)]
  HRESULT _stdcall Continuous([in] eContinusOpr Op, [in, defaultvalue(0)] VARIANT_BOOL inclideRepfile, [out, retval] eContinusStatus* Value);
  [id(0x000000E6)]
  HRESULT _stdcall ConvertTable([in] short TableIndex, [in, defaultvalue(-1)] VARIANT_BOOL Turbo, [in, defaultvalue("")] BSTR OwnerName);
  [id(0x000000E7)]
  HRESULT _stdcall CopyTableData([in] ITable* Dest, [in] ITable* Src, [in] VARIANT_BOOL Turbo, [in, defaultvalue(0)] int Offset
	  , [in, defaultvalue(-1)] short KeyNum, [in, defaultvalue(-1)] int MaxSkip, [out, retval] short* Value);
  [id(0x000000E8)]
  HRESULT _stdcall CreateTable([in] short FileNum, [in, defaultvalue("")] BSTR Uri, [out, retval] VARIANT_BOOL* Value);
  [id(0x000000E9)]
  HRESULT _stdcall ExistsTableFile([in] short TableIndex, [in, defaultvalue("")] BSTR OwnerName);
  [id(0x000000EA)]
  HRESULT _stdcall GetTableUri([in] short FileNum, [out, retval] BSTR* Value);
  [propget, id(0x000000EB)]
  HRESULT _stdcall IsOpened([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000EC)]
  HRESULT _stdcall TableReadOnly([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000EC)]
  HRESULT _stdcall TableReadOnly([in] VARIANT_BOOL Value);
  [id(0x000000ED)]
  HRESULT _stdcall SwapTablename([in] BSTR Uri1, [in] BSTR Uri2);
  [propget, id(0x000000EF)]
  HRESULT _stdcall ClientID([out, retval] short* Value);
  [propget, id(0x000000F0)]
  HRESULT _stdcall RefCount([out, retval] int* Value);
  [propget, id(0x000000F1)]
  HRESULT _stdcall TrnsactionFlushWaitStatus([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000F2), helpstring("Effect to all Database instance.")]
  HRESULT _stdcall ExecCodePage([in] unsigned int Value);
  [propget, id(0x000000F2)]
  HRESULT _stdcall ExecCodePage([out, retval] unsigned int* Value);
  [propget, id(0x000000F3)]
  HRESULT _stdcall MaxTables([out, retval]  int* Value);
 
  
};




[
  object,
  uuid(907FD3F0-130F-4A44-BC79-AAECBDBE93AF),
  dual,
  nonextensible,
  pointer_default(unique)
]
interface IDbDef : IDispatch
{
  [propget, id(0x00000003)]
  HRESULT _stdcall TableCount([out, retval] short* Value);
  [id(0x000000C9)]
  HRESULT _stdcall InsertTable([in] short index, [out, retval] ITableDef** Param1);
  [id(0x000000CA)]
  HRESULT _stdcall UpDateTableDef([in] short TableIndex);
  [id(0x000000CB)]
  HRESULT _stdcall InsertField([in] short TableIndex, [in] short InsertIndex, [out, retval] IFieldDef** Param3);
  [id(0x000000CC)]
  HRESULT _stdcall DeleteField([in] short TableIndex, [in] short FieldIndex);
  [id(0x000000CD)]
  HRESULT _stdcall InsertKey([in] short TableIndex, [in] short InsertIndex, [out, retval] IKeyDef** Param3);
  [id(0x000000CE)]
  HRESULT _stdcall DeleteKey([in] short TableIndex, [in] short KeyIndex);
  [id(0x000000CF)]
  HRESULT _stdcall TableDef([in] short Index, [out, retval] ITableDef** Value);

  [id(0x000000D0)]
  HRESULT _stdcall CompAsBackup([in] short TableIndex, [out, retval] VARIANT_BOOL* Value);
  [id(0x000000D1)]
  HRESULT _stdcall DeleteTable([in] short TableIndex);
  [id(0x000000D2)]
  HRESULT _stdcall TableNumByName([in] BSTR Name, [out, retval] short* Value);
  [id(0x000000D3)]
  HRESULT _stdcall FieldNumByName([in] short TableIndex, [in] BSTR Name, [out, retval] short* Value);
  [id(0x000000D4)]
  HRESULT _stdcall FieldValidLength([in] eFieldQuery Query, [in] short FieldType, [out, retval] unsigned int* Value);
  [id(0x000000D5)]
  HRESULT _stdcall FindKeynumByFieldNum([in] short TableIndex, [in] short Index, [out, retval] unsigned short* Value);
  [id(0x000000D6)]
  HRESULT _stdcall GetRecordLen([in] short TableIndex, [out, retval] unsigned short* Value);
  [propget, id(0x000000D7)]
  HRESULT _stdcall OpenMode([out, retval] eOpenMode* Value);
  [id(0x000000D8)]
  HRESULT _stdcall PopBackup([in] short TableIndex);
  [id(0x000000D9)]
  HRESULT _stdcall PushBackup([in] short TableIndex);
  [id(0x000000DA)]
  HRESULT _stdcall RenumberTable([in] short OldIndex, [in] short NewIndex);
  [id(0x000000DB)]
  HRESULT _stdcall Reopen([in, defaultvalue(readOnly)] eOpenMode Mode);
  [propget, id(0x000000DC)]
  HRESULT _stdcall Version([out, retval] int* Value);
  [propput, id(0x000000DC)]
  HRESULT _stdcall Version([in] int Value);
  [propget, id(0x000000DD)]
  HRESULT _stdcall Stat([out, retval] eStatus* Value);
  [id(0x000000DE)]
  HRESULT _stdcall TdapErr([in]OLE_HANDLE hWnd, [out, retval] BSTR* Value);
};
[
	object,
	uuid(91FD8A45-1D66-4939-9AF0-7F0ACD65AA00),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface ITable : IDispatch
{
  [propget, id(0x00000001)]
  HRESULT _stdcall Vlng([in] VARIANT Index, [out, retval] int* Value);
  [propput, id(0x00000001)]
  HRESULT _stdcall Vlng([in] VARIANT Index, [in] int Value);
  [propget, id(0x00000002)]
  HRESULT _stdcall Text([in] VARIANT Index, [out, retval] BSTR* Value);
  [propput, id(0x00000002)]
  HRESULT _stdcall Text([in] VARIANT Index, [in] BSTR Value);
  [propget, id(0x00000003)]
  HRESULT _stdcall TableDef([out, retval] ITableDef** Value);
  [id(0x00000004)]
  HRESULT _stdcall Insert([in, defaultvalue(changeCurrentNcc)] eUpdateType ncc);
  [id(0x00000005)]
  HRESULT _stdcall UpDate([in, defaultvalue(changeCurrentNcc)] eUpdateType ncc);
  [id(0x00000006)]
  HRESULT _stdcall Delete([in, defaultvalue(0)] VARIANT_BOOL inkey);
  [id(0x00000007)]
  HRESULT _stdcall ClearBuffer(void);
  [id(0x00000019)]
  HRESULT _stdcall Close(void);
  [id(0x0000001A)]
  HRESULT _stdcall SeekFirst([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x0000001B)]
  HRESULT _stdcall SeekLast([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x0000001C)]
  HRESULT _stdcall SeekPrev([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x0000001D)]
  HRESULT _stdcall SeekNext([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x0000001E)]
  HRESULT _stdcall Seek([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x0000001F)]
  HRESULT _stdcall SeekGreater([in] VARIANT_BOOL orEqual, [in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x00000020)]
  HRESULT _stdcall SeekLessThan([in] VARIANT_BOOL orEqual, [in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [propget, id(0x00000030)]
  HRESULT _stdcall BookMark([out, retval] long* Value);
  [id(0x00000022)]
  HRESULT _stdcall SeekByBookMark([in] long Value, [in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [propget, id(0x00000023)]
  HRESULT _stdcall Percentage([out, retval] long* Value);
  [id(0x00000031)]
  HRESULT _stdcall SeekByPercentage([in] long Value);
  [propget, id(0x00000024)]
  HRESULT _stdcall RecordCount([out, retval] long* Value);
  [propget, id(0x00000025)]
  HRESULT _stdcall RecordLength([out, retval] long* Value);
  [propget, id(0x00000026)]
  HRESULT _stdcall Stat([out, retval] eStatus* Value);
  [propput, id(0x00000026)]
  HRESULT _stdcall Stat([in] eStatus Value);
  [propget, id(0x00000027)]
  HRESULT _stdcall KeyNum([out, retval] short* Value);
  [propput, id(0x00000027)]
  HRESULT _stdcall KeyNum([in] short Value);
  [propget, id(0x00000021)]
  HRESULT _stdcall Vdbl([in] VARIANT Index, [out, retval] double* Value);
  [propput, id(0x00000021)]
  HRESULT _stdcall Vdbl([in] VARIANT Index, [in] double Value);
  [propget, id(0x00000028)]
  HRESULT _stdcall Vbin([in] VARIANT Index, [out, retval] BSTR* Value);
  [propput, id(0x00000028)]
  HRESULT _stdcall Vbin([in] VARIANT Index, [in] BSTR Value);
  [propget, id(0x00000029)]
  HRESULT _stdcall Filter([out, retval] BSTR* Value);
  [propput, id(0x00000029)]
  HRESULT _stdcall Filter([in] BSTR Value);
  [id(0x0000002A)]
  HRESULT _stdcall FindNext([in, defaultvalue(-1)] VARIANT_BOOL notIncCurrent);
  [id(0x0000002B)]
  HRESULT _stdcall FindPrev([in, defaultvalue(-1)] VARIANT_BOOL notIncCurrent);
  [id(0x0000002C)]
  HRESULT _stdcall FindFirst(void);
  [id(0x0000002D)]
  HRESULT _stdcall FindLast(void);
  [propget, id(0x0000000F)]
  HRESULT _stdcall V64([in] VARIANT Index, [out, retval] hyper* Value);
  [propput, id(0x0000000F)]
  HRESULT _stdcall V64([in] VARIANT Index, [in] hyper Value);
  [id(0x0000002E)]
  HRESULT _stdcall StepFirst([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x0000002F)]
  HRESULT _stdcall StepLast([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x00000032)]
  HRESULT _stdcall StepPrev([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x00000033)]
  HRESULT _stdcall StepNext([in, defaultvalue(LOCK_NONE)] eLockType lockBias);
  [id(0x000000C9)]
  HRESULT _stdcall BeginBulkInsert([in, defaultvalue(55535)] long Value);
  [id(0x000000CA)]
  HRESULT _stdcall CommitBulkInsert(void);
  [id(0x000000CB)]
  HRESULT _stdcall AbortBulkInsert(void);
  [propget, id(0x000000CC)]
  HRESULT _stdcall FilterRejectCount([out, retval] long* Value);
  [propput, id(0x000000CC)]
  HRESULT _stdcall FilterRejectCount([in] long Value);
  [propget, id(0x000000CD)]
  HRESULT _stdcall FilterGetCount([out, retval] long* Value);
  [propput, id(0x000000CD)]
  HRESULT _stdcall FilterGetCount([in] long Value);
  [id(0x000000CE)]
  HRESULT _stdcall Field([in] VARIANT Index, [out, retval] IField** Value);
  [propget, id(0x000000CF)]
  HRESULT _stdcall CanDelete([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000D0)]
  HRESULT _stdcall CanInsert([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000D1)]
  HRESULT _stdcall CanRead([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000D2)]
  HRESULT _stdcall CanWrite([out, retval] VARIANT_BOOL* Value);
  [id(0x000000D3)]
  HRESULT _stdcall ClearOwnerName(void);
  [id(0x000000D4)]
  HRESULT _stdcall CreateIndex([in, defaultvalue(0)] VARIANT_BOOL specifyKeyNum);
  [id(0x000000D5)]
  HRESULT _stdcall DropIndex([in, defaultvalue(0)] VARIANT_BOOL norenumber);
  [propget, id(0x000000D6)]
  HRESULT _stdcall Datalen([out, retval] unsigned int* Value);
  [propget, id(0x000000D7)]
  HRESULT _stdcall WriteImageLen([out, retval] unsigned int* Value);
  [propget, id(0x000000D8)]
  HRESULT _stdcall IsOpen([out, retval] VARIANT_BOOL* Value);
  [id(0x000000D9)]
  HRESULT _stdcall SetAccessRights([in] unsigned char curd);
  [id(0x000000DA)]
  HRESULT _stdcall SetOwnerName([in] BSTR* name, [in, defaultvalue(0)] short enctype);
  [id(0x000000DB)]
  HRESULT _stdcall TdapErr([in]OLE_HANDLE hWnd, [out, retval] BSTR* Value);
  [id(0x000000DC)]
  HRESULT _stdcall Unlock_([in, defaultvalue(0)] unsigned int bm);
  [propget, id(0x000000DD)]
  HRESULT _stdcall BlobFieldUsed([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000DF)]
  HRESULT _stdcall BookmarkFindCurrent([out, retval] unsigned int* Value);
  [propget, id(0x000000F0)]
  HRESULT _stdcall BookMarksCount([out, retval] int* Value);
  [id(0x000000F1)]
  HRESULT _stdcall Find([in] eFindType FindType);
  [propget, id(0x000000F2)]
  HRESULT _stdcall RecordHash([out, retval] unsigned int* Value);
  [propget, id(0x000000F3)]
  HRESULT _stdcall LogicalToString([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000F3)]
  HRESULT _stdcall LogicalToString([in] VARIANT_BOOL Value);
  [propget, id(0x000000F4)]
  HRESULT _stdcall TrimPadChar([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000F4)]
  HRESULT _stdcall TrimPadChar([in] VARIANT_BOOL Value);
  [propget, id(0x000000F5)]
  HRESULT _stdcall UsePadChar([out, retval] VARIANT_BOOL* Value);
  [propput, id(0x000000F5)]
  HRESULT _stdcall UsePadChar([in] VARIANT_BOOL Value);
  [id(0x000000F6)]
  HRESULT _stdcall MoveBookmarksId([in] long Value);
  [propget, id(0x000000F7)]
  HRESULT _stdcall MyDateTimeValueByBtrv([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x000000F8)]
  HRESULT _stdcall ValiableFormatType([out, retval] VARIANT_BOOL* Value);
  [id(0x000000F9)]
  HRESULT _stdcall SmartUpdate(void);


};
[
	object,
	uuid(C459B95E-1EB4-4670-B251-F074168153ED),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface ITableDef : IDispatch
{
  [propget, id(0x00000003)]
  HRESULT _stdcall FieldCount([out, retval] short* Value);
  [propget, id(0x00000004)]
  HRESULT _stdcall KeyCount([out, retval] short* Value);
  [propget, id(0x00000005)]
  HRESULT _stdcall PageSize([out, retval] short* Value);
  [propput, id(0x00000005)]
  HRESULT _stdcall PageSize([in] short Value);
  [propget, id(0x00000006)]
  HRESULT _stdcall PreAlloc([out, retval] short* Value);
  [propput, id(0x00000006)]
  HRESULT _stdcall PreAlloc([in] short Value);
  [propget, id(0x00000007)]
  HRESULT _stdcall FileName([out, retval] BSTR* Value);
  [propput, id(0x00000007)]
  HRESULT _stdcall FileName([in] BSTR Value);
  [propget, id(0x00000008)]
  HRESULT _stdcall TableName([out, retval] BSTR* Value);
  [propput, id(0x00000008)]
  HRESULT _stdcall TableName([in] BSTR Value);
  [propget, id(0x00000009)]
  HRESULT _stdcall Flags([out, retval] IFlags** Value);
  [propput, id(0x00000009)]
  HRESULT _stdcall Flags([in] IFlags* Value);
  [propget, id(0x0000000A)]
  HRESULT _stdcall PrimaryKeyNum([out, retval] unsigned char* Value);
  [propput, id(0x0000000A)]
  HRESULT _stdcall PrimaryKeyNum([in] unsigned char Value);
  [propget, id(0x0000000B), hidden]
  HRESULT _stdcall ParentKeyNum([out, retval] unsigned char* Value);
  [propput, id(0x0000000B), hidden]
  HRESULT _stdcall ParentKeyNum([in] unsigned char Value);
  [propget, id(0x0000000C), hidden]
  HRESULT _stdcall ReplicaKeyNum([out, retval] unsigned char* Value);
  [propput, id(0x0000000C), hidden]
  HRESULT _stdcall ReplicaKeyNum([in] unsigned char Value);
  [propget, id(0x0000000D)]
  HRESULT _stdcall OptionFlags([out, retval] IFlags** Value);
  [propput, id(0x0000000D)]
  HRESULT _stdcall OptionFlags([in] IFlags* Value);
  [propget, id(0x0000000E), hidden]
  HRESULT _stdcall IconIndex([out, retval] unsigned char* Value);
  [propput, id(0x0000000E), hidden]
  HRESULT _stdcall IconIndex([in] unsigned char Value);
  [propget, id(0x0000000F)]
  HRESULT _stdcall Id([out, retval] short* Value);
  [propput, id(0x0000000F)]
  HRESULT _stdcall Id([in] short Value);
  [propget, id(0x000000C9)]
  HRESULT _stdcall Charsetindex([out, retval] eCharset* Value);
  [propput, id(0x000000C9)]
  HRESULT _stdcall Charsetindex([in] eCharset Value);
  [propget, id(0x000000CC)]
  HRESULT _stdcall FixedRecordLen([out, retval] unsigned short* Value);
  [propput, id(0x000000CC)]
  HRESULT _stdcall FixedRecordLen([in] unsigned short Value);
  [propget, id(0x000000CD)]
  HRESULT _stdcall MaxRecordLen([out, retval] unsigned short* Value);
  [propput, id(0x000000CD)]
  HRESULT _stdcall MaxRecordLen([in] unsigned short Value);
  [propget, id(0x000000CF)]
  HRESULT _stdcall SchemaCodePage([out, retval] unsigned int* Value);
  [propput, id(0x000000CF)]
  HRESULT _stdcall SchemaCodePage([in] unsigned int Value);
  [propget, id(0x000000D0)]
  HRESULT _stdcall Version([out, retval] unsigned short* Value);
  [propget, id(0x000000CA)]
  HRESULT _stdcall FieldDef([in] short Index, [out, retval] IFieldDef** Value);
  [propget, id(0x000000CB)]
  HRESULT _stdcall KeyDef([in] short Index, [out, retval] IKeyDef** Value);
};
[
	object,
	uuid(B97808AB-5353-41EF-A41D-EF94967BCBE2),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface IFieldDef : IDispatch
{
  [propget, id(0x00000001)]
  HRESULT _stdcall Name([out, retval] BSTR* Value);
  [propput, id(0x00000001)]
  HRESULT _stdcall Name([in] BSTR Value);
  [propget, id(0x00000002)]
  HRESULT _stdcall Type([out, retval] eFieldType* Value);
  [propput, id(0x00000002)]
  HRESULT _stdcall Type([in] eFieldType Value);
  [propget, id(0x00000003)]
  HRESULT _stdcall Len([out, retval] short* Value);
  [propput, id(0x00000003)]
  HRESULT _stdcall Len([in] short Value);
  [propget, id(0x00000004)]
  HRESULT _stdcall Decimals([out, retval] unsigned char* Value);
  [propput, id(0x00000004)]
  HRESULT _stdcall Decimals([in] unsigned char Value);
  [propget, id(0x00000005)]
  HRESULT _stdcall Max([out, retval] double* Value);
  [propput, id(0x00000005)]
  HRESULT _stdcall Max([in] double Value);
  [propget, id(0x00000006)]
  HRESULT _stdcall Min([out, retval] double* Value);
  [propput, id(0x00000006)]
  HRESULT _stdcall Min([in] double Value);
  [propget, id(0x00000007)]
  HRESULT _stdcall DefValue([out, retval] double* Value);
  [propput, id(0x00000007)]
  HRESULT _stdcall DefValue([in] double Value);
  [propget, id(0x00000008), hidden]
  HRESULT _stdcall LookTable([out, retval] unsigned char* Value);
  [propput, id(0x00000008), hidden]
  HRESULT _stdcall LookTable([in] unsigned char Value);
  [propget, id(0x00000009), hidden]
  HRESULT _stdcall LookField([out, retval] unsigned char* Value);
  [propput, id(0x00000009), hidden]
  HRESULT _stdcall LookField([in] unsigned char Value);
  [propget, id(0x0000000A), hidden]
  HRESULT _stdcall LookViewField([in] short Index, [out, retval] unsigned char* Value);
  [propput, id(0x0000000A), hidden]
  HRESULT _stdcall LookViewField([in] short Index, [in] unsigned char Value);
  [propget, id(0x0000000B), hidden]
  HRESULT _stdcall EnableFlags([out, retval] IFlags** Value);
  [propput, id(0x0000000B), hidden]
  HRESULT _stdcall EnableFlags([in] IFlags* Value);
  [propget, id(0x0000000C)]
  HRESULT _stdcall Keylen([out, retval] unsigned short* Value);
  [propput, id(0x0000000C)]
  HRESULT _stdcall Keylen([in] unsigned short Value);
  [propget, id(0x0000000D)]
  HRESULT _stdcall NullValue([out, retval] unsigned short* Value);
  [propput, id(0x0000000D)]
  HRESULT _stdcall NullValue([in] unsigned short Value);
  [propget, id(0x0000000E)]
  HRESULT _stdcall Align([out, retval] unsigned int* Value);
  [propget, id(0x0000000F)]
  HRESULT _stdcall TypeName([out, retval] BSTR* Value);
  [propget, id(0x00000010)]
  HRESULT _stdcall IsStringType([out, retval] VARIANT_BOOL* Value);
  [propget, id(0x00000011)]
  HRESULT _stdcall CharsetIndex([out, retval] eCharset* Value);
  [propput, id(0x00000011)]
  HRESULT _stdcall CharsetIndex([in] eCharset Value);
  [propget, id(0x00000012)]
  HRESULT _stdcall CodePage([out, retval] unsigned int* Value);
  [propget, id(0x00000013)]
  HRESULT _stdcall CharNum([out, retval] unsigned int* Value);
  [id(0x00000014)]
  HRESULT _stdcall SetLenByCharnum([in] unsigned short Value);



};
[
	object,
	uuid(AE15153A-87D9-4A6F-B17D-31695BA24B35),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface IKeyDef : IDispatch
{
  [propget, id(0x00000001)]
  HRESULT _stdcall SegmentCount([out, retval] unsigned char* Value);
  [propput, id(0x00000001)]
  HRESULT _stdcall SegmentCount([in] unsigned char Value);
  [id(0x000000C9)]
  HRESULT _stdcall Segments([in] short Index, [out, retval] IKeySegment** Value);

};
[
	object,
	uuid(1777FC4B-FE81-4FF8-9FF0-92D160CA6C9E),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface IFlags : IDispatch
{
  [propget, id(0x00000001)]
  HRESULT _stdcall Bits([in] short Index, [out, retval] VARIANT_BOOL* Value);
  [propput, id(0x00000001)]
  HRESULT _stdcall Bits([in] short Index, [in] VARIANT_BOOL Value);
  [id(0x000000C9)]
  HRESULT _stdcall All([out] unsigned short* Value);
  [id(0x000000CA)]
  HRESULT _stdcall GetBit([in] short Index, [out, retval] VARIANT_BOOL* Value);
  [id(0x000000CB)]
  HRESULT _stdcall SetBit([in] short Index, [in] VARIANT_BOOL Value);
};



[
	object,
	uuid(8DCAB5C6-AFCC-4BED-8D06-7044F0CCB3A3),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface IKeySegment : IDispatch
{
  [propget, id(0x00000001)]
  HRESULT _stdcall FieldNum([out, retval] unsigned char* Value);
  [propput, id(0x00000001)]
  HRESULT _stdcall FieldNum([in] unsigned char Value);
  [propget, id(0x00000002)]
  HRESULT _stdcall Flags([out, retval] IFlags** Value);
  [propput, id(0x00000002)]
  HRESULT _stdcall Flags([in] IFlags* Value);


};
[
	object,
	uuid(775F02E3-CCD0-49A0-986F-F4A517ABD7ED),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface IField : IDispatch
{
  [propget, id(0x000000C9)]
  HRESULT _stdcall Text([out, retval] BSTR* Value);
  [propput, id(0x000000C9)]
  HRESULT _stdcall Text([in] BSTR Value);
  [propget, id(0x000000CA)]
  HRESULT _stdcall Vlng([out, retval] int* Value);
  [propput, id(0x000000CA)]
  HRESULT _stdcall Vlng([in] int Value);
  [propget, id(0x000000CB)]
  HRESULT _stdcall V64([out, retval] hyper* Value);
  [propput, id(0x000000CB)]
  HRESULT _stdcall V64([in] hyper Value);
  [propget, id(0x000000CC)]
  HRESULT _stdcall Vdbl([out, retval] double* Value);
  [propput, id(0x000000CC)]
  HRESULT _stdcall Vdbl([in] double Value);
  [propget, id(0x000000CD)]
  HRESULT _stdcall Vbin([out, retval] BSTR* Value);
  [propput, id(0x000000CD)]
  HRESULT _stdcall Vbin([in] BSTR Value);
};

[
	object,
	uuid(775F02E3-CCD0-49A0-986F-F4A517ABD7EF),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface ITdVersion : IDispatch
{
  [propget, id(1)]
  HRESULT _stdcall MajorVersion([out, retval] short* Value);
  [propput, id(1)]
  HRESULT _stdcall MajorVersion([in] short Value);
  [propget, id(2)]
  HRESULT _stdcall MinorVersion([out, retval] short* Value);
  [propput, id(2)]
  HRESULT _stdcall MinorVersion([in] short Value);
  [propget, id(3)]
  HRESULT _stdcall Type([out, retval] short* Value);
  [propput, id(3)]
  HRESULT _stdcall Type([in] short Value);
  [id(4)]
  HRESULT _stdcall ModuleTypeString([out, retval] BSTR* Value);
  [id(5)]
  HRESULT _stdcall ModuleVersionShortString([out, retval] BSTR* Value);

};

[
	uuid(3B712514-E2EF-4040-8A3C-BCACB839EB3E),
	version(1.0),
]

library transactd
{
  importlib("stdole2.tlb");
  [
	uuid(530AC521-AB85-4139-8F78-CA56F8B7722F)		
  ]
  dispinterface _IDatabaseEvents
  {	
	properties:
	methods:
		[id(1)] 
		HRESULT OnCopyData(IDatabase* db, int recordCount, int count, VARIANT_BOOL* cancel);
		[id(2)] 
		HRESULT OnDeleteRecord(IDatabase* db, ITable* tb, VARIANT_BOOL* Value);
		[id(3)] 
		HRESULT OnSchemaMgrFn(IDatabase* db, short* Value);
  };
  [
    uuid(1DF73F19-D216-47A4-847D-8CD1279E1077)
  ]
  coclass Database
  {
    [default] interface IDatabase;
	[default, source] dispinterface _IDatabaseEvents;
	
  };
  
  [
    uuid(9B3CAC13-FCB8-42E1-993C-D81645B40FEF)
    ,noncreatable
  ]
  coclass DbDef
  {
    [default] interface IDbDef;
  };
  [
    uuid(4B8E64CA-F963-408C-AC4E-C1F9556738D4)
    ,noncreatable
  ]
  coclass Table
  {
    [default] interface ITable;
  };
  [
    uuid(D2115BB4-48CE-461C-A1C1-324DD12C37EE)
    ,noncreatable
  ]
  coclass TableDef
  {
    [default] interface ITableDef;
  };
  [
    uuid(42AE202D-A721-45A6-BB5C-2074101A8751)
    ,noncreatable
  ]
  coclass FieldDef
  {
    [default] interface IFieldDef;

  };
  [
    uuid(38DDBD32-27D5-41C5-AAE6-B6D2D4CF0F0D)
    ,noncreatable
  ]
  coclass KeyDef
  {
    [default] interface IKeyDef;
  };
  [
    uuid(27968808-D981-4DEC-9937-A8E6A71714A8)
    ,noncreatable
  ]
  coclass Flags
  {
    [default] interface IFlags;
  };


  [
    uuid(DEC4DD3C-C661-4C41-8F6C-F579187CF2C9)
    ,noncreatable
  ]
  coclass KeySegment
  {
    [default] interface IKeySegment;
  };
  [
    uuid(692ADBB5-B156-48A6-8A32-3A6C31586698)
    ,noncreatable
  ]
  coclass Field
  {
    [default] interface IField;
  };
	
  [
    uuid(692ADBB5-B156-48A6-8A32-3A6C31586699)
    ,noncreatable
  ]
  coclass TdVersion
  {
    [default] interface ITdVersion;
  };
  
 

};

import "shobjidl.idl";