Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование от Чертенка.ру Выпуск 5. Компоненты FibPlus


Информационный Канал Subscribe.Ru

Доброго времени суток, уважаемые подписчики!

За прошедшую неделю в мире soft IT были замечены следующие интересные новости:

  1. НАСА променяет Internet Exporer на FireFox
  2. Коварный вирус раскрыл секретные коды 16 аэропортов Японии
  3. Skype 2.0 - теперь с поддержкой видео
  4. Microsoft оштрафован на 32 миллиона
  5. Сетевые "ловушки": новый способ борьбы с вирусами


В сегодняшнем выпуске мы раскажем о библиотеке FibPlus от Devrace.


FIBPlus - Fast InterBase Plus

FIBPlus - это мощная и в тоже время простая и удобная библиотека компонентов для Borland Borland Delphi, C++ Builder и Borland Kylix для прямого доступа к Borland InterBase и Firebird. Мы стараемся разрабатывать ее в соответствии с пожеланиями наших пользователей; каждый компонент, метод и свойство предназаначены для решения задач, с которыми каждый из вас сталкивается практически каждый день.

Системные требования и совместимость с другими продуктами

Не требует BDE и сторонних движков баз данных.
Совместима с Borland InterBase 4.x-7.0, Firebird и Yaffil.
Требует только GDS32.DLL.
Поддерживает Borland Delphi 3-7, Delphi 2005, Borland C++ Builder 3-6 и Borland Kylix 3.
Поддерживает любые стандартные (TDBGrid, TDBEdit, и т.д.) и сторонние визуальные data-aware контролы (InfoPower, DevExpress, EhLib, IntraWeb, ASTA, и т.д.)
Поддерживает любые генераторы отчетов: FastReport, QuickReport, ReportBuilder, и т.д.

Компоненты и инструменты

13 главных невизуальных компонентов: TpFIBDatabase, TpFIBTransaction, TpFIBDataSet, TpFIBQuery, TpFIBStoredProc, TpFIBUpdateObject, TDataSetContainer, TpFIBErrorHandler, TFIBSQLMonitor, TSIBFIBEventAlerter, TpFIBStatistic, TpFIBClientDataSet и TpFIBDataSetProvider.
11 дополнительных невизуальных компонентов для администрирования: TpFIBServerProperties, TpFIBConfigService, TpFIBLicensingService, TpFIBLogService, TpFIBStatisticalService, TpFIBBackupService, TpFIBRestoreService, TpFIBValidationService, TpFIBSecurityService, TpFIBInstall и TpFIBUnInstall. Компоненты администрирования требуют сервер InterBase, поддерживающий Services API.
Специальные design-time эксперты - FIBPlus Tools. FIBPlus Tools включает в себя FIBPlus Preferences и SQL Navigator. Все эксперты скомпилированы и доступны для скачивания. Зарегистрированная версия FIBPlus включает исходники FIBPlus Tools.

Особенности подключения к базе данных

Простое подключение к локальным и удаленным серверам InterBase при помощи TpFIBDatabase.
Поддержка SQLRole при подключении.
Полная поддержка SQLDialect 1 и SQLDialect 3 в приложениях, специальная опция UpperOldNames для более легкой миграции рабочих приложений на SQL Dialect 3.
Возможность сохранения настроек подключения в системном реестре: имени пользователя, SQL Dialect и пути к базе данных.
Получение всей информации о базе данных при помощи специальных свойств и методов: DBSQLDialect, ForcedWrites, NumBuffers, ODSMinorVersion and ODSMajorVersion, etc.
Поддержка режима автомтического восстановления связи с базой данных при потере подключения. Для этого необходимо использовать свойство TpFIBDataSet.CachedUpdates, чтобы измененные пользователем данные были применены после восстановления подключения.
Корректная работа компонентов при потере подключения к базе данных.

Использование и контроль транзакций

