¬се бесплатно
    ¬се ссылки на файлы, расположенные на страницах сайта, добавлены пользовател€ми и доступны дл€ бесплатного скачивани€. «а содержание этих файлов администраци€ сайта ответственности не несет.



¬опросы
   ак показать balloon tooltips в программе
    атегори€: ѕриложение
  ќпределение размера файла
    атегори€: ‘айлова€ система
  ”далить свой же exe-шник
    атегори€: ѕриложение
  ѕроцедуры и функции дл€ рабты с файлами
    атегори€: ‘айлова€ система
  ѕрограммно скрыть MainMenu
    атегори€:  омпоненты
   ак получить код HTM страницы зна€ ее URL
    атегори€: »нтернет и —ети
  ”паковать *.mdb-файл
    атегори€: Ѕазы данных
  «амена подстроки в строке
    атегори€: “екст и строки
  »зменить структуру ABS (AbsoluteDB)
    атегори€: Ѕазы данных
  —охранить документ Word как RTF на DELPHI
    атегори€: ‘айлова€ система

FIBPlus. —войства и методы. TpFIBDataset

  << Ќазад к ќглавлению   


явл€етс€ потомком TDataSet и поддерживает все его методы и свойства. «десь будут перечислены только специфические свойства TpFIBDataSet.

—войства

Active
—мотрите справку по TDataSet.

Filter
—мотрите описание свойства в справке по Delphi/C++Builder, оно ничем не отличаетс€ от свойств в TDataSet.

FilterOptions
—мотрите описание свойства с справке по Delphi/C++Builder, оно ничем не отличаетс€ от свойств в TDataSet.

AllowedUpdateKinds
ќбъ€вленные как
TUpdateKind = (ukModify, ukInsert, ukDelete);
TUpdateKinds = set of TUpdateKind;

Ёто свойство позвол€ет задать режим обновлени€ датасета. ukModify определ€ет, будут ли производитьс€ модификации датасета, ukInsert вставки и ukDelete удалени€. ≈сли опци€ выключена, но в момент операции библиотека будет вызвать тихое исключение Abort, то операци€ не будет выполн€тьс€.

AutoCalcFields
«начение опции аналогично значению опции дл€ TDataSet.

AutoCommit
≈сли опци€ установлена в True, то, в зависимости от настроек UpdateTransaction, после каждой модифицирующей операции Insert/Update/Delete будет вызыватьс€ принудительный Commit/CommitRetaining.

AutoUpdateOptions
ќчень важна€ группа опций. ≈сли понимать, как работает данна€ группа опций, можно избежать значительного количества проблем.

TAutoUpdateOptions= class (TPersistent)
property AutoParamsToFields: Boolean .. default False;
property AutoReWriteSqls: Boolean .. default False;
property CanChangeSQLs: Boolean .. default False;
property GeneratorName: string;
property GeneratorStep: Integer .. default 1;
property KeyFields: string;
property ParamsToFieldsLinks: TStrings;
property SeparateBlobUpdate: Boolean .. default False;
property UpdateOnlyModifiedFields: Boolean .. default False;
property UpdateTableName: string;
property WhenGetGenID: TWhenGetGenID .. default wgNever;
property UseExecuteBlock:Boolean;
property UseReturningFields: TSetReturningFields; end;
TWhenGetGenID=(wgNever,wgOnNewRecord,wgBeforePost);


≈сли опци€ AutoRewriteSQLs установлена в True, то, при наличии пустых SQLText дл€ InsertSQL, UpdateSQL, DeleteSQL и RefreshSQL, будет автоматически производитьс€ их генераци€ на основе KeyFields, UpdateTableName.
≈сли опци€ CanChangeSQLs установлена в True, то разрешена перезапись непустых SQL.

ќпции GeneratorName и GeneratorStep задают, соответственно, им€ и шаг генератора

ќпци€ KeyFields содержит список ключевых полей

ќпци€ SeparateBlobUpdate управл€ет записью BLOB полей в базу данных. ≈сли эта опци€ установлена в True, то сначала будет производитьс€ запись строки без BLOB пол€, а затем, в случае успеха, будет записыватьс€ само BLOB поле.

≈сли опци€ UpdateOnlyModifiedFields установлена в True и если также установлены —anChangeSQLs, то дл€ каждой операции обновлени€ будет формироватьс€ новый SQL-запрос, в котором будут представлены только реально измененные пол€.

UpdateTableName должна содержать им€ обновл€емой таблицы

WhenGetGenId позвол€ет задать режим использовани€ генератора: никогда, на новую запись, непосредственно перед операцией Post.

ParamsToFieldsLinks - представл€ет собой ¬Ђкарту соответств般ї между пол€ми запроса и параметрами. ≈сли это свойство заполнено, то при вставке новой записи, автоматически указанные пол€ будут заполнены значени€ми соответствующих параметров. ќсобенно актуально это свойство дл€ деталь-датасета в режиме мастер деталь.

AutoParamsToFields - если содержит значение True то ParamsToFieldsLinks будет заполнен автоматически.

UseExecuteBlock : –аботает только при CachedUpdates=True.≈сли включено,то при ApplyUpdates,ApplyUpdToBase будут генеритьс€ запросы типа EXECUTE BLOCK. “.е. изменени€ будут посылатьс€ в базу не дл€ каждой записи отдельно, а пачками по 255 записей.

