Компоненты IBX
Внимание! Перед использованием компонент, для
правильного отображения форматов и правильной работы
EditFormat, необходимо установить системные переменные:
DefaultFormatSettings.ThousandSeparator := ' ';//пробел
FormatSettings.ThousandSeparator := ' ';//пробел
FormatSettings.DateSeparator := '.';
версия 2.2.4
Исправления в модуле IBUtils, все вхождения функции AnsiUpperCase заменены на
UTF8UpperCase.
версия 2.2.3
TIBDataSet добавлено свойство CancelActon: Boolean (по умолчанию True), оно
работает совместно с AutoCommit и срабатывает при вызове TIBDataSet.Cancel, если
при отмене записи UpdateTransaction.inTransaction то к транзакции
будут применены действия в соответствии со значением свойства
UpdateTransaction.DefaultAction для завершения транзакции. Например может
возникнуть
ситуация: при вызове метода Post, UpdateTransaction стартует транзакцию, но на
стороне сервера обнаруживается ошибка и возникает исключение и
TIBDataSet.Post не завершается, набор данных остается в состоянии
редактирования. Пользователь отменяет запись, которой не удалось сделать Post,
но UpdateTransaction остается активной (можно увидеть в мониторе транзакций).
Учитывая параметры, с которыми стартует UpdateTranscation, видно,
что транзакция влияет на Oldest Active Transaction (OAT), она просто застряет до
тех пор пока жив сам TIBDataSet, либо в результате следующей
операции с этой-же транзакцией не будет выполнен Commit или Rolback. Но до тех
пор пока транзакция в активном состоянии, будут накапливаться
версии записей, причем не связанные напрямую с данной транзакцией т.к. OAT
застряла и не движется, это приведет к чрезмерному потреблению ресурсов
сервера и замедлению работы.
версия 2.2.2
Добавлена поддержка параметра транзакции isc_tpb_lock_timeout. Доступен только
для FireBird версии 2.1 и выше. Применяется совместно с парметром
isc_tpb_wait. Параметр isc_tpb_lock_timeout указывает время ожидания в секундах,
в случае, если изменяемая запись заблокирована другой транзакцией,
по истечении этого времени ожидания будет выдана ошибка блокировки. Если
isc_tpb_lock_timeout не указан, время ожидания когда конкурирующая
транзакция отпустит запись с параметром isc_tpb_wait будет бесконечным.
Применение, в параметрах транзакции указать lock_timeout=10
(здесь 10 - количество секунд ожидания). Переделан редактор компонента
TIBTransaction, в нем доступен пункт "FB wirte", в котором wait применяется
совместно с lock_timeout.
версия 2.2.1
TIBCustomDataSet.DefFormats добавлено EditDate, EditDateTime, EditTime
TIBCustomDataSet.DetailConditions добавлено [dcForseMasterPost], еслу у
TIBCustomDataSet назначен DataSource.DataSet
и DetailConditions содержит dcForseMasterPost, то перед изменением данных если
DataSource.DataSet.state in [dsInsert, dsEdit],
то это вызовет DataSource.DataSet.Post
версия 2.2
Исправлен редактор компонента TIBDatabase, в него добавлено поле LibraryName,
где можно указать путь к клиентской библиотеке.
Иправлено тестирование подключения при нажатии на кнопку Test.
Улучшен механизм Master-Detail в TIBCustomDataSet. Раньше, любое событие в
DataMaster приводило к переоткрытию набора данных
Detail. Сейчас Detail переоткрывается, только если в Master сменилась строка.
Добавлено свойство DetailConditions: TDetailConditions [dcForceOpenClose,
dcForceMasterRefresh]. Если у TIBDataSet установлено
dcForceOpenClose и назначен DataSource.DataSet, то при открытии и закрытии
DataSource.DataSet сам TIBDataSet вместе с ним открывается и
закрывается, если назначено dcForceMasterRefresh, то после Post и Delete в
TIBDataSet вызвается DataSource.DataSet.Refresh.
версия 2.1.1
TIBCustomService свойство LibraryName добавлено stored LibNameStored
версия 2.1
Улучшена работа свойства DefValueFromSrv - если True то при добавлении новой
записи получает значения по умолчанию
заданные для полей при создании таблицы. Улучшение связано с тем, что значения
по умолчанию считываются не только из
тех, что определены при создании поля, но и из доменов.
версия 2.0.9
Исправления в TIBCustomDataSet. Исправлена ошибка, которая могла приводить к
UpdateTransaction.RollBack в случае закрытия набора данных, даже если
AutoCommit = False и существуют другие компоненты, использующие эту транзакцию.
версия 2.0.8
Исправления в компоеннте TIBCustomDataSet. Изенены форматы для числовых полей.
ВНИМАНИЕ! Чтобы отображение форматов работало правильно, в вашей программе,
перед
началом работы, вы должны установить глобальную системную переменную
DefaultFormatSettings.ThousandSeparator := ' '; //Пробел
версия 2.0.6
Исправления в компоеннте TIBCustomDataSet в InternalRefresh в коде с выбором
транзаккции для обновления данных.
В некоторых случаях нужная транзакция (читающая или пишущая) выбиралась не
правильно.
версия 2.0.5
Добавлено свойство DefValueFromServer: Boolean, если True то при добавлении
записи будет подставлять значения
поля заданные по умолчанию на стороне сервера при создании таблицы.
версия 2.0.2
Исправлен не работающий TIBDatabase.CreateDatabase
Исправлена работа с TIBBlobStream.
+ function TIBCustomDataSet.FN(FieldName): TField; для упрощения доступа к полю
по имени.
версия 2.0.1
TIBCustomDataSet
+property AutoErrorEvent: Boolean. Если True, то в при открытии набора данных,
на события OnPostError и OnDeleteError
(если обработчики у них отсутствуют) назначаются обработчики событий, которые в
случае ошибки автоматически для
UpdateTransaction выполняют RollBack.
Исправления в TIBStringField.
Исправлена ошибка в TIBDatabase.SetDefaultTransaction которая могла приводить к
краху на 64 битных системах.
версия 2.0
Изменения в организации доступа к API FireBird. В предыдущей версии, независимо
от того какое количество компонентов
TIBDataBase используется в программе, существовал единый метод загрузки
клиентской библиотеки, а это значит, что
работа из программы была возможна только с серверами одной и той же версии,
нельзя было загрузить 2 разные
клиентские библиотеки. Работа с компонентами была возможна, только если
предварительно удалось загрузить клиентскую
библиотеку. В версии 2.0 каждый компонент TIBDatabase получил персональный
механизм манипулирования и доступа к
клиентской библиотеке, загрузка библиотеки происходит при установке соединения с
базой, при разрыве соединения,
библиотека освобождается.
В компонент TIBDatabase добавлено свойство LibraryName - в котором указывкается
имя библиотеки. Поиск и загрузка
библиотеки происходит исключительно по указанному имени. Имя может быть указано
с полным путем и без. Если
путь не указан, поиск библиотеки происходит в папке с выполняемой программой. В
свойстве LibraryName
по умолчанию присутствует строка: Для windows - 'fbclient.dll', для Linux - 'fbclient.so'.
Переделан метод получения значения генератора в TIBGenerator. Добавлено свойство
GenerateFor_0: Boolean по умолчанию
True. Это позволяет генерить значение не только когда в поле пусто, но и когда
там 0.
Исправлена сортировка в TIBCustomDataSet. Если в
запросе присутствовали русские буквы запрос для сортировки модифицировался не
правильно.
версия 1.0.13
Изменения в TIBCustomDataSet. изменен метод InternalPost, в случае, если после
выполнения модифицирующего
запроса требуется Refresh текущей записи, то он выполняется после Commit пишущей
транзакции. Учитывая то, что
QRefresh сам выбирает себе транзакцию (если активна UpdateTransaction то
используется она, иначе используется Transaction),
то в случае с Autocommit, все вызовы Refresh пойдут через читающую транзакцию.
версия 1.0.12
Изменения в TIBCustomDataSet. Изменен метод FullRefresh.
Изменения TIBXSQLVAR. Изменен метод SetAsVariant
версия 1.0.11
Изменения в TIBCustomDataSet. Методы Prepare всех SQL запросов проходят через
читающую транзакцию, не
зависимо от UpdateTransaction.
версия 1.0.10
улучшен/исправлен метод TIBDataSet.RefreshAll
Исправлен баг в TIBDataSet с назначением EditFormat для TNumericField и его
производных, если отсутствует
дробная часть (поле для целого числа).
версия 1.0.9
В TIBCustomDataSet добавлено свойство AutoFetchAll: Boolean; Если свойство
установлено в True, то после открытия
набора данных автоматически вызывается FetchAll. Это особенно актуально, если
используется AutoSort,
который вызывает переоткрытие набора данных, и каждый раз требуется получить все
записи с сервера.
Версия 1.0.8.
Исправлены ошибки.
Добавлено свойство OrderFields, с помощью которого можно упорядочить данные по
любому полю.
Внимание! Этот метод не производит локальную сортировку данных в буфере, а
изменяет SQL запрос
в QSelect, добавляя или изменяя инструкцию ORDER BY.
изменен метод Locate, в нем UpperCase заменены на UTF8UpperCase, найденная
строка центрируется.
версия 1.0.7
Изменения в этой версии
Компонент TIBDatabase:
Добавлено свойство DefaultUpdTransaction: TIBTransaction
Компонент TIBCustomDataSet:
При установке поля Database, свойство UpdateTransaction устанавливается
автоматически как из Database.DefaultUpdTransaction
версия 1.0.6
Изменения в этой версии:
Компонент TIBCustomDataSet:
Добавлено свойство UpdateTransaction, с помощью которого работа с базой
происходит в рамках 2х транзакций. SelectSQL будет использовать
Transaction, у этой транзакции рекомендуется назначить следующие параметры:
read
read_committed
rec_version
nowait
С этими параметрами транзакция стартует в режиме только чтение и фактически в
состоянии Commit,
поэтому может жить сколь угодно долго, не оказывая ни какого влияния на работу
базы.
Короткие "пишущие" запросы из InsertSQL, ModifySQL, DeleteSQL будут использовать
UpdateTransaction, для неё
рекомендуется назначить следующие параметры:
write
wait
no_rec_version
read_committed
Это наиболее оптимальный вариант чтобы избежать DeadLock.
RefreshSQL использует транзакции по следующему
алгоритму: Если (UpdateTranscation.InTransacton = True) то
используется UdateTransaction иначе используется Transaction.
После выполнения запроса из InsertSQL, ModifySQL, DeleteSQL, до завершения
транзакции данные текущей записи
автоматически перечитываются с помощью RefreshSQL, поэтому в UpdateTransaction
добавлен параметр read_commited.
Изменен редактор компонента TIBTransaction, в нем вариант Read Commited
вписывает первый набор параметров для чтения,
добавлен вариант Read-write, который вписывает второй набор параметров для
пишущих запросов.
Добавлены свойства AutoStartTransaction и AutoCommit
Добавлена эмуляция Boolean полей и автотримирование строковых полей (TIBCustomDataSet.AutTrim)
Добавлена поддержка выражений RETURNING FIELD в Insert и Update запросах,
поддержка возвращаемых значений
из EXECUTE PROCEDURE, поддержка выражения EXECUTE BLOCK.
В TIBCustomDataSet вложен класс DefFormats для управления форматами
TDateTimeField и TNumericField (и от них производных),
для задания определенного формата конкретного поля (TBooleanField, TNumericField)
добавлено свойство
FieldsFormats: TStings, в нем для задания формата
для поля MYFIELD нужно указать:
MYFIELD=# ### ##0.0000
Добавлено свойство EditFormats которое задает для конкретных полей: EditFormat
для TNumericField и EditMask для остальных.
Пример:
MYDATEFIELD=00.00.0000
Автор изменений Копнин Юрий.
http://www.visual-t.ru