Полностью явный механизм транзакций для ручного и автоматического использования и контроля при помощи TpFIBTransaction.
Поддержка методов Support of Commit, Rollback, CommitRetaining и RollbackRetaining.
Неограниченное количество компонентов транзакций в приложении.
Поддержка двухфазового подтверждения (commit).
Опциональный автоматический старт транзакции перед открытием TpFIBDataSet и TpFIBQuery.
Легкая установка уровней изоляции (TpFIBTransaction.TPBMode - tpbDefault, tpbReadCommitted или tpbRepeatableRead) и создание заданных пользователями параметров транзакций в design-time (TpFIBTransaction.UserKindTransaction).
Уникальная возможность использования двух разделенных транзакций в TpFIBDataSet. Можно выбрать все записи в контексте одной длинной транзакции "только для чтения" и произвести все действия над данными в контексте другой короткой пищущей транзакции. Таким образом можно избежать DEADLOCK в режиме одновременной многопользовательской работы.
Опциональный режим авто-подтверждения (auto-commit) в компонентах TpFIBDataSet и TpFIBQuery.
Контроль над неподтвержденными изменениями данных в TpFIBDataSet (свойство HasUncommitedChanges).

Визуальное управление данными

Буферизованный и абсолютно скроллируемый датасет благодаря TpFIBDataSet. Поскольку TpFIBDataSet является потомком TDataSet, он прекрасно работает со всеми data-aware компонентами (включая сторонние библиотеки компонент ): TDBGrid, TDBEdit, и т.д..
Легкое создание модифицирующих запросов на основе TpFIBDataSet.SelectSQL и создание редактируемого TpFIBDataSet при помощи design-time SQL Generator.
Автоматическое создание модифицирующих запросов на основе TpFIBDataSet.SelectSQL в run-time после открытия TpFIBDataSet. Автоматическое создание модифицирующих запросов после изменения полей записи. Результирующий модифицирующий запрос будет включать в себя только измененные поля записи.
Прекрасная поддержка автоинкрементных полей при помощи TpFIBDataSet.AutoUpdateOptions.
Контроль над разрешенными модифицирующими операциями при помощи TpFIBDataSet.AllowedUpdateKinds.
Автоматическое отображение заданных пользователем полей и редактирование форматов для числовых полей и полей типа дата/время(свойство DefaultFormats).
Поддержка режима локальной фильтрации: выборка записей в TpFIBDataSet без переоткрытия запроса.
Поддержка режима локальной сортировки: пересортировка записей в TpFIBDataSet без переоткрытия запроса.
Оптимизированная поддержка BLOB-полей в TpFIBDataSet.
Локальная поддержка BLOB-фильтров может использоваться для прозрачной упаковки, кодирования или шифрования BLOB-полей в клиентских приложениях.
Корректная поддержка новых типов данных InterBase 6: DATE, TIME, TIMESTAMP и INT64.
Возможность опционального режима пессимистичной блокировки записи (poProtectedEdit в TpFIBDataSet.Options).
Опциональный режим получения количества записей для SelectSQL без перекачивания всех записей на клиентское приложение.
Уникальные особенности и опции для оптимизации механизма мастер-детали. Снижение лишнего сетевого траффика во время навигации по мастер-таблице, автоматическое задание связанных полей в детальных датасетах, опциональное автоматическое обновление мастер-записи при изменении детальной.
Получение с сервера значений полей по умолчанию и установка других важных опций для полей NOT NULL и вычисляемых полей на сервере.
Корректная поддержка режима CachedUpdates mode. TpFIBDataSet не требует открытого подключения и активной транзакции в режиме CachedUpdates. Это требуется только в том случае, если приложению нужно применить все внесенные изменения к базе данных.
Уникальная возможность использования макросов в SelectSQL. Она позволяет динамически создавать запросы. Например, корректное использование макросов таково: "SELECT @FIELD_NAME FROM @TABLE_NAME".
Автоматическая подстановка записи "IS NULL" вместо "?Param = null" в текст запроса, если значение параметра нулевое. InterBase модет не найти необходимую запись, если не произвести такую замену.
Возможность изменения модифицирующих запросов (InsertSQL, UpdateSQL, DeleteSQL, RefreshSQL) без переоткрытия запроса.
Возможность наблюдения и прерывания процесса получения записей с сервера.

Быстрые операции над данными

Прямое выполнение операторов SQL без использования TpFIBQuery.
Пакетная обработка записей в методах TpFIBQuery.BatchInput, TpFIBQuery.BatchOutput.
Быстрая и эффективная небуферизованная выборка записей в TpFIBQuery.
Прямое выполнение хранимых процедур методомTpFIBQuery.ExecProcedure.
Удобная обработка BLOB-полей.

