DigestSDK система автоматизации разработки приложений по работе с БД MSSQL. DigestSDK - набор модулей на Delphi,которые избавляют программиста от написания рутинного кода по обслуживанию БД MSSQL и позволяют сосредоточиться на логике приложения - а не на написании различных сервисных функций: доступа, изменения, сортировки и т.д.
Некоторое время назад мне пришлось реализовать работу с таблицами базы данных MSSQL сервера. После написания некоторого количества, фактически однотипного кода пришла мысль автоматизировать эти «рутинные» действия. Согласитесь, что написание одного и того же кода, отличающегося фактически только структурой таблиц БД delphi, не может никого вдохновить. К тому же, если кол-во таблиц, с которыми приходиться работать переваливает за десяток, то занятие из разряда скучное переходит в разряд трудоемкое. Поиск в интернете не привел ни к чему, поэтому реализацию пришлось взять на себя. В результате был создан набор модулей (в дальнейшем 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;
Достаточно просто создать и работа всех функций, а также перевод наименований таблиц и полей, будет производен автоматически. В данной статье продемонстрированы лишь минимальные возможности.