UseReturningFields : ”казывает использовать ли дл€ генерации UpdateSQL,InsertSQL секцию RETURNING, что позвол€ет после выполнени€ модифицирующего запроса частично ¬Ђосвежить¬ї запись без выполнени€ метода Refresh. (работает начина€ с файрберд 2.0) »меет три возможных значени€.

rfAll - включать в секцию RETURNING все пол€
rfKeyFields - включать в секцию RETURNING только ключевые пол€
rfBlobFields- включать в секцию RETURNING Blob пол€.

“.е., при использовании настроек AutoUpdateOptions FIBPlus позвол€ет избавитьс€ от генерации SQL в режиме design time и переложить эту задачу на врем€ исполнени€ программы. ƒл€ этого нужно лишь приписать им€ обновл€емой таблицы и ключевое поле.

ƒанные код вз€т из примера AutoUpdateOptions:
pFIBDataSet1.SelectSQL.Text := 'SELECT * FROM EMPLOYEE'; 
pFIBDataSet1.AutoUpdateOptions.AutoReWriteSqls := True;
pFIBDataSet1.AutoUpdateOptions.CanChangeSQLs  := True;
pFIBDataSet1.AutoUpdateOptions.UpdateOnlyModifiedFields := True;
'EMPLOYEE'; 'EMP_NO'; 'EMP_NO_GEN'; wgBeforePost;
pFIBDataSet1.AutoUpdateOptions.UpdateTableName
pFIBDataSet1.AutoUpdateOptions.KeyFields
pFIBDataSet1.AutoUpdateOptions.GeneratorName
pFIBDataSet1.AutoUpdateOptions.WhenGetGenID
pFIBDataSet1.Open;


CachedUpdates
Ёто свойство соответствует аналогичному свойству компонента TDataSet, подробнее смотри руководство пользовател€ тему ¬Ђ»спользование кэшированных изменений¬ї.

CacheModelOptions
Ёто ¬Ђреволюционное¬ї новшество FIBPlus. »спользу€ эту опцию, ¬ы можете выбрать модель хранени€ кеша датасета. ѕодробное описание работы в режиме ограниченного кеша описано в разделе ...

TCacheModelOptions = class(TPersistent)
property CacheModelKind: TCacheModelKind default cmkStandard;
property BufferChunks: Integer default vBufferCacheSize;
property PlanForDescSQLs:string;
property BlobCacheLimit:integer; end;
TCacheModelKind=(cmkStandard,cmkLimitedBufferSize);


CacheModelKind может принимать значение cmkStandard cmkLimitedBuffersSize. ѕри установлении этой опции в cmkLimitedBuffersSize датасет будет загружать в пам€ть приложени€ столько записей, сколько установлено в свойстве BuffersChunks. ¬ дополнении к этому можно указать план дл€ выполнени€ обратных запросов (быстрое извлечение последних записей выборки). BlobCacheLimit вАУ указывает максимальное число блобов удерживаемых в кэше.

Conditions
ѕодробнее о дополнительных услови€х читайте в –уководстве пользовател€.

Container
ѕодробнее об использовании контейнеров смотрите описание компонента TpFIBDatasetContainer.

Database
Ёто свойство используетс€ дл€ подключени€ датасета к базе данных.

DataSet_ID
—войство позвол€ет задать код датасета, хран€щегос€ в репозитории. ≈сли значение свойства отлично от нул€, то при открытии датасета будет произведена выгрузка настроек из репозитори€ датасетов и заполнено свойство Description. ѕодробнее о использовании репозиториев FIBPlus читайте в разделе ¬Ђ–епозитории FIBPlus¬ї а также смотрите демонстрационные примеры XXXRepository

Description
Ёто свойство описание датасета, которое используетс€ в репозитории датасетов.

DefaultFormats
Ёта группа опций позвол€ет задать форматы отображени€ стандартных полей дл€ этого датасета. ќписание выгл€дит следующим образом:
TFormatFields = class(TPersistent) property DateTimeDisplayFormat: string; 
property NumericDisplayFormat: string; property NumericEditFormat: string;
property DisplayFormatDate: string; property DisplayFormatTime: string;
end;


“.е., вы можете задать формат отображени€ дл€ полей
TDateTimeField/TDataField/TTimeField, отображени€ и редактировани€ TnumericField.
ѕодробнее см. в руководство пользовател€

DetailConditions
Ёто группа опций облегчает работу в режиме master-detail. ¬от ее описание:
TDetailCondition=(dcForceOpen,dcIgnoreMasterClose,dcForceMasterRefresh, dcWaitEndMasterScroll);
TDetailConditions= set of TDetailCondition;


dcForceOpen - если эта опци€ включена, то детальные датасет будет открыватьс€ автоматически при открытии мастера dcIgnoreMasterClose опци€ означает, что детальный датасет не будет закрыватьс€ в случае закрыти€ мастера dcForceMasterRefresh при обновлении детального датасета будет производитьс€ обновление мастер-датасета вАУ будет вызыватьс€ его RefreshSQL dcWaitEndMasterScroll опци€ означает, что при прокрутке мастера выжидаетс€ некоторое врем€ и только потом происходит переоткрытие детали. ќпци€ позвол€ет избежать лишней работы при прокрутке мастер-датасета