Специальные особенности и компоненты

Полнофункциональная работа с array полями в TpFIBDataSet и TpFIBQuery.
Опциональная эмуляция boolean полей в TpFIBDataSet.
Возможность работы с Origin и Domain для поля в TpFIBDataSet, позволяющая написать более удобную обработку данных.
Сохранение значений старых параметров после изменения текста в TpFIBDataSet.SelectSQL.
Возможность обработки централизованных событий нескольких TpFIBDataSet и отправки в них внутренних сообщений компонентом TDataSetContainer.
Аналоги триггеров на клиенте- уникальная возможность создания сложных серий обновления данных в живых запросах компонентами TpFIBUpdateObject. TpFIBUpdateObject может быть использован в контексте разных транзакций и даже совместно с различными подключениями к базе данных. Это позволяет организовать сложные, но понятные алгоритмы изменения данных и параллельной синхонизацией с базой данных.
Благодаря компоненту TpFIBErrorHandler возможность централизованной обработки ошибок, появляющихся во время работы c InterBase.
Получение детальной статистики запросов и улучшение производительности приложения при помощи компонента TpFIBStatistic: количество выполнений запросов, общее время их выполнения, среднее время выполнения, наибольшее время выполнения и время выполнения последнего запроса.
Поддержка событий InterBase (TSIBFIBEventAlerter).
Встроенная поддержка FIBPlus Data Repository. Она позволяет вам автоматически заполнять такие свойства полей TpFIBDataSet fields, как DisplayLabel, EditFormat, DisplayFormat, DisplayWidth и Visible. Она также позволяет вам хранить все запросы в базе данных и помещать их в соответствующий компонент TpFIBDataSet при помощи свойства the DataSet_ID. Реализация FIBPlus Data Repository позволяет пользователям хранить любые дополнительные настройки в базе данных и с легкостью их использовать.

Преимущества использования FibPlus

FIBPlus позволит вам быстро и просто создавать стабильные, качественные и высокопроизводительные приложения, работающие с InterBase и имеющие низкие системные требования. FIBPlus не требует установки BDE или других аналогичных "драйверов" баз данных, поскольку работает непосредственно с InterBase API. Текущая версия FIBPlus поддерживает несколько средств разработки корпорации Borland: Delphi 5-7, C++ Builder 5-6 и Kylix 3. Более того, с определенными ограничениями компоненты FIBPlus могут быть использованы с Delphi 5 Standard, а значит вам не обязательно приобретать редакции Professional или Enterprise. Приложения на базе FIBPlus совместимы со всеми существующими версиями и клонами InterBase: Borland InterBase 4.x - 7.х, Firebird 1.х и Yaffil. Вы можете использовать FIBPlus вместе со стандартными или дополнительными визуальными компонентами, которые вы предпочитаете (InfoPower, DevExpress, EhLib, IntraWeb и т.д.), а также с любыми генераторами отчетов (QuickReport, FastReport, ReportBuilder и т.д.). Вы будете иметь полный контроль над работой транзакций, сведете к минимуму вероятность DEADLOCK и даже в сложной многопользовательской среде покажите пользователям актуальные данные. Вы сможете создать приложения простые в сопровождении при помощи встроенного в FIBPlus механизма FIBPlus Repository, позволяющего хранить запросы приложений и визуальные настройки таблиц в базе данных, а также изменять их без перекомпиляции приложений. Добавьте в ваши приложения возможности администрирования баз данных - это позволит пользователям ваших программ самостоятельно делать резервные копии баз данных и управлять доступом к серверу. Используя возможности FIBPlus для управления подключением к базе данных, вы сможете сохранить пользовательские данные и применить их после восстановления подключения. Это позволит вам создавать приложения, которые будут адекватно работать на таких нестабильных и низкоскоростных каналах связи как dial-up. При необходимости вы сможете напрямую манипулировать данными в буфере TpFIBDataSet при помощи низкоуровневых методов Cache*. Гибкий механизм автоматизации работы связей вида мастер/деталь, а также встроенные возможности для оптимизации сетевого траффика, позволят сделать работу приложений максимально эффективной, а эксперты FIBPlusTools и встроенные редакторы компонентво и свойств сделают процесс разработки программ более простым и удобным.

