Class TmQuery (unit mQuery)

Inherits from

TDataSet

Constructors


constructor Create(AOwner: TComponent);

Public declarations


Functions

destructor Destroy;


procedure ExecSQL;


function AllocRecordBuffer: PChar;

Protected declarations

procedure FreeRecordBuffer(var Buffer: PChar);

if BlobFieldCount > 0 then Initialize(PBlobDataArray(Result + FBlobCacheOfs)[0], BlobFieldCount);

procedure GetBookmarkData(Buffer: PChar; Data: Pointer);

BookMarks

function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;


function GetCanModify: Boolean;


function GetFieldData(Field: TField; Buffer: Pointer): Boolean;

SQLSetPos(); InternalGotoBookmark(Buffer + FBookmarkOfs);

function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult;

if BlobFieldCount > 0 then Finalize(PBlobDataArray(Buffer + FBlobCacheOfs)[0], BlobFieldCount);

procedure InternalAddRecord(Buffer: Pointer; Append: Boolean);

function GetRecordSize: Word; override;

procedure InternalClose;

а bookmark прячется в нулевой колонке { InitBufferPointers(False); if CachedUpdates then begin AllocCachedUpdateBuffers(True); SetupCallBack(UpdateCallBackRequired); end; AllocKeyBuffers; DbiSetToBegin(FHandle); PrepareCursor; if Filter <> '' then FExprFilter := CreateExprFilter(Filter, FilterOptions, 0); if Assigned(OnFilterRecord) then FFuncFilter := CreateFuncFilter(@TBDEDataSet.

procedure InternalEdit;


procedure InternalFirst;

procedure InternalDelete; virtual; abstract;

dsFilter: RecBuf := FFilterBuffer; { dsNewValue: if FInUpdateCallback then RecBuf := FUpdateCBBuf.


procedure InternalInitFieldDefs;

procedure InternalGotoBookmark(Bookmark: Pointer); virtual; abstract; procedure InternalHandleException; virtual; abstract;

procedure InternalInitRecord(Buffer: PChar);

sqlres :=

procedure InternalLast;

sqlres :=

procedure InternalOpen;

Disconnect;

procedure InternalSetToRecord(Buffer: PChar);

procedure InternalPost; virtual; abstract;

ClearBlobCache(Buffer);


function IsCursorOpen: Boolean;

создаем описание полей

procedure SetBookmarkData(Buffer: PChar; Data: Pointer);


procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);


procedure SetFieldData(Field: TField; Buffer: Pointer);

IsBlank: LongBool;

procedure FreeStmt;

if ODBCDriverInfo( SQL_CURSOR_SENSITIVITY)=SQL_SENSITIVE then SetStmtOptions( SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_DYNAMIC);

function GetActiveRecBuf(var RecBuf: PChar): Boolean;

fkCalculated, fkLookup

procedure InitStmt;


procedure QueryChanged(Sender: TObject);


procedure SetDataBase(Value: TmDataBase);


procedure SetQuery(Value: TStrings);


Properties

property Active :

Published declarations

property AfterClose :


property AfterOpen :


property AfterScroll :


property AutoCalcFields :


property BeforeClose :


property BeforeOpen :


property BeforeScroll :


property DataBase : TmDataBase


property SQL : TStrings


Events

event OnCalcFields :


Variables

FCanModify : boolean;


FDataBase : TmDataBase;


FRecBufSize : Word;


FRecInfoOfs : Word;


FRecordSize : Word;


FSQL : TStrings;


hstmt : SQLHSTMT;

Private declarations


Constructors


constructor Create(AOwner: TComponent);

Public declarations


Functions


destructor Destroy;


procedure ExecSQL;


function AllocRecordBuffer: PChar;

Protected declarations


procedure FreeRecordBuffer(var Buffer: PChar);

if BlobFieldCount > 0 then Initialize(PBlobDataArray(Result + FBlobCacheOfs)[0], BlobFieldCount);


procedure GetBookmarkData(Buffer: PChar; Data: Pointer);

BookMarks


function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;


function GetCanModify: Boolean;


function GetFieldData(Field: TField; Buffer: Pointer): Boolean;

SQLSetPos(); InternalGotoBookmark(Buffer + FBookmarkOfs);


function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult;

if BlobFieldCount > 0 then Finalize(PBlobDataArray(Buffer + FBlobCacheOfs)[0], BlobFieldCount);


procedure InternalAddRecord(Buffer: Pointer; Append: Boolean);

function GetRecordSize: Word; override;


procedure InternalClose;

а bookmark прячется в нулевой колонке { InitBufferPointers(False); if CachedUpdates then begin AllocCachedUpdateBuffers(True); SetupCallBack(UpdateCallBackRequired); end; AllocKeyBuffers; DbiSetToBegin(FHandle); PrepareCursor; if Filter <> '' then FExprFilter := CreateExprFilter(Filter, FilterOptions, 0); if Assigned(OnFilterRecord) then FFuncFilter := CreateFuncFilter(@TBDEDataSet.RecordFilter, 1); if Filtered then ActivateFilters;


procedure InternalEdit;


procedure InternalFirst;

procedure InternalDelete; virtual; abstract;

dsFilter: RecBuf := FFilterBuffer; { dsNewValue: if FInUpdateCallback then RecBuf := FUpdateCBBuf.pNewRecBuf else RecBuf := ActiveBuffer; dsOldValue: if FInUpdateCallback then RecBuf := FUpdateCBBuf.pOldRecBuf else RecBuf := GetOldRecord;


procedure InternalInitFieldDefs;

procedure InternalGotoBookmark(Bookmark: Pointer); virtual; abstract; procedure InternalHandleException; virtual; abstract;


procedure InternalInitRecord(Buffer: PChar);

sqlres :=


procedure InternalLast;

sqlres :=


procedure InternalOpen;

Disconnect;


procedure InternalSetToRecord(Buffer: PChar);

procedure InternalPost; virtual; abstract;

ClearBlobCache(Buffer);


function IsCursorOpen: Boolean;

создаем описание полей


procedure SetBookmarkData(Buffer: PChar; Data: Pointer);


procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);


procedure SetFieldData(Field: TField; Buffer: Pointer);

IsBlank: LongBool;


procedure FreeStmt;

if ODBCDriverInfo( SQL_CURSOR_SENSITIVITY)=SQL_SENSITIVE then SetStmtOptions( SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_DYNAMIC);


function GetActiveRecBuf(var RecBuf: PChar): Boolean;

fkCalculated, fkLookup


procedure InitStmt;


procedure QueryChanged(Sender: TObject);


procedure SetDataBase(Value: TmDataBase);


procedure SetQuery(Value: TStrings);


Properties


property Active :

Published declarations


property AfterClose :


property AfterOpen :


property AfterScroll :


property AutoCalcFields :


property BeforeClose :


property BeforeOpen :


property BeforeScroll :


property DataBase : TmDataBase


property SQL : TStrings


Events


event OnCalcFields :


Variables


FCanModify : boolean;


FDataBase : TmDataBase;


FRecBufSize : Word;


FRecInfoOfs : Word;


FRecordSize : Word;


FSQL : TStrings;


hstmt : SQLHSTMT;

Private declarations