123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993 |
- //******************************************************************************
- //*** LUA SCRIPT FUNCTIONS ***
- //*** ***
- //*** (c) Massimo Magnano 2006 ***
- //*** ***
- //*** ***
- //******************************************************************************
- // File : Lua_DB.pas (rev. 2.0)
- //
- // Description : Access from Lua scripts to TDataset VCL Components
- // (at this time TQuery, TTable)
- //
- //******************************************************************************
- // Exported functions :
- //
- // Methods common to all TDataset classes
- // [descendent of TObject class (see Lua_object.pas)]
- // TDataset:FindField(string FieldName) return Field as TField.
- unit Lua_DB;
- interface
- uses Lua;
- procedure RegisterFunctions(L: Plua_State);
- implementation
- uses Classes, SysUtils, LuaUtils, Lua_Object, Lua_Classes,
- DB, DBTables, BDE, TypInfo, Variants;
- type
- // TComponent <- TDataset <- TBDEDataSet <- TDBDataSet <- TTable
- // <- TQuery
- // -------------------------------------------------------------
- // TLuaComponent <- TLuaDataset <- TLuaBDEDataSet <- TLuaDBDataSet <- TLuaTable
- // <- TLuaQuery
- //==============================================================================
- TLuaDataset = class (TLuaComponent)
- protected
- class function GetPublicPropertyAccessClass :TClass; override;
- public
- function GetArrayPropType(Name :String; index :Variant) :PTypeInfo; override;
- function GetArrayProp(Name :String; index :Variant) :Variant; override;
- function ActiveBuffer: String;
- procedure Append;
- procedure AppendRecord(const Values: array of const);
- function BookmarkValid(Bookmark: TBookmark): Boolean;
- procedure Cancel;
- procedure CheckBrowseMode;
- procedure ClearFields;
- procedure Close;
- function ControlsDisabled: Boolean;
- function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer;
- function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream;
- procedure CursorPosChanged;
- procedure Delete;
- procedure DisableControls;
- procedure Edit;
- procedure EnableControls;
- function FieldByName(const FieldName: string): TField;
- function FindField(const FieldName: string): TField;
- function FindFirst: Boolean;
- function FindLast: Boolean;
- function FindNext: Boolean;
- function FindPrior: Boolean;
- procedure First;
- procedure FreeBookmark(Bookmark: TBookmark);
- function GetBookmark: TBookmark;
- function GetCurrentRecord(Buffer: String): Boolean;
- procedure GetDetailDataSets(List: TList);
- procedure GetDetailLinkFields(MasterFields, DetailFields: TList);
- function GetBlobFieldData(FieldNo: Integer; var Buffer: TBlobByteData): Integer;
- function GetFieldData(Field: TField; Buffer: Pointer): Boolean; overload;
- function GetFieldData(FieldNo: Integer; Buffer: Pointer): Boolean; overload;
- function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; overload;
- procedure GetFieldList(List: TList; const FieldNames: string);
- procedure GetFieldNames(List: TStrings);
- procedure GotoBookmark(Bookmark: TBookmark);
- procedure Insert;
- procedure InsertRecord(const Values: array of const);
- function IsEmpty: Boolean;
- function IsLinkedTo(DataSource: TDataSource): Boolean;
- function IsSequenced: Boolean;
- procedure Last;
- function Locate(const KeyFields: string; const KeyValues: Variant;
- Options: TLocateOptions): Boolean;
- function Lookup(const KeyFields: string; const KeyValues: Variant;
- const ResultFields: string): Variant;
- function MoveBy(Distance: Integer): Integer;
- procedure Next;
- procedure Open;
- procedure Post;
- procedure Prior;
- procedure Refresh;
- procedure Resync(Mode: TResyncMode);
- procedure SetFields(const Values: array of const);
- function Translate(Src, Dest: String; ToOem: Boolean): Integer;
- procedure UpdateCursorPos;
- procedure UpdateRecord;
- function UpdateStatus: TUpdateStatus;
- end;
- TDatasetAccess = class(TDataset)
- published
- property AggFields;
- property Bof;
- property Bookmark;
- property CanModify;
- property DataSetField;
- property DataSource;
- property DefaultFields;
- property Designer;
- property Eof;
- property BlockReadSize;
- property FieldCount;
- property FieldDefs;
- property FieldDefList;
- property Fields;
- property FieldList;
- //property FieldValues[const FieldName: string]: Variant
- property Found;
- property IsUniDirectional;
- property Modified;
- property ObjectView;
- property RecordCount;
- property RecNo;
- property RecordSize;
- property SparseArrays;
- property State;
- property Filter;
- property Filtered;
- property FilterOptions;
- property Active;
- property AutoCalcFields;
- end;
- //==============================================================================
- TLuaBDEDataSet = class (TLuaDataset)
- protected
- class function GetPublicPropertyAccessClass :TClass; override;
- public
- (* function GetArrayPropType(Name :String; index :Variant) :PTypeInfo; override;
- function GetArrayProp(Name :String; index :Variant) :Variant; override;
- function GetElementType(Name :String) :PTypeInfo; override;
- function GetElement(Name :String) :Variant; override;
- *)
- procedure ApplyUpdates;
- procedure CancelUpdates;
- procedure CommitUpdates;
- function ConstraintCallBack(Req: DsInfoReq; var ADataSources: DataSources): DBIResult;
- function ConstraintsDisabled: Boolean;
- procedure DisableConstraints;
- procedure EnableConstraints;
- procedure FetchAll;
- procedure FlushBuffers;
- procedure GetIndexInfo;
- procedure RevertRecord;
- end;
- TBDEDataSetAccess = class(TBDEDataSet)
- published
- property CacheBlobs;
- property ExpIndex;
- //property Handle; Pointer
- property KeySize;
- //property Locale; Pointer
- property UpdateObject;
- property UpdatesPending;
- property UpdateRecordTypes;
- end;
- //==============================================================================
- TLuaDBDataSet = class (TLuaBDEDataSet)
- protected
- class function GetPublicPropertyAccessClass :TClass; override;
- public
- (* function GetArrayPropType(Name :String; index :Variant) :PTypeInfo; override;
- function GetArrayProp(Name :String; index :Variant) :Variant; override;
- function GetElementType(Name :String) :PTypeInfo; override;
- function GetElement(Name :String) :Variant; override;
- *)
- function CheckOpen(Status: DBIResult): Boolean;
- procedure CloseDatabase(Database: TDatabase);
- function OpenDatabase: TDatabase;
- end;
- TDBDataSetAccess = class(TDBDataSet)
- published
- property Database;
- //property DBHandle; Pointer
- //property DBLocale; Pointer
- property DBSession;
- //property Handle; Pointer
- end;
- //==============================================================================
- TLuaTable = class (TLuaDBDataSet)
- protected
- class function GetPublicPropertyAccessClass :TClass; override;
- public
- function GetArrayPropType(Name :String; index :Variant) :PTypeInfo; override;
- function GetArrayProp(Name :String; index :Variant) :Variant; override;
- function BatchMove(ASource: TBDEDataSet; AMode: TBatchMode): Longint;
- procedure AddIndex(const Name, Fields: string; Options: TIndexOptions;
- const DescFields: string = '');
- procedure ApplyRange;
- procedure CancelRange;
- procedure CloseIndexFile(const IndexFileName: string);
- procedure CreateTable;
- procedure DeleteIndex(const Name: string);
- procedure DeleteTable;
- procedure EditKey;
- procedure EditRangeEnd;
- procedure EditRangeStart;
- procedure EmptyTable;
- function FindKey(const KeyValues: array of const): Boolean;
- procedure FindNearest(const KeyValues: array of const);
- procedure GetIndexNames(List: TStrings);
- procedure GotoCurrent(Table: TTable);
- function GotoKey: Boolean;
- procedure GotoNearest;
- procedure LockTable(LockType: TLockType);
- procedure OpenIndexFile(const IndexName: string);
- procedure RenameTable(const NewTableName: string);
- procedure SetKey;
- procedure SetRange(const StartValues, EndValues: array of const);
- procedure SetRangeEnd;
- procedure SetRangeStart;
- procedure UnlockTable(LockType: TLockType);
- end;
- TTableAccess = class(TTable)
- published
- property Exists;
- property IndexFieldCount;
- //property IndexFields[Index: Integer]: TField;
- property KeyExclusive;
- property KeyFieldCount;
- property TableLevel;
- end;
- //==============================================================================
- TLuaQuery = class (TLuaDBDataSet)
- protected
- class function GetPublicPropertyAccessClass :TClass; override;
- public
- (* function GetArrayPropType(Name :String; index :Variant) :PTypeInfo; override;
- function GetArrayProp(Name :String; index :Variant) :Variant; override;
- function GetElementType(Name :String) :PTypeInfo; override;
- function GetElement(Name :String) :Variant; override;
- *)
- procedure ExecSQL;
- function ParamByName(const Value: string): TParam;
- procedure Prepare;
- procedure UnPrepare;
- end;
- TQueryAccess = class(TQuery)
- published
- property Prepared;
- property ParamCount;
- property Local;
- //property StmtHandle; Pointer
- property Text;
- property RowsAffected;
- //property SQLBinary; Pointer
- end;
- //==============================================================================
- TLuaField = class (TLuaComponent)
- protected
- class function GetPublicPropertyAccessClass :TClass; override;
- public
- procedure AssignValue(const Value: TVarRec);
- procedure Clear;
- procedure FocusControl;
- function GetData(Buffer: Pointer; NativeFormat: Boolean = True): Boolean;
- class function IsBlob: Boolean;
- function IsValidChar(InputChar: Char): Boolean;
- procedure RefreshLookupList;
- procedure SetData(Buffer: Pointer; NativeFormat: Boolean = True);
- procedure SetFieldType(Value: TFieldType);
- procedure Validate(Buffer: Pointer);
- end;
- TFieldAccess = class(TField)
- published
- property AsBCD;
- property AsBoolean;
- property AsCurrency;
- property AsDateTime;
- property AsSQLTimeStamp;
- property AsFloat;
- property AsInteger;
- property AsString;
- property AsVariant;
- property AttributeSet;
- property Calculated;
- property CanModify;
- property CurValue;
- property DataSet;
- property DataSize;
- property DataType;
- property DisplayName;
- property DisplayText;
- property EditMask;
- property EditMaskPtr;
- property FieldNo;
- property FullName;
- property IsIndexField;
- property IsNull;
- property Lookup;
- property LookupList;
- property NewValue;
- property Offset;
- property OldValue;
- property ParentField;
- property Size;
- property Text;
- //property ValidChars; Size of published set 'ValidChars' is >4 bytes
- property Value;
- end;
- procedure RegisterFunctions(L: Plua_State);
- begin
- Lua_Object.RegisterFunctions(L);
- end;
- { TLuaDataset }
- function TLuaDataset.GetArrayPropType(Name: String; index: Variant): PTypeInfo;
- begin
- Name :=Uppercase(Name);
- Result :=nil;
- if (Name='FIELDVALUES')
- then begin
- if (TDataset(InstanceObj).FieldValues[index]<>NULL)
- then Result :=TypeInfo(Variant);
- end
- else
- Result :=inherited GetArrayPropType(Name, index);
- end;
- function TLuaDataset.GetArrayProp(Name: String; index: Variant): Variant;
- begin
- if (Name='FIELDVALUES')
- then begin
- Result :=TDataset(InstanceObj).FieldValues[index]
- end
- else
- Result := inherited GetArrayProp(name, index)
- end;
- class function TLuaDataset.GetPublicPropertyAccessClass: TClass;
- begin
- Result :=TDatasetAccess;
- end;
- function TLuaDataset.FindLast: Boolean;
- begin
- Result :=TDataset(InstanceObj).FindLast;
- end;
- function TLuaDataset.FieldByName(const FieldName: string): TField;
- begin
- Result :=TDataset(InstanceObj).FieldByName(FieldName);
- end;
- function TLuaDataset.FindPrior: Boolean;
- begin
- Result :=TDataset(InstanceObj).FindPrior;
- end;
- function TLuaDataset.FindField(const FieldName: string): TField;
- begin
- Result :=TDataset(InstanceObj).FindField(FieldName);
- end;
- function TLuaDataset.FindFirst: Boolean;
- begin
- Result :=TDataset(InstanceObj).FindFirst;
- end;
- procedure TLuaDataset.First;
- begin
- TDataset(InstanceObj).First;
- end;
- function TLuaDataset.FindNext: Boolean;
- begin
- Result :=TDataset(InstanceObj).FindNext;
- end;
- function TLuaDataset.IsLinkedTo(DataSource: TDataSource): Boolean;
- begin
- Result :=TDataset(InstanceObj).IsLinkedTo(DataSource);
- end;
- procedure TLuaDataset.ClearFields;
- begin
- TDataset(InstanceObj).ClearFields;
- end;
- procedure TLuaDataset.CursorPosChanged;
- begin
- TDataset(InstanceObj).CursorPosChanged;
- end;
- function TLuaDataset.Lookup(const KeyFields: string; const KeyValues: Variant;
- const ResultFields: string): Variant;
- begin
- Result :=TDataset(InstanceObj).Lookup(KeyFields, KeyValues, ResultFields);
- end;
- procedure TLuaDataset.Last;
- begin
- TDataset(InstanceObj).Last;
- end;
- function TLuaDataset.Locate(const KeyFields: string; const KeyValues: Variant;
- Options: TLocateOptions): Boolean;
- begin
- Result :=TDataset(InstanceObj).Locate(KeyFields, KeyValues, Options);
- end;
- procedure TLuaDataset.SetFields(const Values: array of const);
- begin
- TDataset(InstanceObj).SetFields(Values);
- end;
- procedure TLuaDataset.CheckBrowseMode;
- begin
- TDataset(InstanceObj).CheckBrowseMode;
- end;
- function TLuaDataset.UpdateStatus: TUpdateStatus;
- begin
- Result :=TDataset(InstanceObj).UpdateStatus;
- end;
- function TLuaDataset.MoveBy(Distance: Integer): Integer;
- begin
- Result :=TDataset(InstanceObj).MoveBy(Distance);
- end;
- function TLuaDataset.IsSequenced: Boolean;
- begin
- Result :=TDataset(InstanceObj).IsSequenced;
- end;
- procedure TLuaDataset.Prior;
- begin
- TDataset(InstanceObj).Prior;
- end;
- procedure TLuaDataset.UpdateRecord;
- begin
- TDataset(InstanceObj).UpdateRecord;
- end;
- procedure TLuaDataset.Refresh;
- begin
- TDataset(InstanceObj).Refresh;
- end;
- procedure TLuaDataset.Open;
- begin
- TDataset(InstanceObj).Open;
- end;
- procedure TLuaDataset.DisableControls;
- begin
- TDataset(InstanceObj).DisableControls;
- end;
- procedure TLuaDataset.AppendRecord(const Values: array of const);
- begin
- TDataset(InstanceObj).AppendRecord(Values);
- end;
- procedure TLuaDataset.Cancel;
- begin
- TDataset(InstanceObj).Cancel;
- end;
- procedure TLuaDataset.Post;
- begin
- TDataset(InstanceObj).Post;
- end;
- procedure TLuaDataset.InsertRecord(const Values: array of const);
- begin
- TDataset(InstanceObj).InsertRecord(Values);
- end;
- function TLuaDataset.IsEmpty: Boolean;
- begin
- Result :=TDataset(InstanceObj).IsEmpty;
- end;
- procedure TLuaDataset.Close;
- begin
- TDataset(InstanceObj).Close;
- end;
- procedure TLuaDataset.EnableControls;
- begin
- TDataset(InstanceObj).EnableControls;
- end;
- procedure TLuaDataset.Delete;
- begin
- TDataset(InstanceObj).Delete;
- end;
- procedure TLuaDataset.Resync(Mode: TResyncMode);
- begin
- TDataset(InstanceObj).Resync(Mode);
- end;
- procedure TLuaDataset.Edit;
- begin
- TDataset(InstanceObj).Edit;
- end;
- procedure TLuaDataset.Append;
- begin
- TDataset(InstanceObj).Append;
- end;
- function TLuaDataset.ControlsDisabled: Boolean;
- begin
- Result :=TDataset(InstanceObj).ControlsDisabled;
- end;
- procedure TLuaDataset.UpdateCursorPos;
- begin
- TDataset(InstanceObj).UpdateCursorPos;
- end;
- procedure TLuaDataset.Next;
- begin
- TDataset(InstanceObj).Next;
- end;
- procedure TLuaDataset.Insert;
- begin
- TDataset(InstanceObj).Insert;
- end;
- procedure TLuaDataset.GetFieldList(List: TList; const FieldNames: string);
- begin
- TDataset(InstanceObj).GetFieldList(List, FieldNames);
- end;
- function TLuaDataset.GetFieldData(Field: TField; Buffer: Pointer;
- NativeFormat: Boolean): Boolean;
- begin
- Result :=TDataset(InstanceObj).GetFieldData(Field, Buffer, NativeFormat);
- end;
- function TLuaDataset.GetFieldData(FieldNo: Integer; Buffer: Pointer): Boolean;
- begin
- Result :=TDataset(InstanceObj).GetFieldData(FieldNo, Buffer);
- end;
- function TLuaDataset.GetFieldData(Field: TField; Buffer: Pointer): Boolean;
- begin
- Result :=TDataset(InstanceObj).GetFieldData(Field, Buffer);
- end;
- function TLuaDataset.CreateBlobStream(Field: TField;
- Mode: TBlobStreamMode): TStream;
- begin
- Result :=TDataset(InstanceObj).CreateBlobStream(Field, Mode);
- end;
- procedure TLuaDataset.GotoBookmark(Bookmark: TBookmark);
- begin
- TDataset(InstanceObj).GotoBookmark(Bookmark);
- end;
- function TLuaDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer;
- begin
- Result :=TDataset(InstanceObj).CompareBookmarks(Bookmark1, Bookmark2);
- end;
- function TLuaDataset.GetBookmark: TBookmark;
- begin
- Result :=TDataset(InstanceObj).GetBookmark;
- end;
- function TLuaDataset.GetCurrentRecord(Buffer: String): Boolean;
- begin
- Result :=TDataset(InstanceObj).GetCurrentRecord(PChar(Buffer));
- end;
- procedure TLuaDataset.GetDetailLinkFields(MasterFields, DetailFields: TList);
- begin
- TDataset(InstanceObj).GetDetailLinkFields(MasterFields, DetailFields);
- end;
- function TLuaDataset.BookmarkValid(Bookmark: TBookmark): Boolean;
- begin
- Result :=TDataset(InstanceObj).BookmarkValid(Bookmark);
- end;
- function TLuaDataset.Translate(Src, Dest: String; ToOem: Boolean): Integer;
- begin
- Result :=TDataset(InstanceObj).Translate(PChar(Src), PChar(Dest), ToOem);
- end;
- procedure TLuaDataset.FreeBookmark(Bookmark: TBookmark);
- begin
- TDataset(InstanceObj).FreeBookmark(Bookmark);
- end;
- function TLuaDataset.GetBlobFieldData(FieldNo: Integer;
- var Buffer: TBlobByteData): Integer;
- begin
- Result :=TDataset(InstanceObj).GetBlobFieldData(FieldNo, Buffer);
- end;
- procedure TLuaDataset.GetDetailDataSets(List: TList);
- begin
- TDataset(InstanceObj).GetDetailDataSets(List);
- end;
- function TLuaDataset.ActiveBuffer: String;
- begin
- Result :=TDataset(InstanceObj).ActiveBuffer;
- end;
- procedure TLuaDataset.GetFieldNames(List: TStrings);
- begin
- TDataset(InstanceObj).GetFieldNames(List);
- end;
- { TLuaBDEDataSet }
- class function TLuaBDEDataSet.GetPublicPropertyAccessClass: TClass;
- begin
- Result :=TBDEDataSetAccess;
- end;
- procedure TLuaBDEDataSet.CancelUpdates;
- begin
- TBDEDataset(InstanceObj).CancelUpdates;
- end;
- procedure TLuaBDEDataSet.ApplyUpdates;
- begin
- TBDEDataset(InstanceObj).ApplyUpdates;
- end;
- procedure TLuaBDEDataSet.CommitUpdates;
- begin
- TBDEDataset(InstanceObj).CommitUpdates;
- end;
- procedure TLuaBDEDataSet.DisableConstraints;
- begin
- TBDEDataset(InstanceObj).DisableConstraints;
- end;
- procedure TLuaBDEDataSet.FetchAll;
- begin
- TBDEDataset(InstanceObj).FetchAll;
- end;
- procedure TLuaBDEDataSet.EnableConstraints;
- begin
- TBDEDataset(InstanceObj).EnableConstraints;
- end;
- function TLuaBDEDataSet.ConstraintsDisabled: Boolean;
- begin
- Result :=TBDEDataset(InstanceObj).ConstraintsDisabled;
- end;
- procedure TLuaBDEDataSet.GetIndexInfo;
- begin
- TBDEDataset(InstanceObj).GetIndexInfo;
- end;
- function TLuaBDEDataSet.ConstraintCallBack(Req: DsInfoReq;
- var ADataSources: DataSources): DBIResult;
- begin
- Result :=TBDEDataset(InstanceObj).ConstraintCallBack(Req, ADataSources);
- end;
- procedure TLuaBDEDataSet.FlushBuffers;
- begin
- TBDEDataset(InstanceObj).FlushBuffers;
- end;
- procedure TLuaBDEDataSet.RevertRecord;
- begin
- TBDEDataset(InstanceObj).RevertRecord;
- end;
- { TLuaDBDataSet }
- class function TLuaDBDataSet.GetPublicPropertyAccessClass: TClass;
- begin
- Result :=TDBDataSetAccess;
- end;
- procedure TLuaDBDataSet.CloseDatabase(Database: TDatabase);
- begin
- TDBDataSet(InstanceObj).CloseDatabase(Database);
- end;
- function TLuaDBDataSet.CheckOpen(Status: DBIResult): Boolean;
- begin
- Result :=TDBDataSet(InstanceObj).CheckOpen(Status);
- end;
- function TLuaDBDataSet.OpenDatabase: TDatabase;
- begin
- Result :=TDBDataSet(InstanceObj).OpenDatabase;
- end;
- { TLuaTable }
- function TLuaTable.GetArrayPropType(Name: String; index: Variant): PTypeInfo;
- begin
- Name :=Uppercase(Name);
- Result :=nil;
- if (Name='INDEXFIELDS')
- then begin
- if (TTable(InstanceObj).IndexFields[index]<>nil)
- then Result :=TypeInfo(TField);
- end
- else
- Result :=inherited GetArrayPropType(Name, index);
- end;
- function TLuaTable.GetArrayProp(Name: String; index: Variant): Variant;
- begin
- if (Name='INDEXFIELDS')
- then begin
- if (TTable(InstanceObj).IndexFields[index]<>nil)
- then Result :=Integer(TTable(InstanceObj).IndexFields[index])
- else Result :=NULL;
- end
- else
- Result := inherited GetArrayProp(name, index)
- end;
- class function TLuaTable.GetPublicPropertyAccessClass: TClass;
- begin
- Result :=TTableAccess;
- end;
- procedure TLuaTable.SetRange(const StartValues, EndValues: array of const);
- begin
- TTable(InstanceObj).SetRange(StartValues, EndValues);
- end;
- procedure TLuaTable.GetIndexNames(List: TStrings);
- begin
- TTable(InstanceObj).GetIndexNames(List);
- end;
- procedure TLuaTable.SetKey;
- begin
- TTable(InstanceObj).SetKey;
- end;
- procedure TLuaTable.CreateTable;
- begin
- TTable(InstanceObj).CreateTable;
- end;
- procedure TLuaTable.GotoNearest;
- begin
- TTable(InstanceObj).GotoNearest;
- end;
- procedure TLuaTable.RenameTable(const NewTableName: string);
- begin
- TTable(InstanceObj).RenameTable(NewTableName);
- end;
- procedure TLuaTable.CloseIndexFile(const IndexFileName: string);
- begin
- TTable(InstanceObj).CloseIndexFile(IndexFileName);
- end;
- procedure TLuaTable.DeleteIndex(const Name: string);
- begin
- TTable(InstanceObj).DeleteIndex(Name);
- end;
- function TLuaTable.BatchMove(ASource: TBDEDataSet; AMode: TBatchMode): Longint;
- begin
- Result :=TTable(InstanceObj).BatchMove(ASource, AMode);
- end;
- procedure TLuaTable.EditRangeStart;
- begin
- TTable(InstanceObj).EditRangeStart;
- end;
- procedure TLuaTable.CancelRange;
- begin
- TTable(InstanceObj).CancelRange;
- end;
- function TLuaTable.GotoKey: Boolean;
- begin
- Result :=TTable(InstanceObj).GotoKey;
- end;
- procedure TLuaTable.ApplyRange;
- begin
- TTable(InstanceObj).ApplyRange;
- end;
- procedure TLuaTable.LockTable(LockType: TLockType);
- begin
- TTable(InstanceObj).LockTable(LockType);
- end;
- procedure TLuaTable.FindNearest(const KeyValues: array of const);
- begin
- TTable(InstanceObj).FindNearest(KeyValues);
- end;
- procedure TLuaTable.UnlockTable(LockType: TLockType);
- begin
- TTable(InstanceObj).UnlockTable(LockType);
- end;
- procedure TLuaTable.GotoCurrent(Table: TTable);
- begin
- TTable(InstanceObj).GotoCurrent(Table);
- end;
- procedure TLuaTable.SetRangeStart;
- begin
- TTable(InstanceObj).SetRangeStart;
- end;
- procedure TLuaTable.AddIndex(const Name, Fields: string; Options: TIndexOptions;
- const DescFields: string);
- begin
- TTable(InstanceObj).AddIndex(Name, Fields, Options, DescFields);
- end;
- procedure TLuaTable.EditRangeEnd;
- begin
- TTable(InstanceObj).EditRangeEnd;
- end;
- procedure TLuaTable.EditKey;
- begin
- TTable(InstanceObj).EditKey;
- end;
- procedure TLuaTable.DeleteTable;
- begin
- TTable(InstanceObj).DeleteTable;
- end;
- function TLuaTable.FindKey(const KeyValues: array of const): Boolean;
- begin
- Result :=TTable(InstanceObj).FindKey(KeyValues);
- end;
- procedure TLuaTable.EmptyTable;
- begin
- TTable(InstanceObj).EmptyTable;
- end;
- procedure TLuaTable.SetRangeEnd;
- begin
- TTable(InstanceObj).SetRangeEnd;
- end;
- procedure TLuaTable.OpenIndexFile(const IndexName: string);
- begin
- TTable(InstanceObj).OpenIndexFile(IndexName);
- end;
- { TLuaQuery }
- class function TLuaQuery.GetPublicPropertyAccessClass: TClass;
- begin
- Result :=TQueryAccess;
- end;
- procedure TLuaQuery.ExecSQL;
- begin
- TQuery(InstanceObj).ExecSQL;
- end;
- function TLuaQuery.ParamByName(const Value: string): TParam;
- begin
- Result :=TQuery(InstanceObj).ParamByName(Value);
- end;
- procedure TLuaQuery.Prepare;
- begin
- TQuery(InstanceObj).Prepare;
- end;
- procedure TLuaQuery.UnPrepare;
- begin
- TQuery(InstanceObj).UnPrepare;
- end;
- { TLuaField }
- class function TLuaField.GetPublicPropertyAccessClass: TClass;
- begin
- Result :=TFieldAccess;
- end;
- procedure TLuaField.AssignValue(const Value: TVarRec);
- begin
- TField(InstanceObj).AssignValue(Value);
- end;
- function TLuaField.GetData(Buffer: Pointer; NativeFormat: Boolean): Boolean;
- begin
- Result :=TField(InstanceObj).GetData(Buffer, NativeFormat);
- end;
- procedure TLuaField.FocusControl;
- begin
- TField(InstanceObj).FocusControl;
- end;
- procedure TLuaField.Clear;
- begin
- TField(InstanceObj).Clear;
- end;
- procedure TLuaField.SetData(Buffer: Pointer; NativeFormat: Boolean);
- begin
- TField(InstanceObj).SetData(Buffer, NativeFormat);
- end;
- procedure TLuaField.SetFieldType(Value: TFieldType);
- begin
- TField(InstanceObj).SetFieldType(Value);
- end;
- procedure TLuaField.Validate(Buffer: Pointer);
- begin
- TField(InstanceObj).Validate(Buffer);
- end;
- procedure TLuaField.RefreshLookupList;
- begin
- TField(InstanceObj).RefreshLookupList;
- end;
- class function TLuaField.IsBlob: Boolean;
- begin
- Result := False;
- end;
- function TLuaField.IsValidChar(InputChar: Char): Boolean;
- begin
- Result :=TField(InstanceObj).IsValidChar(InputChar);
- end;
- initialization
- Lua_Object.RegisterClass(TDataset, TLuaDataset);
- Lua_Object.RegisterClass(TBDEDataSet, TLuaBDEDataSet);
- Lua_Object.RegisterClass(TDBDataSet, TLuaDBDataSet);
- Lua_Object.RegisterClass(TTable, TLuaTable);
- Lua_Object.RegisterClass(TQuery, TLuaQuery);
- Lua_Object.RegisterClass(TField, TLuaField);
- end.
|