Некоторое время назад мне пришлось
реализовать работу с таблицами базы данных MSSQL сервера. После написания
некоторого количества фактически однотипного кода, пришла мысль автоматизировать
эти "рутинные" действия. Согласитесь, что написание одного и того же кода,
отличающегося фактически только структурой таблиц БД, не может никого
вдохновить. К тому же, если количество таблиц, с которыми приходиться работать,
переваливает за десяток, то занятие из разряда скучное переходит в разряд
трудоемкое.
Поиск в интернете не привел ни к чему, поэтому реализацию пришлось
взять на себя. В результате был создан набор модулей (в дальнейшем DigestSDK) на
языке Delphi, позволяющих избавить программиста от написания "стандартного" кода
по работе с БД и сосредоточиться на логике самого приложения.
DigestSDK позволяет отобразить содержимое таблиц MSSQL сервера (в
дальнейшем планируется реализация для остальных популярных БД) и автоматически
предоставляет следующие возможности:
Перечень стандартных функций
После создания справочник автоматически содержит следующие функции:
- добавление;
- удаление (в том числе групповое);
- редактирование (в том числе групповое);
- поиск (с возможностью частичного соответствия);
- сортировка (при нажатии на заголовке DBGrid)
- сортировка (с указанием множества полей и порядка сортировки);
- выделение записей;
- подсчет кол-ва записей для текущей выборки и выделенных записей;
- быстрый переход на указанную запись;
- задание максимального кол-ва отображаемых записей;
- сохранение последнего состояния справочника в БД или в файле (настройки
колонок, последний запрос, условия отбора и сортировки, положение формы);
- настройка отображаемых колонок (видимость, ширина, положение);
- автоматический перевод английских наименований в соответствии с
пользовательским справочником.
Дополнительные возможности
Перечисленные выше возможности могут быть расширены программистом следующими
возможностями:
- изменение любого набора полей (с указанием собственных функций отображения,
проверки и т.д.);
- переопределение стандартных процедур добавления, удаления, редактирования;
- добавление в справочник собственных процедур, не входящих в список,
поддерживаемых справочником;
- задание списка полей запрещенных для редактирования и удаления;
- задание внешнего вида справочника (цвет выделенных записей, набор отображаемых
кнопок, добавление собственных кнопок и панелей и т.д.);
- задание начальных поисковых значений.
Представленный перечень функций и возможностей далеко не полный и
может быть расширен программистом за счет переопределения и/или написания
собственных дополнительных функций.
Чтобы не быть голословным приведу фрагмент кода по созданию
справочника с выборкой данных из таблицы Production.Product (из
демонстрационной БД AdventureWorks к MSSQL 2005).
В данном примере вызывается конструктор класса TSimpleDigest,
которому передается: sql запрос, имя таблицы в БД (к которой будут применяться
операции добавления, изменения и удаления), обычная строка подключения ADO,
указание где создавать справочник (TWinControl или nil, если на новой
форме) и идентификатор оператора – некоторое целое число – код, под которым
справочник будет сохранять свое последнее состояние.
Пример использования с демонстрацией результатов
Пример программы создания:
// создаем основой справочник
DigestProducts := TSimpleDigestR.Create(
// запрос в произвольной форме
'select top 10 * from Production.Product',
'Production.Product', // Имя таблицы для изменения
ConnectionString, // Строка подключения
nil, // Где создавать справочник
0 // Идентификатор оператора (для сохранения настроек)
);
// открываем справочник
DigestProducts.Open();
DigestProducts.ShowModal;
Результат выполнения:

Набор модулей DigestSDK на языке Delphi
Достаточно просто создать нужный и работа всех функций, а также
перевод наименований таблиц и полей, будет производен автоматически.
В данной статье продемонстрированы лишь минимальные возможности.
Расширенное описание, а также исходные тексты DigestSDK доступны на сайте digestsdk.nsknet.ru.
Дата: 17.01.2009,
Автор:
Дмитрий Гацура.
|