Наконец-то он готов, ваш отчет… Настоящее произведение искусства! Он не только соответствует малейшим прихотям клиента, но превзошел даже самые смелые ожидания. Вся необходимая информация обобщена и представлена в красивом презентабельном виде в сногсшибательном количестве форм и форматов. Вы «убили» больше месяца на создание своего детища и почти столько же на его тестирование.

И вдруг… непредвиденный форс-мажор! Вместо обычных 20 секунд процесс генерирования вашего отчета почему-то затягивается до целых 2 часов. Рано или поздно любой пользователь SAP Crystal Reports может столкнуться с подобной проблемой, которая становится сильнейшим раздражительным фактором в моменты особой спешки. К счастью, существует целый ряд способов ее устранения, каждый из которых сам по себе может принести дополнительные выгоды для пользователя.

Ниже рассмотрены пять наиболее вероятных причин ненадлежащего функционирования SAP Crystal Reports и способы устранения негативных последствий.

1. Установка баз данных
Вероятно, у вас нет возможности изменить данный факт, однако нередко случается, что установка и настройка баз данных была осуществлена далеко не идеально, в результате чего возможны следующие последствия:

• По причине отсутствия индексации некоторые поля не поддаются фильтрации. Это можно легко проверить, воспользовавшись связующей закладкой в окне Database Expert. Проиндексированные поля обозначены цветными отметками. Многие пользователи на собственном опыте убедились в том, что отчет начинает работать в несколько десятков раз быстрее, после того как для важных (в контексте фильтрации) полей создается индекс.

• Использование проекций вместо оригиналов таблиц с целью создания отчета может пагубно сказаться на его функциональных характеристиках. Это объясняется преимущественно отсутствием тех же индексов. Проекция (view) представляет собой набор таблиц (наподобие базового отчета) и часто используется с целью упрощения данных для удобства пользователя. Единственный способ избежать этого заключается во включении в отчет таблиц, составляющих проекцию. Определить, что именно лежит в основе поля: таблица или проекция, можно опять-таки при помощи окна Database Expert, так как поля и проекции находятся в разных списках. Определение таблиц, составляющих проекцию, может оказаться нелегкой задачей и потребовать обращения к технической документации базы данных. Кроме того, при работе с базами данных Oracle отключение опции чувствительности к регистру может в несколько раз повысить скорость генерации отчетов, однако при этом может возникнуть необходимость в переписывании существующих ответов.

2. Использование неправильного ODBC-драйвера

ODBC-драйверы являются связующим звеном между программным решением SAP Crystal Reports и собственно базой данных. Существует целый ряд ODBC-драйверов, которые приспособлены для работы с базами данных различных производителей, однако некоторые из них в работе все же оказываются более эффективными, чем их «собратья».

Единственный способ определить такой ODBC-драйвер заключается в пробном тестировании всех имеющихся драйверов в работе с базой данных. Исходя из опыта, можно сделать вывод о том, что наиболее оптимальным является ODBC-драйвер, поставляемый совместно с программным обеспечением того же производителя, что и база данных.

3. Избыточное использование подотчетов

Каждый подотчет, по сути, является отдельным отчетом, который имеет доступ к базе данных, и если такой подотчет находится в Разделе подробностей, он будет запускаться для каждой записи, загружаемой основным отчетом, отдельно. Даже в случае перенесения его в Раздел группирования подотчет будет запускаться много раз. Идеальной локацией для подотчетов является Раздел отчетов, поскольку он запускается всего один раз. Однако в таком случае у вас вместо одного отчета появляется целых два. Поэтому идеальный вариант – не использовать подотчеты как таковые. 99% подотчетов оказываются абсолютно ненужными, так как те же результаты с таким же успехом можно представить с использованием других инструментов, таких как группирование, метод промежуточных сумм и/или формулы.

4. Создание ссылок на таблицы

Ссылка любого типа, за исключением знака уравнения («=»), будет катастрофически снижать эффективность функционирования отчета. При помощи окна Параметров ссылок, которое запускается посредством нажатия правой кнопкой мыши на соответствующую ссылку, можно осуществить обнуление любых данных. Если все-таки существует необходимость в создании ссылки, помните, что тех же результатов можно достичь посредством использования Раздела группирования или форматирования (например, сокрытия ненужных данных) сразу же после их загрузки в отчет.

5. Выбор записей

  В случае правильного написания кода выбора записей программа SAP Crystal Reports передает логические данные в базу данных на языке структурированных запросов (SQL) и получает в ответ только выборочные необходимые данные. Если код выбора записей написан на языке, плохо совместимом с SQL, SAP Crystal Reports извлечет в ответ на запрос все имеющиеся данные и будет осуществлять их фильтрацию локально. Это может занять несоизмеримо больше времени, чем в первом случае. Использование модуля Record Selector Expert обеспечит правильное создание фильтров и их максимальную эффективность при работе с базой данных.

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

Статья публикуется с разрешения Crystalkeen, Mindconnection и Chelsea Technologies Ltd., которым принадлежит авторское право на этот материал.