В статье рассматриваются назначение, основные особенности и возможности Фреймворка “DBGridChart” и OLAP – приложения “Экспресс_обработка.exe” (разработчик – Плещев В.В., http://vipuskniki.usue.ru/Docum.html - DLL, исходные тексты, описание и демонстрационные примеры).
Фреймворк ориентирован на автоматизацию разработки программ на C# по формированию входных табличных и ленточных документов для ведения баз данных c СУБД SQL Server, PostgeSQL, MySQL, Access в режиме непостоянного соединения ADO .NET и немедленного (без промежуточного накопления изменений) добавления, удаления или изменения записей с соблюдением целостности базы данных, а также для формирования заранее нерегламентированных аналитических таблиц и диаграмм для анализа данных, по унифицированной технологии (с использованием управляющих элементов dataGridView и Chart в C#) с много функциональным, унифицированным, адаптивным и комфортным для пользователей готовым интерфейсом.
OLAP-приложение “Экспресс_обработка.exe” позволяет: вынести описания запросов Select из исходных текстов программ в отдельный текстовый файл, что исключает необходимость в разработке оригинальных программ для ведения баз данных с различными СУБД и формирования аналитических таблиц и диаграмм. Для формирования запросов разработан специальный визуальный конструктор. Информация о таблицах, запросах Select и их полях берется автоматически конструктором из базы данных. Не выходя из приложения, пользователь может оперативно визуальным конструктором запросов формировать, сохранять и использовать запросы для анализа данных и ведения базы данных. Само приложение реализовано средствами Фреймворка “DBGridChart”.
Рассмотрим кратко основные технические особенности Фреймворка по отношению к C#.
В C# имеется класс DataGridView и TableAdapter для работы с базами данных в табличной форме по технологии ADO. NET.
Однако, в C# отсутствует готовый интерфейс по работе с базами данных в табличной форме. Программисту приходится либо оригинально разрабатывать его, либо искать соответствующее средство. Существующие средства предоставляют минимальный по возможностям интерфейс, например, формирование трех кнопок на удаление, корректировку и добавления новых записей, выделенных мышкой.
Фреймворк “DBGridChart” полностью решает эту проблему, предлагая готовый адаптивный универсальный интерфейс: подстановка кодов из таблиц-справочников с наименованиями кодов; развертывание много колончатых таблиц в ленточные формы (каждая строка исходной таблицы развертывается в одну полосу из нескольких строк и до пяти значений исходной таблицы в одной строке полосы); формирование аналитических диаграмм до 30 различных типов и расчетных таблиц, включая итоговые, ступенчатые и перекрестные таблицы; фильтрация и сортировка строк по нескольким колонкам; скрытие и закрепление колонок; развертывание таблицы на весь экран и свертывании обратно; экспорт и распечатка таблиц; управление выводом подсказок, режимами изменения значений в ячейках таблицы и доступа к таблице; копирование строк; настройка макета формы (шрифтов, цвета, формата данных в колонках, размеров и местоположения таблицы на форме, режимов работы и др.) и сохранение макета табличной формы для последующего использования и др.
Программисту достаточно сформировать форму, унаследованную из нужной формы (из 9 форм от 1 до 9 таблиц на каждой из форм соответственно) класса “Hablon” Фреймворка с готовыми 30 кнопками с рисунками и полями интерфейса, сделать невидимыми кнопки и элементы, которые не включаются в интерфейс для данной программы (рис.1).
Программист может изменить в классе “Hablon” рисунки на кнопках, тексты всплывающих подсказок, состав элементов на форме и др.
В процедуре загрузки формы указать для каждой таблицы от 5 до 6 команд: создание экземпляра класса ClassBD_dataGridView и задать свойства класса: текст строки подключения к базе данных, описание таблицы dataGridView, текст команды Select, текст строки подстановки кодов, если есть подстановки, и выполнить метод для загрузки в таблицу данными результата выполнения запроса.
На этом программирование заканчивается. Практически программирование заключается в формировании команд Select конструкторами запросов СУБД или Фреймворка DBGridChart. Макет формы таблицы формируется автоматически с заголовками колонок из наименований или псевдонимов полей в запросе Select. Команды Update, Insert и Delete формируются автоматически из Select, если в тексте команды Select после имени или псевдонима поля или таблицы указать специальные символы-признаки: @ - ключевое поле, # - некорректируемое поле, * - обязательное для заполнения поле, ~ - корректируемая таблица, если в запросе несколько таблиц.
Для наглядности, в заголовках колонок автоматически в начале (←,↑,↓) и в конце (★,☒,▼) наименований колонок могут выводиться специальные символы, которые указывают на дополнительные характеристики колонок:
★ – обязательная для заполнения колонка.
☒ – колонка только для чтения и изменять значения ячеек в колонке запрещено (корректировка заблокирована). Если символы ★,☒ не указаны, то колонка необязательная для заполнения.
▼– для ввода значений (обычно кодов) в ячейки колонки допускается подстановка из таблиц с кодами.
← – закрепление колонки при перемещении таблицы вправо.
↑ – таблица отсортирована по возрастанию значений ячеек в колонке.
↓ – таблица отсортирована по убыванию значений ячеек в колонке.
В OLAP приложении “Экспресс_обработка.exe” строки c командой Select, подключения к базе данных с текстом подстановок перенесены в текстовый файл с описанием запросов, что исключило полностью процесс программирования (рис. 3).
Пользователь открывает файл с описанием запросов в табличной форме, выбирает и выполняет нужный запрос .
Визуальным конструктором запросов Фреймворка “DBGridChart” пользователь может изменить существующий (удалить или добавить новые колонки, включая расчетные, установить новый порядок сортировки, переставить колонки, изменить наименования колонок или типы запроса и др.) и запомнить новый запрос без программирования (рис. 4).
К достоинствам варианта использования конструктора запросов можно отнести универсальность и дополнительные возможности: пользователь может сформировать уникальные условия отбора записей, удалить или добавить новые колонки, включая расчетные, установить новый порядок сортировки, переставить колонки, изменить наименования колонок или типы запроса и др. Недостаток – нужно корректировать текст команды Select.
Заполнение таблицы производится очень быстро средствами TableAdapter C# без явного визуального создания объектов bindingSource, DataSet.
Недостатком технологии ADO .NET в C# является создание из запроса копии части базы данных (временного хранилища данных) и дальнейшая работа с этой копией без подключения к базе данных. Изменения переносятся в базу данных методом Update (отложенная корректировка) и в случае аварийного завершения работы все изменения будут утеряны! В случае нарушения целостности базы данных, строки в таблице помечаются знаком восклицания и пользователь должен найти эти строки и заново их откорректировать в новом сеансе корректировки! Команда Insert не формируется автоматически.
Во Фреймворке “DBGridChart” копия не формируется и после заполнения всех обязательных для заполнения полей в текущей строке таблицы немедленно происходит подключение к базе данных и выполнение команды Update для корректировки соответствующей записи в базе данных, контрольное чтение командой Select и вывод измененной записи из базы данных в текущую строку таблицы для визуальной проверки изменений пользователем и подтверждения внесения изменении в базу данных, далее, производится отключение от базы данных. Следовательно, при аварийном завершении можно потерять только изменения в одной текущей строке. При нарушении целостности базы данных выводится сообщение СУБД об ошибке, строка остается в состоянии до изменения и пользователь сразу может повторить изменения с новыми данными. При отсутствии записи в базе данных автоматически выполняется команда Insert. Таким образом, соединение с базой данных происходит только на время выполнения команды SQL и создается иллюзия режима постоянного подключения к базу данных с реальным его достоинством – немедленная корректировка базы данных.
Еще одна проблема в C# – скрытие строк dataGridView выполняется долго и фильтрация таблицы с числом строк более 20000 выполняется более 10 минут! Во Фреймворке “DBGridChart” эта проблема решена путем выделения цветом фона выбранных строк, отличным от фона невыбранных строк, которые не скрываются на экране.
Во Фреймворке предусмотрен сортировка строк таблицы по нескольким колонкам с возможностью указания порядка сортировки для каждой отдельной колонки.
Рассмотрим другие конструкторы и элементы интерфейса.
Конструктор макетов позволяет непосредственно пользователю формировать макет формы таблицы (рис. 5). Пользователь имеет визуальную возможность сформировать конструктором макетов новый или изменить старый макет, например: изменить высоту и ширину (минимальная ширина таблицы равна сумме ширины всех видимых колонок) и порядок расположения колонок в таблице, скрыть ненужные для работы колонки, указать режим нумерации строк, установить наименование, вид и размер шрифта для выводимого текста в строках таблицы и в списке для подстановки кодов, изменить цвета элементов таблицы и формы, установить форматы выводимых данных в ячейках и др.
Сформированный макет можно сохранить для следующих сеансов работы пользователя. Из окна конструктора можно вызвать конструктор запросов кнопкой SQL для изменения исходного запроса на формирование таблицы. Кнопки для развертывание таблицы на весь экран и сворачивания к исходной позиции продублированы в строке команд для быстрого доступа. Это позволяет размещать на одной форме много таблиц и пользователь может выбрать и развернуть на весь экран нужную для работы таблицу.
Конструктор фильтров позволяет формировать различные условия отбора записей (рис. 6).
Реализована работа с много строковыми запросами и c изменяемыми запросами и табличными формами с использованием конструкторов фильтров и запросов.
В конструкторе фильтров имеется режим Фильтровать строки в базе данных, а не в таблице, при котором автоматически формируется фраза Where в самом тексте команды Select из задаваемых в фильтре условий отбора записей и это позволяет максимально быстро выбирать командой Select записи в самой базе данных с большим числом записей. Достоинством этого варианта является простота – не нужно пользователю формировать условия на языке SQL и корректировать команду Select. Это позволяет эффективно работать с большими таблицами, когда пользователю не нужно ее полностью загружать в таблицу DataGridView.
Конструктор итоговых таблиц позволяет формировать различные таблицы для анализа данных (рис. 7-10).
Пользователь имеет визуальную возможность сформировать конструктором макетов новый или изменить старый макет, например: изменить высоту и ширину (минимальная ширина таблицы равна сумме ширины всех видимых колонок) и порядок расположения колонок в таблице, скрыть ненужные для работы колонки, указать режим нумерации строк, установить наименование, вид и размер шрифта для выводимого текста в строках таблицы и в списке для подстановки кодов (свойство List), изменить цвета элементов таблицы и формы, установить форматы выводимых данных в ячейках и др.
Конструктор ленточных форм предназначен для формирования форм из исходных таблиц с большим числом колонок (рис. 11-12).
Ленточные формы позволяют вывести на экран все ячейки из одной строки исходной таблицы, что упрощает из просмотр и корректировку без необходимости перемещать окно просмотра по горизонтали.
Конструктор диаграмм предназначен для формирования различных типов (до 30) аналитических диаграмм. В перед выводом диаграммы, пользователем формируется и сортируется таблица с данными для диаграмм (рис. 13).
4алее, далее выбирается тип и выводится диаграмма.
В качестве недостатка в текущей версии Фреймворка “DBGridChart” можно отметить работу только с данными типа: число, текст, дата и логически тип.
В целом можно отметить, что при реализации интерфейса были выявлены, проанализированы, унифицированы и реализованы различные приемы и методы работы с базами данных и анализа данных в табличных и графических формах различных программных систем, предложены средства настройки на уровнях программиста-разработчика и конечного пользователя.
Выполнение демонстрационных примеров показывает возможности и работоспособность Фреймворка “DBGridChart” и OLAP-приложения “Экспресс_обработка.exe”.
Наличие полного описания, DLL, исходных текстов класса “Hablon” и OLAP-приложения “Экспресс_обработка.exe”. на сайте разработчика дают возможность использовать эти средства в практической деятельности.