FieldOriginalRule
Ёто свойство позвол€ет руководить заполнением свойства TField.Origin и может принимать несколько значений:

TfieldOriginRule =(forNoRule, forTableAndFieldName, forClientFieldName, forTableAliasAndFieldName);

«начени€ми, соответственно, €вл€ютс€: не заполн€ть, дл€ таблицы и имени пол€, просто им€ пол€ на клиенте, дл€ алиаса таблицы и имени пол€. —войство Origin заполн€етс€ только в режиме выполнени€ программы.

Options
Ёта группа опций - одна из основных и необходимых дл€ понимани€ тонкостей работы с TpFIBDataSet. ќписание группы опций:

TpFIBDsOption = (poTrimCharFields, poRefreshAfterPost, poRefreshDeletedRecord, poStartTransaction, poAutoFormatFields, poProtectedEdit, poKeepSorting, poPersistentSorting, poVisibleRecno, poNoForceIsNull, poFetchAll, poFreeHandlesAfterClose, poCacheCalcFields);
TpFIBDsOptions= set of TpFIBDsOption;


poStartTransaction -стартовать транзакцию при открытии датасета, если она не активна
poTrimCharFields -усекать концевые пробелы дл€ полей типа CHAR/VARCHAR
poRefreshAfterPost -выполн€ть RefreshSQL, после фиксации изменений в Ѕƒ, после метода Post;
poRefreshDeletedRecord - удал€ть из кеша запись после выполнени€ RefreshSQL, если тот не вернул записи
poAutoFormatFields -использовать автоматическое форматирование дл€ датасета
poProtectedEdit -использовать защищенное редактирование (подробнее описано в разделе «ащищенное редактирование)
poKeepSorting - помещать добавленные либо измененные записи в правильную позицию буфера, котора€ отвечает локальной сортировке датасета. ѕодробнее работа с локальной сортировкой будет рассмотрена в разделе Ћокальна€ сортировка.
poPersistentSorting -сохран€ть сортировку и восстанавливать при следующем открытии датасета.
poVisibleRecno - при включенной опции добавл€етс€ поле RecNo
poNoForceIsNull - если опци€ выключена, то дл€ параметров в случае если они NULL условие where вида FIELD1 = :FIELD1 будет замен€тс€ на where FIELD IS NULL. ¬ некоторых случа€х такое поведение может быть нежелательно. Ќапример, если нужно возвратить информацию о типе параметра, следует включить эту опцию.
poFetchAll - при включенной опции будет производитьс€ полный fetch данных, что может потребоватьс€, например, дл€ справочников
poFreeHandlesAfterClose - эта опци€ отвечает за то, чтобы автоматически сразу же после закрыти€ запроса (модифицирующий запрос, либо селективный после fetch всех записей) вызывалось автоматическое
освобождени€ ресурсов, св€занных с запросом FreeHandle
poCacheCalcFields - при включенной опции будут кэшироватьс€ вычисл€емые и лукап пол€.
poUseSelectForLock - при включенной опции, дл€ создани€ локирующего запроса будет примен€тьс€ синтаксис SELECT 1 FROM TABLE1 FOR UPDATE WITH LOCK

PrepareOptions
Ёто также ключевые опции дл€ тонкой настройки работы датасета
TpPrepareOption = (pfSetRequiredFields, pfSetReadOnlyFields, pfImportDefaultValues, psUseBooleanField, psUseGuidField, psSQLINT64ToBCD, psApplyRepositary, psGetOrderInfo, psAskRecordCount, psCanEditComputedFields, psSetEmptyStrToNull, psSupportUnicodeBlobs, psUseLargeIntField);
TpPrepareOptions=set of TpPrepareOption;


pfSetRequiredFieldsвАУ если включено то взаполн€тьс€ свойство Required. ƒл€ NOT NULL True, дл€ остальных False. (Ёта опци€ не вызывает дополнительные запросы к базе)

pfSetReadOnlyFields вАУ ≈сли включено, то те пол€ датасета, которые не участвуют в модифицирующих запросах, автоматически станов€тс€ ReadOnly. “.е. их нельз€ будет измен€ть даже в буфере датасета.  роме того станов€тс€ ReadOnly те пол€, которые €вл€ютс€ калькулируемыми на сервере. (Ёта опци€ вызывает дополнительные запросы к базе, с целью вы€снить какие пол€ €вл€ютс€ server-calculated)

pfImportDefaultValues вАУ ≈сли имеют значение по умолчанию, DefaultExpression.
включено, то те пол€ датасета, которые в базе автоматически получат соответствующее значение в
свойство DefaultExpression. Ёто свойство используетс€ при Insert/Append новой записи. (Ёта опци€ вызывает дополнительные запросы к базе, с целью получени€ текста значени€ по умолчанию)

pfImportDefaultValues вАУ ≈сли включено, то те пол€ датасета, которые в базе имеют значение по умолчанию, автоматически получат соответствующее значение в свойство DefaultExpression. Ёто свойство используетс€ при Insert/Append новой записи. (Ёта опци€ вызывает дополнительные запросы к базе, с целью получени€ текста значени€ по умолчанию)

psUseBooleanField вАУ ≈сли включено, то датасет сможет использовать Boolean пол€. ѕодробнее см. в теме ¬Ђ»спользование уникальных типов полей¬ї. (Ёта опци€ вызывает дополнительные запросы к базе, с целью получени€ домена пол€)