2 декабря была выпущена очередная версия Фибов - FibPlus 6.30. Вот перечень нововведений и исправлений:

Изменения и улучшения

  1. Метод function FIBDataSet.IsComputedField(Field:Variant): boolean;
    Возвращает true если поле является server-calculated. В качестве аргумента подается либо имя поля в датасете, либо его номер в коллекции полей
  2. Метод procedure FIBDataSet.AssignProperties(Source:
    TFIBCustomDataSet);
    Присваивает всем свойствам значения из свойств от
    Source датасета. Аналогичный метод FIBQuery.AssignProperties
  3. Добавлены свойства датасета - дают доступ к выражениям в SELECTSQL
    property GroupByClause:string;
    property MainWhereClause:string;
    property PlanClause:string;
  4. в pFIBPropEd.inc добавлена новая директива {$DEFINE synedit-201b.zip} Включает Директивы (define) актуальные для определенной сборки SynEdit. На сайте производителя эта сборка доступна под именем synedit-201b.zip
  5. FIBDataBase добавлено свойство SQLLogger. Убран компонент FIBAppStatistics. Его функциональность перенесена в новый компонент FIBSQLLogger.
    FIBSQLLogger - компонент, отвечающий за логгирование SQL запросов, и сбор статистики по ним.
    Свойства:
    property ActiveStatistics:boolean - включен ли сбор статистики.
    property ActiveLogging:boolean - включено ли логгирование
    property LogFileName:string - имя файла, куда пишется лог
    property StatisticsParams :TFIBStatisticsParams - какие именно
    параметры включены в сбор статистики

    property LogFlags: TLogFlags - какие операции логгируются
    property ForceSaveLog:boolean - вести запись лога сразу же. Т.е после каждого запроса немедленно идет запись в файл.

    Методы
    function ExistStatisticsTable:boolean; - существует ли таблица для хранения статистики
    procedure CreateStatisticsTable; - создает таблицу для хранения статистики в базе

    procedure SaveStatisticsToDB(ForMaxExecTime:integer=0); -
    сохранить накопленную статистику в таблицу. Параметр указывает, по каким запросам нам статистика вообще интересна. Для этого надо задать значение ForMaxExecTime равным нижнему пределу времени выполнения запроса. Т.е. записывается статистика по тем запросам которые выполнялись дольше или столько же времени как, указанное в ForMaxExecTime.

    procedure SaveLog; - запись лога в файл. (имеет смысл, если выключен ForceSaveLog)
  6. Добавлена возможность отключить показ имени компонента, вызвавшего ошибку. Для этого можно воспользоваться кодом:
    use FIB; Exclude(IBErrorMessages, ShowRaiserName)
  7. Добавлена обработка параметра транзакции isc_tpb_no_savepoint. (Для InterBase 7.5)
  8. Новый вариант метода FIBQuery.ExecWPS;
    procedure ExecWPS(ParamSource:ISQLObject; AllRecords:boolean=True); overload;

    Действие почти аналогично действию старого вызова ExecWPS. Т.е. запускает ExecQuery, используя в качестве источника параметров переданный параметр ParamSource. Второй аргумент сообщает методу, нужно ли выполнять ExecQuery для каждой записи из ParamSource или только для текущей.
  9. pFIBClientDataSet теперь поддерживает интерфейс ISQLObject. Это в сочетании с пунктом 2 позволяет делать легкую перекачку данных в базы InterBase из данных клиент-датасета. Пример:
    FIBQuery1.ExecWPS(FibClienDataSet1,True)
  10. Небольшие улучшения в обработке параметров компонентом FIBQuery (Спасибо Andry Ogorodnik).
  11. Добавлена поддержка новой возможности FB2. Новая функциональность заключается в синтаксисе:
    Insert Into Table1 ...
    RETURNING FIELD1,FIELD2...
    Поддержка выражается в том, что если в датасете написан такой InsertSQL, то сразу же после срабатывания метода Post, те поля, значения которых запрос вернул через выражение RETURNING, будут обновлены в датасете. Это позволяет получать значения полей, которые сформировались триггерами без дополнительного вызова метода Refresh. Т.о. можно получить и значение первичного ключа, без предварительного обращения к генератору с клиента.
  12. Внесены небольшие правки для лучшей поддержки C++ Builder и Kylix.
  13. В SQLEditor при использовании SynEdit в Code Proposal добавилась обработка gen_id(). Т.е., при нажатии Ctrl+space в этом случае открывается список генераторов. (спасибо Джонатану Ниву)
  14. SQLEditor теперь показывает типы полей. (спасибо Джонатану Ниву)

