Присваивание значения переменной

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

Если после объявления переменной сразу не присвоить какое-то конкретное значение, толку от нее будет мало. Возможно, вы решите использовать переменную в качестве накопителя (значение которого будет увеличиваться на единицу всякий раз, когда выполняется некоторое указанное условие). А может, вы захотите присвоить ее строковое значение, к которому по мере продвижения отчета будут добавляться дополнительные строковые значения. Присваивание значения переменной

Совет. Если вы объявили переменную, но не присвоили ей значения, ей будет присвоено значение по умолчанию, которое зависит от указанного для нее типа данных. Для числовых переменных и переменных типа currency значением по умолчанию является 0, для строковых переменных — пустая строка, для булевских переменных — значение false, а для переменных типа даты — “0/0/00”. Для переменных типа даты/времени и времени значения по умолчанию не предусмотрены.

Синтаксис Crystal предлагает два варианта, в соответствии с которыми присвоить переменной значение можно либо в момент ее объявления, либо позднее, в отдельной строке формулы. В любом случае, чтобы присвоить переменной значение, вы должны использовать операцию присваивания, обозначаемую знаком двоеточия, за которым следует знак равенства. Очень важно не забывать о знаке двоеточия. Знак равенства отвечает только за операцию сравнения — вы обязательно должны ставить перед знаком равенства двоеточие, чтобы операция присваивания выполнялась корректно, если только вы не используете синтаксис Basic; в этом синтаксисе знак равенства применяется как для операции присваивания, так и для операции сравнения. Ниже показан пример присваивания значения переменной в синтаксисе Crystal, в отдельной строке:

NumberVar CustomerCount;

CustomerCount := CustomerCount + 1

Здесь переменная CustomerCount объявляется в первой строке (которая завершается точкой с запятой), а значение получает во второй строке. В данной конкретной формуле переменная CustomerCount будет сохранять свое значение от записи к записи (не забывайте о том, что в синтаксисе Crystal переменным в качестве области действия по умолчанию присваивается Global) , так что ее значение будет увеличиваться на единицу каждый раз, когда будет выполняться эта формула.

При желании сделать так, чтобы в заголовке группы значение переменной сбрасывалось, ей потребуется присвоить значение 0. Ниже показан пример того, как в синтаксисе Crystal можно одновременно объявить переменную и присвоить ей значение:

NumberVar CustomerCount := 0;

Здесь переменная объявляется, а за объявлением следует операция присваивания и значение, которое должно быть присвоено этой переменной. Размещение данной формулы в заголовке группы приведет к тому, что значение переменной CustomerCount будет сбрасываться в начале каждой группы.

Совет. Не забывайте о том, что точка с запятой вовсе не обязательно всегда должна ставиться в конце последней строки формулы, поскольку она служит для разделения операторов. Если формула только объявляет переменную и присваивает ей значение, то в конике оператора объявления/присваивания точка с запятой не нужна.

Вовсе не обязательно присваивать переменной значение при каждом выполнении формулы, а также присваивать ей каждый раз одно и то же значение. Творческое использование логических конструкций, таких как If-Then-Else или Select Case, наряду с операциями присваивания позволяет наделить отчет такой степенью гибкости, которой могут позавидовать многие развитые языки программирования. Взгляните на следующую формулу, которая объявляет несколько переменных и условно присваивает им значения:

CurrentVar BonusAmount;

StringVar HigestCustName;

DateTimeVar DateBonusReached;

If {Order.Order Amount} > BonusAmount Then (HigestCustName := {Customer.Customer Name};

DateBonusReached := {Order.Order Date};

BonusAmount := {Order.Order Amount})

Повнимательней присмотритесь к этой формуле. Она, будучи помещенной в раздел подробностей, отслеживает сумму самого большого заказа по мере просмотра записей в отчете. Когда сумма заказа (Order Amount) превышает предыдущую сумму самого большого заказа, клиент (Customer Name), разместивший этот заказ, и дата (Order Date) размещения этого заказа, сохраняются в соответствующих переменных. Затем новое значение суммы наибольшего заказа присваивается сумме бонуса (BonusAmount). В этой формуле следует обратить внимание на такие моменты:

•    Внутри круглых скобок находится несколько операторов присваивания, отделенных друг от друга точками с запятой. Все они будут выполнены, но только последний из них определяет, какой результат эта формула отобразит в отчете. В данном примере последний оператор использует тип данных currency, значит, формула отобразит в отчете результат типа currency.

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

•    Если вы отслеживаете квоты или подобные показатели как для уровня групп, так и для уровня отчета (например, вы хотите знать премированных заказчиков по каждому региону или по отчету в целом), то должны назначить и поддерживать два набора переменных: один для уровня групп, которые обновляются в заголовке групп, а другой — для уровня отчета, который не обновляется.

 

Отображение содержимого переменной
Времена вычисления формул и проходы отчета
Библиотеки пользовательских функций
Поля текущих сумм
Crystal Reports предлагает формулы

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


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