psUseGuidField вАУ ≈сли включено, то датасет сможет использовать GUID пол€. ѕодробнее см. в теме ¬Ђ»спользование уникальных типов полей¬ї (Ёта опци€ вызывает дополнительные запросы к базе, с целью получени€ домена пол€

psSQLINT64ToBCD вАУ ≈сли включено, то датасет будет использовать TBCDField дл€ полей типа NUMERIC(x,y), где y больше 4. ѕодробнее см. в теме ¬Ђ»спользование уникальных типов полей¬ї (Ёта опци€ не вызывает дополнительные запросы к базе)
psApplyRepositary вАУ ≈сли включено, то датасет будет использовать репозиторий полей, дл€ заполнени€ таких свойств полей, как DisplayLabel,DisplayFormat, EditFormat и т.д. ѕодробней см в теме ¬Ђ–епозитории FIBPlus¬ї
psGetOrderInfo вАУ ≈сли включено, то при открытии датасета автоматически заполн€етс€ свойство датасета SortFields, которое в дальнейшем используетс€ в режимах ограниченного кэша и режимах ¬Ђудерживан般ї сортировки при операци€х вставки модификации записей. ѕодробнее см. в теме ¬ЂЋокальна€ сортировка¬ї. (Ёта опци€ не вызывает дополнительные запросы к базе)

psAskRecordCount вАУ ≈сли включено, то перед открытием датасета будет послан запрос к серверу, с целью вы€снить количество записей, которые попадают под услови€ запроса. ѕосле этого свойство RecordCount будет возвращать не количество отфетченных записей, а количество попавших под услови€ запроса.

psSetEmptyStrToNull вАУ ≈сли включено, то если строковое поле содержит пустую строку, и эта запись модифицирована, то при применении изменений к базе, дл€ этого пол€ будет отправлено Null значение. Ќеобходимость этой опции св€зана с тем, что стандартные DB—ontrols не могут показать, или прин€ть Null значение. ќно в них отображаетс€ именно как пуста€ строка.

psUseLargeIntField вАУ ≈сли включено, то пол€ типа BIGINT, NUMERIC(18,0) будут представлены классом TFIBLargeField. ≈сли выключено, то они будут представлены классом TFIBBCDField.
“акже дл€ PrepareOptions и Options есть редакторы, облегчающие комплексную настройку датасета. ѕомимо этого, в инструменте FIBPlusTools эти опции можно настроить дл€ компонентов TpFIBDataSet, вновь добавл€емых в проект.

RefreshTransactionKind
Ёто свойство позвол€ет задать, в какой транзакции (читающей или обновл€ющей) будет вызватьс€ RefreshSQL. ѕодробнее см. в теме о режиме разделенных транзакций.

SQLs
Ёто свойство содержит тексты SQL-запросов.

SQLScreenCursor
Ёто свойство позвол€ет задать курсор экрана дл€ долгих операций датасета.

Transaction
Ёто свойство возвращает транзакцию, в которой производитс€ чтение данных.

UniDirectional
≈сли это свойство установлено в True, ваш датасет станет однонаправленным и не будет кэшировать результаты выполнени€. ¬ каждый момент будет доступна лишь одна запись. Ёто может понадобитьс€, например, дл€ больших отчетов.

UpdateRecordTypes
Ёто свойство позвол€ет задать режим отображени€ записей в режиме кэшированные обновлений:
TCachedUpdateStatus =(cusUnmodified, cusModified, cusInserted,cusDeleted,
cusUninserted, cusDeletedApplied);
TFIBUpdateRecordTypes = set of TCachedUpdateStatus;

ѕоддерживаютс€ следующие режимы отображени€ записей: отображение немодифицировавшихс€; модифицировавшихс€; вставленных; удаленных; удаленных, с уже применным удалением.

UpdateTransaction
Ёто свойство задает транзакцию, в которой будут производитьс€ модифицирующие запросы

—обыти€

–ассмотрим событи€, уникальные дл€ TpFIBDataSet. —обыти€ TDataSet смотрите в справке по Delphi. ћногие событи€ пон€тны без описани€, мы же обратим внимание на некоторые из них.

AfterEndTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);

AfterEndUpdateTransaction
procedure TForm1.pFIBDataSet1AfterEndUpdateTransaction(EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);

AfterFetchRecord
procedure (FromQuery: TFIBQuery; RecordNumber: Integer; var StopFetching: Boolean);

AfterStartTransaction
procedure (Sender: Tobject);

AfterStartUpdateTransaction
procedure TForm1.pFIBDataSet1AfterStartUpdateTransaction(Sender: TObject);

BeforeEndTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);

BeforeEndUpdateTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);

BeforeFetchRecord
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);

BeforeStartTransaction
procedure (Sender: Tobject);

BeforeStartUpdateTransaction
procedure (Sender: Tobject);

DatabaseDisconnected
procedure (Sender: Tobject);

DatabaseDisconnecting
procedure (Sender: Tobject);

DatabaseFree
procedure (Sender: Tobject);

OnApplyDefaultValue
procedure (DataSet: TDataSet; Field: TField; var Applied: Boolean);
Ёто событие позвол€ет переопределить значени€ полей, выставленных по умолчанию, при вставке новой записи.