Исправленные ошибки:

  1. Неправильно генерировались запросы в режиме ограниченного кэша, если в клаузе order by присутствовали комментарии. Исправлено
  2. Неправильно работала опция poKeepSorting при добавлении ПЕРВОЙ записи в датасет. Исправлено
  3. Не срабатывала генерация первичного ключа в МИДАС приложениях, если в провайдере свойство ResolveToDataset = False. Исправлено
  4. Неправильно работало отображение Numeric полей при использовании несколько секционных форматов. Т.е. форматы типа '#,##0.00;#,##0.000;Zero'. Исправлено
  5. Исправлены ошибки в СloneCurrRecord, макросах и ошибки препарировании запросов; DoSortEx в OpenAsClone
  6. Ошибка парсера SQL. Проявлялась, когда за знаком "-" сразу же шел параметр, Например, SET IS_DELETE = -?OLD_RING_IDENT. Исправлено
  7. Ошибка в методе OpenAsClone. Проявлялся при попытке сортировки в отклонированном датасете и попытке модификации данных в отклонированном датасете. Исправлено
  8. Исправлена ошибка обработки опции poTrimCharFields, когда пользователь вводил много лишних пробелов в конце строки при работе с Varchar. После Post эти пробелы запоминались, а не отсекались. При этом данных отображались нормально, без хвостовых пробелов.
  9. Неправильно работал ExtLocateNext с опцией eloInSortedDS. Исправлено
  10. Ошибка при Refresh со включенной опцией poVisibleRecno при связке Мастер-деталь. При добавлении записи в Detail датасет и последующем выполнении Refresh, у Master датасета происходила смена текущей позиции на произвольную запись. Исправлено
  11. Неправильно генерировались модифицирующие запросы при смене текста SelectSQL, если при этом менялся также алиас модифицируемой таблицы. Исправлено
  12. Неправильная работа TpFIBTableInfoCollect.ClearForTable для таблиц с Именами взятыми в двойные кавычки. Исправлено
  13. При удачном перемещении указателя на последнюю запись в наборе после выполнения Locate, не сбрасывался флаг Eof. Исправлено
  14. В некоторых случаях возникало исключение в RefreshSQL. EFIBInterbaseError с кодом SQL -804 "Incorrect values within SQLDA
    structure". Исправлено
  15. Ошибка при работе датасета с одноименными макросами + изменением текста запроса после присвоения значения макросам. Исправлено
  16. Подправлено поведение метода LocateNext. Метод возвращал неправильный результат, если последняя запись датасета удовлетворяла условию поиска, и при этом уже была текущей при вызове метода.
  17. Устранена плавающая ошибка при компиляции пакетов под C++ Builder.
  18. Ошибка при использовании poProtectedEdit, возникавшая при завершении транзакции по CommitRetaining. Исправлено
  19. Исправлена ошибка "Invalid Blob_id". Проявлялась при вставке BLOB-поля из датасета через хранимую процедуру, если при этом не вызывался RefreshSQL после Post.
  20. Исправлена ошибка в методе TFIBXSQLVAR.SetAsXSQLVAR. Иногда приводила к проблемам при использовании методов BatchXXX.
  21. Исправлена ошибка в реализации poKeepSorting, из-за которой при Insert иногда не заполнялись значения упорядоченных полей.
  22. Внесены исправления в IB_Services в части директив для Kylix.

28.11.2005 были полностью обновлены примеры для FIBPlus (Delphi). Архив в 335 кб содержит демонстрацию 30 ключевых особенностей FIBPlus.

