Class TmQuery (unit mQuery) |
Inherits from
TDataSet
constructor Create(AOwner: TComponent);
- Public declarations
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);
property Active :
Published declarations
property AfterClose :
property AfterOpen :
property AfterScroll :
property AutoCalcFields :
property BeforeClose :
property BeforeOpen :
property BeforeScroll :
property DataBase : TmDataBase
property SQL : TStrings
event OnCalcFields :
FCanModify : boolean;
FDataBase : TmDataBase;
FRecBufSize : Word;
FRecInfoOfs : Word;
FRecordSize : Word;
FSQL : TStrings;
hstmt : SQLHSTMT;
Private declarations
constructor Create(AOwner: TComponent);
Public declarations
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);
property Active :
Published declarations
property AfterClose :
property AfterOpen :
property AfterScroll :
property AutoCalcFields :
property BeforeClose :
property BeforeOpen :
property BeforeScroll :
property DataBase : TmDataBase
property SQL : TStrings
event OnCalcFields :
FCanModify : boolean;
FDataBase : TmDataBase;
FRecBufSize : Word;
FRecInfoOfs : Word;
FRecordSize : Word;
FSQL : TStrings;
hstmt : SQLHSTMT;
Private declarations