Товарной позиции

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

Чтобы создать эту формулу, выполните следующие действия:

1.   Создайте новый отчет с использованием демонстрационной базы данных XTREME, входящей в состав Crystal Reports (можете воспользоваться источником данных XTREME Sample Database ODBC, если хотите). Выберите из этой базы данных таблицу Orders Detail.

2.   Выделите категорию Formula Fields, а затем щелкните на кнопке New в панели инструментов проводника Field Explorer. Или же можете запустить Formula Workshop и создавать формулу там.

3.   Когда появится окно с приглашением указать имя для формулы, введите Extended Price (Уточненная стоимость) и щелкните на кнопке ОК.

4.   После того, как откроется окно редактора Formula Editor, дважды щелкните на поле Orders Detail.Unit Price отчета в окне Field Tree (возможно, потребуется щелкнуть на знаке плюс, расположенном рядом с именем базы данных, чтобы увидеть таблицу Orders Detail) для добавления его в область ввода формул. Если поле, которое вы хотите добавить в отчет, в него уже включено, то оно уже будет отображаться в дереве полей как в разделе Report Fields, так и под именем базы данных — то, из какой области оно будет выбрано, роли не играет.

5.   Щелкните на знаке плюс рядом с категорией Arithmetic (Арифметические) в окне Operator Tree, чтобы отобразить все доступные арифметические операции. Дважды щелкните на операции умножения. (Вы можете сэкономить несколько щелчков, если просто возьмете и самостоятельно введете символ звездочки в области Formula. Хотя пробелы перед звездочкой и после нее не обязательны, формула легче читается, если они есть.)

6.   Дважды щелкните на поле Orders Detail.Quantity в дереве Field Tree, чтобы вставить его после звездочки.

Товарной позиции

7.   Если хотите добавить комментарий, поясняющий, как пользоваться этой формулой (для себя лично или для тех, кто, возможно, позже будет работать с вашим отчетом), поставьте в начале строки с комментарием две косых черты или же просто введите с клавиатуры строки комментария, выделите их с помощью мыши и щелкните на кнопке Comment (Комментарий), доступной в панели инструментов редактора Formula Editor.

Создав формулу, вы можете воспользоваться одним из нескольких доступных способов, чтобы сохранить ее и закрыть окно редактора Formula Editor и окно Formula Workshop. Если вы только начали осваивать формулы, то первое время всегда будете стремиться проверить правильность синтаксиса прежде, чем сохранить формулу. Такая проверка позволит убедиться хотя бы в том, что Crystal Reports понимает все части формулы, а также то, каким образом они должны вычисляться или обрабатываться. Проверить синтаксис формулы можно, щелкнув на кнопке Check (Проверить), которая находится в панели инструментов редактора Formula Editor, либо нажав комбинацию клавиш <ALT+C>. Если Crystal Reports понятны все части формулы, на экране появится диалоговое окно с сообщением о том, что в ходе проверки ошибки обнаружены не были. (Если вы когда-либо занимались написанием программ или пользовались формулами в электронных таблицах, то должны знать, что правильный синтаксис отнюдь не гарантирует, что формула в конечном итоге вернет ожидаемый результат!)

Если в формуле присутствует синтаксическая ошибка, Crystal Reports отобразит сообщение об ошибке и выделит проблемный фрагмент формулы. Эти сообщения об ошибке могут быть как достаточно понятными (рис. 5.8), так и несколько замысловатыми (рис. 5.9).

Товарной позиции

И то, и другое сообщение появилось из-за забытой фигурной скобки. Со временем вы научитесь понимать практически все сообщения об ошибках, и будете знать, как с ними справиться.

Внимание! Даже если вы не получите сообщение об ошибке при первой проверке формулы после ее создания, вы можете получить такое сообщение во время выполнения отчета, что зависит от фактических данных, хранящихся в базе данных. Например, это может произойти, если вы создали формулу, которая делит значение одного поля на значение другого поля, а поле, указанное в качестве делителя, неожиданно возвращает ноль. В этом случае прямо в середине процесса обработки отчета на экране появится следующее сообщение об ошибке: “Can't Divide by Zero” (*Деление на нуль невозможно”). Во избежание возникновения ошибок такого типа во время выполнения отчета для данных, не исключающих подобную вероятность, лучше добавить логику наподобие If {field} >0 Then.

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

Даже если вы выберете пропустить проверку синтаксиса и сразу сохранить формулу, Crystal Reports все равно выполнит эту проверку. Если ошибка существует, вам будет предоставлена возможность сохранить формулу с ошибкой. Однако в этом мало смысла, поскольку Crystal Reports остановится сразу, как только вы попытаетесь выполнить отчет, и отобразит сообщение об ошибке в окне редактора Formula Editor. Получив сообщение об ошибке при сохранении формулы, лучше исправьте эту ошибку и попробуйте сохранить формулу снова. Если в формуле больше нет синтаксических ошибок, сообщение об ошибке не появится и формула будет сохранена.

Как только формула будет сохранена, а окно Formula Workshop закрыто, имя этой формулы появится в проводнике Fields Explorer в категории Formula Fields. После этого ее можно будет просто перетащить в отчет подобно обычному полю базы данных. В случае формулы Extended Price следует обратить внимание на то, что она приняла тип данных currency. Это произошло потому, что в ней валютное поле было умножено на числовое поле, в результате чего данная формула стала “валютной”.

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

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


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