FIBPlus Examples
----------------

  • DataSetBasic - Этот пример демонстрирует, как работать с датасетом. Соединяемся с базой данных, настраиваем SQLs через редактор и работаем в свое удовольствие.
  • DataSetOptions - Этот пример демострирует опции для датасета. Также рекомедуется устанавить и посмотреть в SQLMonitor (также есть в примерах), какие дополнительные запросы при этом вызваются
  • AutoUpdateOptions - Этот пример демонстрирует, как можно настроить датасет в Run-Time, так чтобы он был полностью работоспособен - вставлял, модифицировал, удалял записи.
  • MasterDetail - Этот пример демонстрирует механизм мастер-деталь Клиенты и продажи. При добавлении продажи в мастере автоматически обновляется количество продаж клиенту в детали.
  • LocalSorting - Демонстрирует использование локальной фильтрации методом DoSortEx из стандартных примеров. Кроме того, показывает метод OnCompareFieldVAlues, предлагая стандартную сортировку и Ansi(по-умолчанию)
  • LocalFilterting - Демонстрирует использование локальной фильтрации.
  • ServerFilteringConditions - Этот пример демонстрирует применение свойства Conditions для изменения условий выборки из настроенного датасета. Демонстрируются как conditions, созданные в Design-Time, так и их использование в Run-Time
  • ServerFilteringMacroses - пример фильтрации на сервере, аналогичный предыдущему (ServerFilteringConditions), но функционирующий через механизм макросов.
  • ProtectedEditing - Этот пример демонстрирует использование опции poProtectedEdit. Открываются два одинаковых датасета в разных подключениях, и производится попытка изменить одну и ту же запись.
  • FieldRepository - Пример демонстрирует работу с FIBPlus репозитарием полей. Там занесены DisplayLabel для создаваемых полей. Кроме того, можно вызвать редактор репозитария и задать настройки самостоятельно.
  • DataSetRepository - Пример демонстрирует работу с репозитарием датасетов. В репозитарии находятся несколько настроенных датасетов, и, переключаясь по ним, вы видите новые открытые датасеты
  • ErrorMessagesRepository - Демонстрация репозитария сообщений на нарушение constraints. Попробуйте вставить запись - там много ограничений на Employee :)
  • Events - Пример демонстрирует работу с событиями. При нажатии на кнопку вставки заказа заказ добавляется в базу при помощи pFIBQuery. Вставка задействует триггер, который генерит событие "new_order". Приложение перехватывает событие и предлагает обновить датасет с новыми данными. Кроме того, вы можете видеть, как работать с pFIBQuery и методами TpFIBDataBase.QueryValues
  • BackgroundQueries - Этот пример показывает, как можно выполнить фоновый запрос в другом потоке
  • SQLMonitor - Этот пример демонстрирует, как создать SQLMonitor для отслеживания запросов, которые идут к базе данных через
    библиотеку FIBPlus.
  • SQLLogger - Демонстрирует новый сервис сбора статистики по работе с базой данных из приложения. Это переработанный компонент SQLStatistic. _ПО_ нажатию на кнопку выполняется некоторое количество запросов и обновляется статистическая информация.
  • CacheShemaOptions - Пример демонстрирует эффект опций CacheSchemaOptions - кеширование схемы. В нем вы видите две кнопки. Одна удаляет файл кеша и выполняет свои обычные действия. Другая просто выполняет свои действия. Для наблюдения эффекта запустите SQLMonitor. Нажмите на первую кнопку и вы увидите, что монитор отобразил 67 событий. При этом создался файл схемы. Перезапустите приложение (это необходимо сделать, так как кеш существует во время работы приложения и последующие операции будут его использовать). После перезапуска нажмите на вторую кнопку и увидите, что монитор принял лишь 32 события. Это значит, что половина необходимой информации уже была в кэше и вам не пришлось запрашивать ее из базы данных заново.
  • ConnectionLost - Демострирует обработку потери соединения. Напоминает старый аналогичный пример (за исключением некоторых изменений в свойствах). Кроме того, здесь демонстрируются использование TpFIBErrorHandler - обработчика
    ошибок FIBPlus и технология кешированных обновлений.
  • BlobFilters - Демонстрирует использование блоб-фильтров. Аналогичен существовавшему ранее примеру, кроме того, что он содержится в только в одной демо базе и использует другой алгоритм - UCL. Это бесплатный алгоритм с высокой степенью сжатия. Скачать его можно с http://www.yunqa.de/delphi/. Здесь же демонстрируется работа GUID-полями, в частности, автогенерация ключевого поля в TpFIBGuidField. Помимо этого, работа с текстовыми Blob полями в примере - это просто DBMemo для его отображения.
  • UnicodeFSS - Данный пример демонстрирует работу с Unicode - СHARACTER SET UNICODE_FSS. Для того, чтобы его воспроизвести, необходимо иметь установленные Tnt Unicode Controls. Скачать их можно с http://tnt.ccci.org/delphi_unicode_controls. В примере используются два варианта Locate. Первый - Locate по WideString-полю, в другом WideString выступает в качестве параметра для поиска ID, по которому потом будет выполняться Locate. Третий вариант - когда просто Unicode строка идет в запрос.
    * будет удален как слишком сложный
    * существует, пока нет нормального простого примера для TpFIBUpdateObject и TFIBDataSetContainer
  • DemoArray - Пример демонстрирует возможности FIBPlus для работы с полями-массивами IB/FB. Кроме того, тут показаны некоторые аспекты работы с TpFIBDataSetContainer. Eсли два датасета с частично одинаковыми данными открыты вместе, то при изменении одного во втором обновляется эта же запись. Аналогичен старому апримеру, но приведен к демо-базе 3 диалекта
  • StoredProcedure - Проект демострирует использование хранимых процедур. В первой закладке через датасет производится выборка из процедуры. На второй вкладке по нажатию на кнопке для текущего департамента вызывается другая процедура для подсчета усредненных значений бюджета департамента, на котором стоит курсор.
  • cmkLimitedBuffersSize - Демонстрирует использование режима датасета с ограниченным буфером. Эта потребность возникает для датасетов с большим количеством данных. В демонстрационной базе есть таблица BIGTABLE и BIGTABLE_DETAIL, они пустые. При помощи процедуры кнопки на форме подготавливаются данные. Вы можете наблюдать, как FIBPlus справляется с такими объемами, а затем сравнить с прежними данными.
  • DLL\DLLMain, DLL\TestDLL - Это пример использования передачи соединения в DLL. Единственно правильный способ передачи - это передавать TpFIBDataBase.Handle (не забывайте добавить ibase.pas в секцию uses, там определен TISC_DB_HANDLE)
  • ArrayFields1 - Пример демонстрирует работу с полями массивами, распаковку поля для отображения и упаковку для модификации
  • ArrayFields1 - демонстрирует работу с полями массивами, прямую выборку поля LANGUAGE_REQ[x] и запаковку в случае модификации
  • FB20InsertReturning - Демонстрирует новые возоможности FB20 insert into returnig. Обновляемая таблица EMPLOYEE получает значение EMP_NO без использования генератора. Второй вариант показывает использование RDB$DB_KEY для обновления данных.
  • GUID_UDF - Пример udf для генерации GUID на сервере (Приз от Сергея Бузаджи).
  • NotifyBroadcast - Попытка использования механизма оповещения об изменениях в сети. Не будет работать корректно, если на одном и том же хосте запущено две копии программы (получать сообщения будет только первая копия)
  • FIBConnectionBroker - адаптация компонета TIBConnectionBroker под FIBPlus, плюс адаптированный оригинальный пример от Jeff Overcash
В следующих выпусках мы продолжим цикл статей по .Net Framework, поделимся накопленным опытом в области Делфи (автоматическое обновление программы по локальной сети, упрощение работы с репортами FastReport и XLReport, автоматизация работы с СУБД, работа с Excel), расскажем о продуктах фирмы Devrace, а также будут авторские статьи по Делфи

Ждем Ваших откликов на емайл 5781-author@subscribe.ru или subscr@chertenok.ru


Приглашаем авторов в рассылку!


С уважением,
координатор рассылки Алексей aka Gelios.

Наши координаты:

сайт - www.delphi.chertenok.ru
форум - www.forum.chertenok.ru
контактный email - 5781-author@subscribe.ru

Другие проекты:

www.travel.chertenok.ru - сайт о путешествиях!



Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.allofdelphi
Архив рассылки
Отписаться
Вспомнить пароль

В избранное