OnApplyFieldRepository
Ёто событие позвол€ет разработчику легко использовать свои собственные настройки в
репозитарии полей. Ќапример. ≈сли вам хочетс€ настраивать свойство EditMask, то
добавл€ете в таблицу репозитори€ поле EDIT_MASK. ј в обработчике
OnApplyFieldRepository пишете:
procedure TForm1.pFIBDataSet1ApplyFieldRepository(DataSet: TDataSet; Field: TField; FieldInfo: TpFIBFieldInfo);
begin
Field.EditMask:=FieldInfo.OtherInfo.Values['EDIT_MASK'];
end;


OnAskRecordCount
procedure (DataSet: TFIBDataSet; var SQLText: String);

Ёто событие возникает при выставленной опции psAskRecordCount и позвол€ет изменить SQL по умолчанию дл€ получени€ количества записей

OnCompareFieldValues
function (Field: TField; const S1, S2: Variant): Integer;
Ёто событие позвол€ет задать свою функцию сравнени€ дл€ локальной сортировки. –азличные кодировки (разные наборы символов) требуют разных методов сортировки. ѕоэтому дл€ кодировки None и Unicode_FSS подойдет стандартный метод, т.е., ничего переопредел€ть не нужно. ƒл€ национальных кодировок нужно ставить ANSI кодировку AnsiCompareString (функци€ датасета).

OnFieldChange
procedure OnFieldChange(Sender: Tfield);
Ёто событие возникает при изменении значени€ пол€.

OnFillClientBlob
procedure (DataSet: TFIBCustomDataSet; Field: TFIBBlobField; Stream: TFIBBlobStream);
Ёто событие вызываетс€ при заполнении BLOB пол€ на клиенте, в случае если свойство
TFIBBlobField.IsClientField=True

OnReadBlobField, OnWriteBlobField
procedure(Field:TBlobField;BlobSize:integer;Progress:integer;var Stop:boolean);
Ёти событи€ вызываютс€ при чтении-записи BLOB пол€ из Ѕƒ. ѕозвол€ют отобразить прогресс процесса чтени€-записи, а при чтении и прервать его в случае необходимости

OnLockError
procedure (DataSet: TDataSet; LockError: TLockStatus; var ErrorMessage: String; var Action: TDataAction);
Ёто событие возникает при выставленной опции poProtectedEdit, если попытка блокировани€ не была успешной. —мотрите раздел ¬Ђѕессимистическа€ блокировка¬ї руководства пользовател€.

NEW

OnLockSQLText
procedure (DataSet: TFIBDataSet; var SQLText: String);
Ёто событие возникает перед генерацией локирующего запроса, и позвол€ет разработчику самому задать текст этого запроса, не полага€сь на автогенерацию.

TransactionEnded
procedure (Sender: Tobject);
Ёто событие возникает после завершени€ транзакции.

TransactionEnding
procedure (Sender: Tobject);
Ёто событие возникает в момент завершени€ транзакции.

TransactionFree
procedure (Sender: Tobject);
Ёто событие возникает при высвобождении транзакции.

ћетоды

ƒанные методы используютс€ дл€ сравнени€ Ansi-строк:
function AnsiCompareString(Field:TField;const val1, val2: variant): Integer;
function StdAnsiCompareString(Field:TField;const S1, S2: variant): Integer;


StdAnsiCompareString вАУ задает следующий пор€док:
а ј б Ѕ
AnsiCompareString вАУ задает следующий пор€док:
ј Ѕ а б

ћетод соответствует разным сортировкам сервера при различных сочетани€х чарсетов (charset) и коллэйтов (collate).

function FN(const FieldName: string): TField;
function FBN(const FieldName: string): Tfield;

ƒанные функции аналогичны TdataSet.FieldByName, но более короткие в написании.

procedure ApplyConditions(Reopen :boolean = False);
Ётот метод примен€ет дополнительные услови€. ѕараметр Reopen указывает, нужно ли переоткрывать TpFIBDataSet

procedure CancelConditions;
Ётот метод отмен€ет все дополнительные услови€.

procedure CloseOpen(const DoFetchAll:boolean);
Ётот метод переоткрывает TpFIBDataSet. ѕараметр DoFetchAll указывает, делать ли полный fetch данных

procedure StartTransaction;
procedure BatchInput(InputObject: TFIBBatchInputStream; SQLKind: TpSQLKind=skInsert);
procedure BatchOutput(OutputObject: TFIBBatchOutputStream);

ѕодробности смотрите в разделе ѕакетные изменени€ –уководства пользовател€.

function CachedUpdateStatus: TcachedUpdateStatus;
Ётот метод позвол€ет получить статус записи при использовании кэшированных обновлений.

procedure CancelUpdates; virtual;
Ётот метод отмен€ет все изменени€, сделанные в режиме кэшированных обновлений

procedure FetchAll;
Ётот метод производит полный fetch датасета

procedure RevertRecord;
ѕри использовании режима CachedUpdates этот метод вовзращает запись к начальному состо€нию.

procedure Undelete;
Ётот метод отмен€ет удаление записи в режиме CachedUpdates.

procedure DisableScrollEvents; procedure EnableScrollEvents;
procedure DisableCloseOpenEvents; procedure
EnableCloseOpenEvents;

Ѕлокируют и деблокируют выполнение соответствующих событий.

procedure DisableCalcFields;
procedure EnableCalcFields;
Ѕлокируют и деблокируют выполнение событи€ OnCalcFields.

