ODBC + XL Report Builder + Excel = удобная работа

Большинство более-менее крупных программных пакетов являются своего рода “удельными княжествами”, в которых есть все необходимое (как считают разработчики) для решения задач пользователя в охваченной пакетом предметной области. Проблемы возникают, когда выясняется, что разработчики чересчур оптимистичны относительно возможностей своего детища, либо решение задачи выходит за пределы устоявшейся предметной области. В этом случае возникает необходимость перенести данные из одного приложения в другое. К сожалению, между “княжествами” зачастую возникают серьезные барьеры, мешающие переносу данных. Чтобы избежать печальной участи Остапа Бендера, который так и не смог переправить честно отобранный миллион через советско-румынскую границу, стоит воспользоваться услугами опытных “контрабандистов”.

 

Один из скромных тружеников, соединяющих миры, и предстанет сегодня перед нами. XL Report Builder – это простой, но удобный и мощный построитель отчетов для баз данных. Богатство возможностей, открывающееся перед пользователем этой утилиты, объясняется тем, что Report Builder сам отчеты не форматирует, не оформляет и не печатает – все это делает Microsoft Excel под чутким руководством пользователя. Функция XL Report Builder состоит в организации связи между базой данных и электронной таблицей. Такое решение обеспечивает множество преимуществ. Microsoft Excel – очень популярный пакет с широкими возможностями, поэтому у большинства квалифицированных пользователей не возникнет проблем как с оформительскими элементами отчетов (заголовками, шрифтами, рамочками, линеечками), так и с вычислениями на основе полученных из базы данных результатов. Кроме того, в распоряжении пользователя оказывается весь графический инструментарий Excel, что позволяет автоматически строить диаграммы на основе результатов запроса, полученных из базы данных.

Для выборки информации, которую необходимо перенести из базы данных, Report Builder использует механизм SQL-запросов. SQL – это стандартный язык запросов, поддерживаемый всеми базами данных. Его можно рассматривать как формализованный и сильно упрощенный английский, этакий “пиджин-инглиш” (pigeon english), с помощью которого пользователь указывает движку базы данных, какую информацию он хотел бы получить.

Запрос на SQL выглядит обычно так: SELECT [столбцы] FROM [таблицы данных] WHERE [условие]. Таблицы в базах данных организованы таким образом, что каждая строка содержит информацию о конкретной сущности, а каждый столбец – одно и то же свойство всех сущностей. Например, таблица “Город” может содержать столбцы “Название”, “Площадь”, “Страна”, “Население”, “Долгота”, “Широта”. Соответственно, в строках будут содержаться данные по отдельным городам. Запрос позволяет выбирать не все строки из таблицы (хотя такое тоже возможно), а лишь те, которые удовлетворяют заданному условию. Например, запрос SELECT Название FROM Город WHERE Население>10000 выдаст названия тех городов, у которых население превышает 10000 человек.

В запросе можно указать не одну, а несколько таблиц, обозначив при этом связи между столбцами запрашиваемых таблиц. Например, запрос SELECT Город.Название, Страна.Название, Город.Население FROM Город, Страна WHERE (Страна.Население>10000000) AND (Город.Страна = Страна.Название) выдаст названия всех городов в странах, население которых превышает один миллион человек, попутно показав население этих городов и страны, в которых они находятся. Ключевым моментом в связывании таблиц является выражение WHERE Город.Страна = Страна.Название (оно может формулироваться и другими способами, а также во множестве различных вариантов), которое заставляет движок БД делать выборку одновременно из нескольких таблиц. Разумеется, в реальности движок действует по-другому, но “на пальцах” этого не объяснишь, а результат его работы именно такой, как описано.

SQL-запросы в XL Report Builder создаются вручную

Непосредственно на SQL запросы обычно пишут опытные пользователи, поскольку выше были приведены лишь самые основы, а сам язык запросов достаточно сложен. Для всех прочих более удобным способом являются визуальные построители SQL-запросов, которые позволяют без лишнего напряжения и специальных знаний составить запрос с помощью “тыка-и-перетягивания” и других интуитивных инструментов.

Сразу стоит отметить, что визуального построителя запросов в XL Report Builder нет – все SQL-запросы придется вводить вручную. В этом аспекте программа проигрывает своему ближайшему конкуренту – Microsoft Query, который входит в состав стандартной поставки Microsoft Office (то есть он свободно доступен любому, у кого есть Excel). С другой стороны, можно перенести в XL Report Builder сформированный в Microsoft Query запрос. Такая операция имеет смысл, поскольку XL Report Builder представляется в некоторых аспектах более удобной и мощной программой.

В MS Query есть визуальный построитель запросов

Основным его преимуществом перед Microsoft Query является возможность записывать результаты выполнения запроса, основываясь на шаблоне запроса, заранее созданном в виде файла Excel. Для взаимодействия используется механизм COM-объектов, а также некоторые другие механизмы, которые обеспечивают XL Report Builder максимально быстрый доступ к ячейкам Excel. Пользователь самостоятельно задает местоположение выходной информации, вводя ссылки на нее в интересующие его ячейки. Как следствие, результаты запроса располагаются именно там, где удобно пользователю, а не программистам. Поскольку вывод осуществляется в таблицу Excel, все элементы оформления, дополнительные расчеты, шрифты и форматирование находятся целиком во власти пользователя, которому не придется осваивать незнакомую программу, чтобы задействовать эти возможности.

Впрочем, некоторые способности в этой области есть и у XL Report Builder – например, в ячейках шаблона можно задавать распознаваемые им формулы для автосуммирования. Разработчики не навязывают пользователю какой-либо один путь решения проблемы, предоставляя в его распоряжение всю мощь Microsoft Excel. В частности, удобной опцией является возможность задавать макросы Excel, которые будут выполняться до и после выполнения запроса.

Перенос данных в Excel осуществляется на основе шаблона, содержащегося в *.xls-файле

Что касается самого выполнения запросов, возможности программы достаточно стандартны: поддерживаются параметрические запросы, условия которых зависят от переменных, которые, в свою очередь, берутся из соответствующих клеток таблиц Excel, и выполнение так называемых “сохраненных процедур” – средства автоматизации базы данных.

На основе данных из СУБД можно легко построить диаграмму Excel

Программа достаточно проста в использовании, а ее система помощи содержит исчерпывающие данные для реализации всех ее возможностей. Присутствует даже система “Советов дня”, что необычно для такой маленькой утилиты. Впрочем, это дело вкуса, и подсказки (их всего 12) всегда можно отключить. Более того, для продвинутых пользователей и программистов существует возможность запуска программы из командной строки с различными опциями (например, без отображения графического интерфейса).

Несмотря на некоторые проблемы с устойчивостью и корректностью работы самой программы и драйверов ODBC, которые наблюдались при подготовке этого обзора, XL Report Builder производит благоприятное впечатление. Эта программа удобна, обладает достаточно большими возможностями, но, в то же время, не перегружена лишними функциями и хорошо документирована. Для опытного пользователя Excel, знакомого с SQL, она может стать незаменимым инструментом. Тем не менее, хотелось бы заметить, что при столь немалой цене (99 у.е. за индивидуальную лицензию) программу можно было бы укомплектовать визуальным построителем запросов.

XL Report Builder построен на основе технологии XL Report – компонента для Delphi и C++ Builder, разработанного компанией AfalinaSoft. Возможности и особенности использования этого продукта будут рассмотрены в одном из следующих обзоров.

Автор статьи: Дмитрий Лобач

Comments are closed.