Использование формул

Оценить
(0 голоса)
Двумя очень важными функциями являются DateValue и DDate, выполняющие одни и те же действия. Хотя у функции DateValue имеется несколько версий, пожалуй, самой “загадочной” из них является версия, которая принимает в качестве аргумента одну строку. Эта строка может содержать несколько видов строк-дат, таких, например, как 10/1/99, “октябрь, 17, 2000”; “21 февраля 2003 года” и так далее. Crystal Reports оценит эту строку, чтобы определить, где находятся части, соответствующие месяцу, дню и году, и возвратит в качестве результата значение “реальной” даты. На зйметку! Если в качестве аргумента в функции DateValue указывается значение года из двух цифр, Crystal Reports применяет подход “скользящей шкалы”…
Оценить
(0 голоса)
Одна из наиболее распространенных жалоб, которые можно услышать от привередливых составителей отчетов на основе баз данных, звучит приблизительно так: “Crystal Reports слишком сложен, это инструмент для программистов”. С подобным утверждением можно соглашаться или не соглашаться, однако, одно не подлежит сомнению — в языке формул Crystal Reports действительно присутствуют элементы стандартных языков программирования. И одним из таких элементов является логика If-Then-Else. Комбинация If-Then-Else лежит в основе большинства компьютерных программ, следовательно, как только вы освоите концепции If-Then-Else, вы сможете начать выполнять действительно сложные операции для настройки отчета по своему вкусу. Формулы If-Then-Else выполняют проверку поля базы данных, другой формулы либо и того,…
Оценить
(0 голоса)
Значение поля базы данных Order Amount (Объем заказа) проверяется на предмет того, является ли оно больше 5000. Если проверка завершается успешно, формула возвращает строку “Бонусный заказ”. В противном случае формула возвращает строку “Обычный заказ”. Для объединения нескольких операций сравнения вместе могут использоваться также и булевские операции. Ниже показана несколько улучшенная формула из предыдущего примера; в ней добавлена еще одна операция сравнения, а обе операции сравнения объединены с помощью булевской операции: If {Order.Order Amount} > 5000 And Month({Order.Order Date}) = 12 Then "Праздничный бонусный заказ" Else "Обычный заказ" Здесь для того, чтобы формула вернула строку “Праздничный бонусный заказ”, сумма заказа должна…
Оценить
(1 голос)
Когда вы создаете формулы If-Then-Else, вы обязательно должны обращать особое внимание на то, какие типы данных вы используете. Не забывайте удостовериться в том, вы применили одинаковые типы данных во всех операциях сравнения, которые включили в часть If. Например, выражение, проверяющее, является ли США (USA) страной, в которой проживает заказчик (Customer. Country), должно выглядеть так: If {Customer.Country} = "USA" Поскольку Customer. Country — это строковое поле, сравниваться оно может только со строковым литералом, заключенным в кавычки или апострофы (в синтаксисе Basic это должны быть кавычки). Если проверяемое поле является числовым, использовать следует числовую константу (как было показано в примере с Orders…
Оценить
(0 голоса)
Хотя вас, конечно же, не выгонят за это из команды разработчиков отчетов, почему бы не выполнить еще одно простое действие, чтобы отчет выглядел еще лучше? Попробуйте сделать следующее: If {0Ship Days} = 0 Then "Доставка в тот же день" Else If {0Ship Days} = 1 Then "Доставка через 1 день" Else "Доставка через " + ToText({0Ship Days}. 0) + " дня" Это пример составного, или вложенного, оператора If-Then-Else. Обратите внимание на то, что количество конструкций If, Then и Else в формуле может быть любым.   Вы можете сделать второй оператор If результатом первого Then или результатом первого Else и так…
Оценить
(0 голоса)
If {Customer.Counry Name} = Next({Customer.Counry Name}) Then {Customer.Counry Name} + " продолжается на следующей странице." Функция Next считывает поле в следующей записи «базы данных. Данная формула сравнивает поле р следующей записи с таким же полем в текущей записи. Если значения совпадут, то на следующей странице в первой записи будет отображено имя этого же заказчика, о чем будет информировать соответствующее текстовое сообщение. Как правило, подобные формулы размещаются в нижнем колонтитуле страницы. Совет, Обратите внимание на то, что в данной формуле нет конструкции Else. В синтаксисе Crystal наличие этой конструкции в формуле If-Then-Else не является обязательным. Если конструкция Else не будет добавлена…
Оценить
(0 голоса)
Оператор Select Case очень похож на оператор Select Case, используемый в Visual Basic. Он упрощает выполнение проверок на основе множества условий с возвращением соответствующих результатов — те громоздкие операторы If-Then-Else, о которых шла речь выше, теперь могут быть заменены удобочитаемой и более легкой для восприятия логикой. Взгляните на представленный ниже оператор If-Then-Else: If {0Ship Days} = 0 Then "Доставка в тот же день" Else If {@Ship Days} = 1 Then "Доставка через 1 день" Else "Доставка через " + ToText({@Ship Days}. 0) + " дня" Это сравнительно простая формула, которая проверяет, чему равно значение, вычисленное формулой @Ship Days, — 0…
Оценить
(1 голос)
Программистам, работающим на языке Basic, всегда нравилась возможность проходить в цикле по коду снова и снова с целью реализации логики повторения. Она также может оказаться полезной и в ряде ситуаций, возникающих при разработке отчета (например, если нужно просмотреть в цикле поле параметра, принимающего множество значений, или просканировать числовой массив). Crystal Reports предлагает цикл For, причем в обоих синтаксисах (однако в синтаксисе Crystal конструкция Next отсутствует). Цикл For использует переменную-счетчик для подсчета количества проходов через определенную логическую структуру. В конструкции For устанавливается как начальное, так и конечное значение переменной-счетчика. Необязательная конструкция Step сообщает оператору For, на какую величину должно быть увеличено…
Оценить
(0 голоса)
Циклическая структура, подобная For, может использоваться для повторного выполнения операторов в случае, если заданное условие удовлетворено. Если цикл For для определения количества раз, которое должен выполняться цикл, использует переменную-счетчик, то цикл While Do вычисляет условие перед тем, как будет выполнена очередная итерация цикла, и останавливается, если условие перестает быть истинным. Эта конструкция похожа на циклы Do и While, используемые в Visual Basic и других процедурных языках. В показанном ниже листинге представлена формула, которая присваивает переменной значение поля телефонного номера (взятого из базы данных), после чего с помощью цикла While Do просматривает эту переменную на наличие дефисов. Использование функций Join и…
Оценить
(0 голоса)
Еще один тип формулы, который вам может понадобиться — это булевская формула. Такая формула может возвращать только два значения — true и false. Вы можете рассматривать булевскую формулу просто как “проверяющую” часть формулы If-Then- Else. При вычислении такая формула в конечном итоге возвращает только одно из двух упомянутых значений. Ниже показан простой пример булевской формулы: {@Ship Days} > 3 В данной формуле существующая формула @Ship Days (которая является числовой) проверяется на предмет превышения значения 3 (что указывает на исключительные условия доставки). Она просто либо больше 3, либо нет. Если она больше 3, формула возвращает true, а если нет — false.…