procedure DisableMasterSource;
procedure EnableMasterSource;
function MasterSourceDisabled:boolean;

—лужат дл€ временного отключени€ режима мастер-деталь. Ќапример
DetailDataSet.DisableMasterSource;
try
MasterDataSet.Edit;
MasterDataSet.FieldByName('ID').asInteger:=NewValue; MasterDataSet.Post; ChangeDetailDataSetLinkField(NewValue);
finally
DetailDataSet.EnableMasterSource;
end

при этом деталь датасет не переоткрываетс€.

function ArrayFieldValue(Field:TField):Variant;
procedure SetArrayValue(Field:TField;Value:Variant);
function GetElementFromValue( Field:TField; Indexes:array of integer):Variant;
procedure SetArrayElementValue(Field:TField;Value:Variant; Indexes:array of
integer );


ƒл€ получени€ подробностей смотрите раздел ¬Ђ–абота с пол€ми-массивами¬ї –уководства пользовател€.

function GetRelationTableName(Field:TObject):string;
Ётот метод возвращает им€ отношени€ дл€ пол€.

function GetRelationFieldName(Field:TObject):string;
Ётот метод возвращает им€ пол€.

procedure MoveRecord(OldRecno,NewRecno:integer); virtual;
Ётот метод перемещает поле в кеше с позиции OldRecNo на позицию NewRecNo

procedure DoSortEx(Fields: array of integer; Ordering: array of Boolean); overload;
procedure DoSortEx(Fields: TStrings; Ordering: array of Boolean); overload;
procedure DoSort(Fields: array of const; Ordering: array of Boolean); virtual;

ƒанные методы вАУ это методы локальной сортировки.

function CreateCalcField(FieldClass:TFieldClass; const aName,aFieldName:string;aSize:integer):TField; function CreateLookUpField(FieldClass:TFieldClass; const aName,aFieldName:string;aSize:integer; aLookupDataSet: TDataSet; const aKeyFields, aLookupKeyFields, aLookupResultField: string ):Tfield;
Ётот метод позвол€ет создавать в ран-тайме Calc-, Lookup-пол€.

function GetFieldOrigin(Fld:TField):string;
Ётот метод возвращает оригинальное им€ пол€ Tfield.Origin

function FieldByOrigin(const aOrigin:string):TField; overload;
function FieldByOrigin(const TableName,FieldName:string):TField; overload;

Ётот метод получает объект-поле по оригинальному имени

function FieldByRelName(const Fname:string):TField;
Ётот метод возвращает первое поле дл€ 'Select AAA as Name from Table1' FieldByRelName(вАШAAAвАЩ).

function ReadySelectText:string;
Ётот метод позвол€ет увидеть запрос, который в действительности отправл€етс€ на сервер.
ѕолезен при работе с дополнительными услови€ми.

function TableAliasForField(const aFieldName:string):string;
Ётот метод возвращает псевдоним таблицы дл€ пол€.

function SQLFieldName(const aFieldName:string):string;
Ётот метод возвращает реальное им€ пол€.

procedure RestoreMacroDefaultValues;
Ётот метод устанавливает значени€ макросов в значени€ по умолчанию (default).

function IsComputedField(Fld:Variant):boolean;
Ётот метод возвращает True, если поле вычисл€емое.

function DomainForField(Fld:Variant):string;
Ётот метод возвращает домен пол€.

function SortInfoIsValid:boolean;
Ётот метод провер€ет информаци€ о сортировке на валидность

function IsSortedField(Field:TField; var FieldSortOrder:TSortFieldInfo):boolean;
Ётот метод получает информацию о пор€дке сортировке дл€ пол€. “ип TsortFieldInfo объ€влен как:

TSortFieldInfo = record
FieldName: string;        //им€ пол€
InDataSetIndex: Integer;   // пор€дковый номер пол€ в датасете, т.е., индекс в коллекции Fields.
InOrderIndex: Integer;    // пор€дковый номер пол€ в order. “.е., например, дл€ order by 2,3,1 второе поле датасета будет первым в ордере. InDataSetIndex=1, а InOrderIndex=0 (нумераци€ с нул€)
Asc: Boolean;    //True, если пор€док полей по возрастанию остальными
end;

NullsFirst: Boolean;      //если установлено в Null значение перед


function SortFieldsCount:integer;
Ётот метод возвращает количество полей сортировки

function SortFieldInfo(OrderIndex:integer):TSortFieldInfo;
Ётот метод возвращает информацию о сортировке пол€ в позиции OrderIndex

function SortedFields:string;
Ётот метод возвращает строку с пол€ми сортировки, перечисленными через ';'.

function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; override;
Ётот метод сравнивает две закладки.

function BlobModified(Field: TField): boolean;
Ётот метод возвращает True, если BLOB поле Field было модифицировано.

function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override;
Ётот метод cоздает BLOB Stream дл€ пол€.

function GetRecordFieldInfo(Field: TField; var TableName,FieldName:string; var RecordKeyValues:TDynArray ):boolean;
Ётот метод получает информацию о поле.

function RecordFieldValue(Field:TField;RecNumber:integer):Variant; overload; function RecordFieldValue(Field:TField;aBookmark:TBookmark):Variant; overload;
Ёти методы возвращают значение пол€ и значение пол€ по закладке соответственно.

