Средства отладки во время выполнения

Оценить
(1 голос)

Как уже упоминалось ранее в этой главе, ошибка может и не быть обнаружена при соз- дании формулы, но может проявиться во время фактического выполнения отчета. Досадно, когда создаешь формулу, щелкаешь на кнопке Check и получаешь сообщение “No Errors Found” (“Ошибок не найдено”), а потом во время выполнения отчета эта формула берет и возвращает ошибку. Такие ошибки обычно называют ошибками времени выполнения. Ошибки времени выполнения часто возникают из-за формул, не учитывающих всех типов данных, которые могут встречаться в отчете во время его выполнения. Например, формула может выполнять деление на основе какого-нибудь поля базы данных, а это поле вполне может для определенных записей возвращать значение 0. Или другой пример: формула должна извлекать определенные символы из строки, но если во время выполнения окажется так, что строка содержит нулевое значение или недостаточное для удовлетворения требований формулы количество символов, эта формула возвратит ошибку.

В Crystal Reports 8.5 и предшествующих версиях в таких случаях на экране просто бы высветилось сообщение об ошибке, а затем появилось окно редактора Formula Editor с выделением вызвавшей проблему формулы, но без каких-либо указаний на то, какая именно часть формулы является источником ошибкй. Теперь же ошибки времени выполнения исправлять намного легче, благодаря стеку вызовов (call stack). Если вы столкнетесь с ошибкой времени выполнения, то сначала увидите сообщение об ошибке, указывающее на ее характер (например “Divide by Zero” (“Деление на ноль”)), а за ним — окно Formula Workshop, воспроизводящее ошибочную формулу. Однако, помимо этого, в дереве, находящемся в левой части окна, также будут отображаться еще и формулы или функции, приведшие к появлению ошибки.

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

Редактирование, переименование и удаление существующих формул

После создания формулы может потребоваться изменить реализуемые ею вычисления или расширить ее функциональность. Существует множество способов редактирования существующей формулы, как в проводнике Fields Explorer, так и в окне Formula Workshop. Чтобы отредактировать формулу в окне проводника Fields Explorer, выполните любое из следующих действий:

•    Выберите формулу, в которую необходимо внести изменения, и щелкните на кнопке Edit (Редактировать) в панели инструментов Fields Explorer.

•    Щелкните правой кнопкой мыши на формуле и в появившемся контекстном меню выберите пункт Edit.

Средства отладки во время выполнения

Чтобы отредактировать формулу в окне Formula Workshop, сначала потребуется отобразить это окно. Для этого либо щелкните на кнопке Formula Workshop в панели инструментов, либо выберите в меню Report пункт Formula Workshop. Далее можете развернуть категорию Formula Fields и щелкнуть на формуле, которую хотите отредактировать.

В любом случае на экране снова появится окно Formula Workshop вместе с окном редактора Formula Editor, в котором будет отображаться выбранная формула.

Существует и более быстрый метод для редактирования формулы, если она уже находится в отчете. Щелкните на формуле на вкладке Design или Preview. Обратите внимание на то, что в строке состояния имени формулы будет предшествовать символ Crystal Reports автоматически добавляет этот символ в начало всех формул, которые вы создаете. Теперь, когда формула выделена, щелкните на ней правой кнопкой мыши и выберите в контекстном меню пункт Edit Formula (Редактировать формулу). Формула появится в окне редактора Formula Editor, готовая к редактированию.

Переименовать формулу можно как в окне проводника Fields Explorer, развернув категорию Formula Fields, так и в окне Formula Workshop. Если вы находитесь в окне проводника Fields Explorer, сначала выделите имя формулы, которую хотите переименовать. Затем либо щелкните на кнопке Rename (Переименовать), доступной в панели инструментов проводника Fields Explorer, либо нажмите клавишу <F2>. Также можете щелкнуть правой кнопкой мыши на выделенной формуле и в появившемся контекстном меню выбрать пункт Rename (Переименовать) или даже просто щелкнуть на формуле и нажать кнопку мыши, удерживая ее пару секунд. После этого имя формулы будет помещено в режим редактирования — введите новое имя для формулы и либо щелкните кнопкой мыши за пределами имени формулы, либо нажмите клавишу <ENTER>. Если эта формула используется в каких-нибудь других формулах или в каких-нибудь других областях отчета, Crystal Reports поменяет имя формулы и там. Если вы находитесь в окне Formula Workshop, выполните аналогичные действия, чтобы выделить и переименовать формулу в дереве Formula Workshop.

Если вы выделите формулу в отчете и нажмете клавишу <DEL>, этот конкретный экземпляр формулы будет удален из отчета. Однако сама формула останется в проводнике Fields Explorer и будет занимать место в оперативной и дисковой памяти после сохранения отчета. Если вы уверены в том, что эта формула больше не понадобится, удалите ее полностью. Вы можете сделать это как в окне проводника Fields Explorer (в категории Formula Fields), так и в окне Formula Workshop. Просто выделите формулу, которую хотите удалить, и нажмите клавишу <DEL>. Можете также щелкнуть на кнопке Delete (Удалить) в соответствующей панели инструментов, либо щелкнуть правой кнопкой мыши на имени формулы и выбрать пункт Delete (Удалить) в контекстном меню. После этого формула будет удалена из диалогового окна.

Внимание! Если вы удалите формулу, которая используется еще в каком-то месте отчета, например, в другой формуле или в скрытом разделе, система выдаст предупреждение о том, что удаление этой формулы может привести к тому, что другие формулы, зависящие от нее, перестанут работать. В некоторых случаях Crystal Reports просто не позволит удалить формулу, если на нее ссылаются какие-нибудь другие используемые в отчете формулы. Хотя специальное сообщение уведомляет о невозможности отмены операции удаления формулы, все же можно выполнить одну операцию отмены, которая вернет удаленную формулу в отчет. Однако операции, предшествующие данной в “стеке отмен”, будут недоступными.

 

Числовые формулы
Переменная Formula в синтаксисе Basic
Вычисление расширенной цены
Старшинство операций
Строковые формулы

Добавить комментарий


Защитный код
Обновить