function Locate(const KeyFields: String; const KeyValues: Variant; Options:
TLocateOptions): Boolean; override;
function LocatePrior(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;
function LocateNext(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;

Ёто стандартна€ функци€ датасета: поиск записи, в дополнение к нему поиск следующей записи и поиск предыдущей.
function ExtLocate(const KeyFields: String; const KeyValues: Variant; Options:TExtLocateOptions): Boolean;
function ExtLocateNext(const KeyFields: String; const KeyValues: Variant;Options: TExtLocateOptions): Boolean;
function ExtLocatePrior(const KeyFields: String; const KeyValues: Variant; Options: TExtLocateOptions): Boolean;

Ёто уникальные функции FIBPlus, которые работают аналогично предыдущим, но
позвол€ют более гибкое управление.

TExtLocateOptions    =    (eloCaseInsensitive,    eloPartialKey,    eloWildCards,    eloInSortedDS, eloNearest, eloInFetchedRecords)


eloCaseInsensitive - игнорировать регистр при сравнении строк ;
eloPartialKey- поиск по частичному совпадению;
eloWildCards- поиск будет производитьс€ по маске (подобно тому, как в операторе LIKE);
eloInSortedDS - поиск производитс€ в отсортированном датасете. ≈сли датасет сортирован по этому полю, то поиск будет работать быстрее, чем обычно;
eloNearest - (только в комбинации с eloInSortedDS). ¬ результате операции, если
запись не будет найдена, указатель текущей записи будет спозиционирован на то место, где должен был быть результат;
eloInFetchedRecords - поиск производитс€ только в тех запис€х, которые уже fetched и наход€тс€ в буфере датасета.

procedure RefreshFilters;
Ётот метод обновл€ет фильтр.
ѕри обычной работе с фильтрами нужно делать так:

DataSet.Filtered := False;
DataSet.Filter := <строка фильтра>;
DataSet.Filtered := True;


»спользу€ FIBPlus, можно написать проще:
DataSet.Filter := <строка фильтра>;
DataSet.RefreshFilters;


procedure CacheDelete;
Ётот метод удал€ет запись из кэша датасета, но реального удалени€ не происходит.

procedure CacheOpen;
Ётот метод открывает датасет, но не делает fetch данных. Ќеобходимо, чтобы было подключение к Ѕƒ.

procedure RefreshClientFields(ForceCalc:boolean=True);
Ётот метод пересчитывает Calculated пол€ без переоткрыти€ запроса.

function CreateCalcFieldAs(Field:TField):TField;
Ётот метод создает вычисл€емое поле с таким же типом, как у пол€-параметра.

procedure CopyFieldsStructure(Source:TFIBCustomDataSet;RecreateFields:boolean);
Ётот метод копирует структуру полей из датасета-источника.

procedure CopyFieldsProperties(Source,Destination:TFIBCustomDataSet);
Ётот метод копирует свойства полей из одного датасета в другой.

procedure AssignProperties(Source:TFIBCustomDataSet);
Ётот метод копирует все свойства датасета-параметра.

procedure OpenAsClone(DataSet:TFIBCustomDataSet);
Ётот метод открывает датасет как копию датасета-параметра.

procedure Clone(DataSet:TFIBCustomDataSet; RecreateFields:boolean);
Ётот метод клонирует данные датасета-параметра.

function CanCloneFromDataSet(DataSet:TFIBCustomDataSet):boolean;
Ёта функци€ возвращает True, если может быть создана копи€ датасета-параметра

function PrimaryKeyFields(const TableName: string): string;
Ётот метод возвращает им€ ключевого пол€ дл€ таблицы.

function FetchNext(FetchCount:Dword):integer;
Ётот метод делает fetch следующих записей в количестве, указанном в параметре.

procedure ReopenLocate(const LocateFieldNames:string);
Ётот метод переоткрывает TpFIBDataSet с позиционированием на том же месте, где был курсор перед закрытием. ѕараметр определ€ет, по каким пол€м будет сделан последующий Locate. ≈сли полей несколько, их нужно писать через ';'

function AllFieldValues: variant;
Ётот метод возвращает вариантный массив вАУ текущую строку датасета.

procedure FullRefresh;
Ётот метод производит переоткрытие датасета. ѕри этом отключаютс€ методы, вли€ющие на
отображение: визуальные компоненты данных и прокрутка.

procedure RefreshFromQuery(RefreshQuery:TFIBQuery; const KeyFields:string; IsDeletedRecords:boolean=False; DoAdditionalRefreshRec:boolean=False);
Ётот метод позвол€ет освежит кэш датасета использу€ внешний компонент TFIBQuery. —начала производитс€ выполнение запроса записанного в RefreshQuery. ѕри этом параметры из RefreshQuery заполн€ютс€ значени€ми параметров датасета. ѕосле выполнени€ освежающего запроса, дл€ каждой записи возвращенной этим запросом производ€тс€ следующие действи€: »спользу€ пол€ KeyFields производитс€ поиск соответствующей записи в датасете. ≈сли запись найдена, то в зависимости от значени€ IsDeletedRecords, она либо корректируетс€ либо удал€етс€. ≈сли запись не найдена и IsDeletedRecords=False, то она вставл€етс€ в кэш датасета использу€ значени€ возвращенные в RefreshQuery. ѕоследний параметр DoAdditionalRefreshRec, говорит о том нужно ли произвести стандартный рефреш, дл€ каждой только что освеженной записи. ѕример использовани€ этого метода находитс€ в комплекте примеров в проекте RefreshDataSet.exe

function FieldsCount:integer;
Ётот метод возвращает количество полей.

function FieldName(FieldIndex:integer):string;
Ётот метод возвращает им€ пол€ по индексу.

function FieldExist(const FieldName:string; var FieldIndex:integer):boolean;
Ётот метод провер€ет существование пол€ в TDataSet, и в случае успеха (если поле существует) его индекс возвращаетс€ в FieldIndex.

function ParamExist(const ParamName:string; var ParamIndex:integer):boolean;
Ётот метод провер€ет существование параметра в TDataSet, и в случае успеха (если параметр существует) его индекс возвращаетс€ в FieldIndex.

function FieldValue(const FieldName:string; Old:boolean):variant; overload; function FieldValue(const FieldIndex:integer;Old:boolean):variant; overload;
Ётот метод возвращает значение пол€ по имени или индексу.

function ParamValue(const ParamName:string):variant; overload;
function ParamValue(const ParamIndex:integer):variant; overload;

Ётот метод возвращает значение параметра по индексу или имени

procedure SetParamValue(const ParamIndex:integer; aValue:Variant);
Ётот метод устанавливает значение параметра

function RecordCountFromSrv: integer; dynamic;
Ётот метод возвращает количество записей на сервере. »спользуетс€ дл€ получени€ реального количества записей на сервере, когда fetch выборки выполнен не до конца. “ак, например, этот метод используетс€ при опции psAskRecordCount.

function VisibleRecordCount: Integer;
Ётот метод возвращает количество видимых записей, например, в сетке данных.

function CanEdit: Boolean; override;
Ётот метод возвращает True, если датасет поддерживает операцию Edit;

function CanInsert: Boolean; override;
Ётот метод возвращает True, если датасет поддерживает операцию Insert;

function CanDelete: Boolean; override;
Ётот метод возвращает True, если датасет поддерживает операцию Delete.

function ExistActiveUO(KindUpdate: TUpdateKind): boolean;
function AddUpdateObject(Value: TpFIBUpdateObject): integer;
procedure RemoveUpdateObject(Value: TpFIBUpdateObject);

Ёти методы провер€ют существование дополнительного обработчика TpFIBUpdateObject, а
также удал€ют или добавл€ют дополнительный обработчик TpFIBUpdateObject.

function ParamByName(const ParamName: string): TFIBXSQLVAR;
Ётот метод возвращает параметр по имени.

function FindParam(const ParamName: string): TFIBXSQLVAR;
Ётот метод ищет параметр, в том числе, и на уровне макросов. ≈сли макросы содержат
параметры, то дл€ их заполнени€ нужно использовать именно этот метод.

function RecordStatus(RecNumber: integer): TupdateStatus;
Ётот метод возвращает статус дл€ кэшированных обновлений.

procedure CloneRecord(SrcRecord: integer; IgnoreFields: array of const);
Ётот метод копирует запись по индексу SrcRecord. ¬торой параметр указывает, какие пол€ игнорировать при клонировании (например, ключевые пол€)

procedure CloneCurRecord(IgnoreFields: array of const);
Ётот метод клонирует текущую запись.

procedure CommitUpdToCach;
procedure ApplyUpdToBase;
procedure ApplyUpdates;

Ёто методы дл€ кэшированных обновлений в дополнение к стандартным ApplyUpdates, CancelUpdates. —тандартные операции датасета неадекватно работают при фильтрации, поэтому рекомендуем использовать эти дополнительные методы. ѕодробнее смотри тему в руководстве пользовател€ ¬Ђ»спользование кэшированных изменений¬ї

procedure SaveToStream(Stream: TStream; SeekBegin: boolean);
procedure LoadFromStream(Stream: TStream; SeekBegin: boolean);
procedure SaveToFile(const FileName: string);
procedure LoadFromFile(const FileName: string);

Ёти методы позвол€ют сохранить, а затем загрузить кеш датасета в файл или в поток. ƒатасет должен быть подключен к Ѕƒ.

function LockRecord(RaiseErr: boolean= True): TlockStatus;
Ётот метод позвол€ет производить пессимистическое блокирование записи.

function FieldByFieldNo(FieldNo: Integer): Tfield;
Ётот метод возвращает поле по числовому параметру FieldNo

function ParamNameCount(const aParamName: string): integer;
Ётот метод возвращает количество уникальных имен параметров, если один и тот же
параметр используетс€ несколько раз.

function ParamCount: integer;
Ётот метод возвращает количество параметров.

procedure ExecUpdateObjects(KindUpdate: TUpdateKind; Buff: Pointer; aExecuteOrder: TFIBOrderExecUO);
Ётот метод выполн€ет дополнительные обновл€ющие запросы TpFIBUpdateObject, ассоциированные с датасетом.

procedure OpenWP(const ParamValues: array of Variant); overload;
procedure OpenWP(const ParamNames : string;const ParamValues: array of Variant);
overload;
procedure OpenWPS(const ParamSources: array of ISQLObject);
procedure ReOpenWP(const ParamValues: array of Variant); overload;
procedure ReOpenWP(const ParamNames : string;const ParamValues: array of
Variant