WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     | 1 |   ...   | 15 | 16 ||

«Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Содержание 1 Руководство SAP Crystal Reports.NET SDK Developer Guide............................ 4 1.1 Начало ...»

-- [ Страница 17 ] --

Dim p 'The type of p is not known yet p = "bye" 'The type of p is now set to be String Dim q 'The type of q is not known yet q = Array ("hello", p) 'q is a String Array 'Error- p is a String variable and cannot hold a Number 'r is a Number variable, and holds the value 'The types of a and c are not known yet Dim a, b As Boolean, c 'The type of a is now set to Boolean 'and its value is False 'The type of c is now set to Number and its value is c=2+3* Примеры объявления и инициализации переменных диапазона Dim gradeA, quarter 'The type of gradeA is set to Number Range gradeA = 90 To 'The type of quarter is set to Date Range quarter = CDate (1999, 10, 1) To CDate (1999, 12, 31) 1.7.2.1.9.2 Область действия переменной (синтаксис Basic) Область действия переменной служит для определения возможности использования переменных одной формулы в других формулах. Существует три уровня области действия в SAP Crystal Reports:

Каждая переменная имеет область действия, которая определяется при объявлении переменной.

1.7.2.1.9.2.1 Локальные переменные (синтаксис Basic) Переменные с локальной областью действия, или локальные переменные, объявляются при помощи ключевых слов Dim или Local. Приведенные ниже выражения являются эквивалентными.

Local x As Number Dim y As Number © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Использование локальных переменных ограничено одной формулой и одним вычислением этой формулы.

Это означает, что доступ к значению локальной переменной одной формулы невозможен из другой формулы.

Пример Rem Formula A Local x as Number formula = x Rem Formula B EvaluateAfter ({@Formula A}) Local x as Number formula = x + Вызов функции EvaluateAfter ({@Formula A}) обеспечивает вычисление формулы B после формулы A.

Формула A возвращает значение 10, а формула B — значение 1. Формула B не имеет доступа к значению x формулы A, поэтому не может использовать значение 10 и добавить к нему 1. Вместо этого она использует значение по умолчанию для неинициализированной локальной переменной x, содержащейся в формуле B, которое равно 0, и добавляет к нему 1, чтобы получить значение 1.

Локальные переменные можно также создавать с одинаковым именем, но с разными типами в разных формулах. Например, объявления типов в формулах А и В не конфликтуют:

Rem Formula C Local x as String x = "hello" formula = x Локальные переменные являются наиболее эффективными из трех областей действия. Кроме того, они не конфликтуют друг с другом в разных формулах. По этим причинам переменные рекомендуется объявлять как локальные во всех возможных случаях.

Глобальные переменные используют один и тот же блок памяти для хранения какого-либо значения по всему основному отчету. Затем это значение может использоваться всеми формулами, в которых объявляется данная переменная, за исключением формул, содержащихся в подотчетах. Объявите глобальную переменную, как показано в следующем примере:

Global y As String Поскольку глобальные переменные используют одни и те же значения по всему основному отчету, невозможно объявить глобальную переменную в одной формуле с одним типом, а затем объявить глобальную переменную с таким же именем в другой формуле с другим типом.

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Использование глобальных переменных Глобальные переменные часто используются для выполнения сложных вычислений, в которых результаты формулы зависят от группировки и макета страницы напечатанного отчета. Для этого необходимо создать несколько формул, поместить их в различные разделы отчета и обеспечить взаимодействие разных формул посредством глобальных переменных.

Пример Rem Formula C Global x as Number formula = x Rem Formula D WhileReadingRecords Global x as Number x=x+ formula = x Если формула C указывается в верхнем колонтитуле отчета, а затем формула D добавляется в раздел сведений, вычисление формулы C выполняется перед вычислением формулы D. Формула C вычисляется однократно, после чего формула D будет вычисляться для каждой записи, содержащейся в разделе сведений. Формула С возвращает значение 10. Для первой записи раздела сведений формула D возвращает значение 11. Причина такого результата заключается в том, что значение 10 для х сохраняется во время его указания формулой C. Затем формула D добавляет 1 к этому значению, устанавливая 11 для записи х, а после возвращает значение 11. Для второй записи раздела сведений формула D возвращает значение 12, добавляя 1 к ранее сохраненному значению х, которое равнялось 11. Этот процесс продолжается для остальных записей раздела сведений.

Вызов функции WhileReadingRecords дает программе SAP Crystal Reports команду повторно вычислять формулу D при чтении каждой записи отчета. В противном случае программа будет вычислять формулу только один раз перед чтением записей из базы данных, поскольку эта формула не содержит ни одного поля базы данных. После чего формула вернет значение 11 вместо 11, 12, 13 и т.д. по мере обработки следующих записей.

Если инструкция x = x + 1 заменяется инструкцией x = x + {Orders Detail.Quantity}, создается эффект промежуточного результата на основании значения {Orders Detail.Quantity}, хотя оно начинается с 10, а не с 0 из-за использования формулы C. В этом случае можно обойтись без вызова функции WhileReadingRecords, поскольку она будет вызвана автоматически, так как формула содержит поле базы данных.



1.7.2.1.9.2.3 Общие переменные (синтаксис Basic) Общие переменные используют общие блоки памяти для хранения своих значений, которые доступны в основном отчете и во всех его подотчетах. Таким образом, общие переменные имеют область действия даже большую, чем глобальные переменные. Чтобы создать общую переменную, объявите ее в формуле основного отчета, как показано в следующем примере:

Shared x As Number x = © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide и объявите ее в формуле в подотчете, как показано в следующем примере:

Shared x as Number Чтобы использовать общую переменную, необходимо объявить такую переменную и присвоить ей значение до передачи ее между основным отчетом и подотчетом.

1.7.2.1.9.3 Объявление переменных массива (синтаксис Basic) Существует несколько различных способов объявления переменных массива. Первый способ включает использование пустых круглых скобок и явного указания типа массива.

'Объявление x в качестве глобальной переменной типа массива чисел.

Global x () As Number 'Инициализация x.

x = Array (10, 20, 30) 'Объявление у в качестве общей переменной типа массива диапазона строк.

Shared y () As String Range 'Инициализация y.

y = Array ("A" To "C", "H" To "J") Второй способ заключается в объявлении переменной без указания того, что это массив, а также без указания ее типа и без ожидания первого присвоения значения переменной для полного указания ее типа:

'Объявление y в качестве локально переменной, но без указания типа.

'Для переменной y теперь задан тип массива строк y = Array ("Sun", "Mon", "Tue", "Wed", "Th", _ Третий способ заключается в объявлении переменной в качестве массива, но без полного указания ее типа до первого присвоения значения. С учетом объявления переменной у в примере выше:

'Объявление z в качестве локальной переменной, являющейся массивом.

Local z() 'Переменная z объявлена массивом ("Mon", "Tue") и является массивом строк.

Четвертый способ заключается в явном указании размера массива во время объявления. При использовании этого способа массив создается автоматически, а для его заполнения используются значения по умолчанию. Например, в массиве чисел каждый элемент инициализируется значением ноль (0), а в массиве строк пустыми строками "". Поскольку такой тип объявления фактически создает массив, необходимо указать его тип с помощью условия As, чтобы программа SAP Crystal Reports могла определить, какой объем памяти необходимо зарезервировать для массива.

Dim a(2) As String a(1) = "good" a(2) = "bye" 'Оператор & может использоваться для соединения строк, которые возвращаются Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide формулой. Формула возвращает строку "goodbye".

formula = a(1) & a(2) Присваивание значений элементам массива Элементам массива можно присвоить значения, а также использовать эти значения элементов для других вычислений.

Global x() As String x = Array ("hello", "bye", "again") ' x == Array ("hello", "once", "again").

x (2) = "once" 'Указанная ниже инструкция вызовет ошибку, если не будет прокомментирована, поскольку массив имеет размер 3.

'x (4) = "zap" 'Формула возвращает строку "HELLO".

formula = UCase (x (1)) Ключевые слова Redim и Redim Preserve могут использоваться для изменения размера массива. Это может быть полезным, если в массив необходимо добавить дополнительную информацию. Ключевое слово Redim удаляет предыдущее содержимое массива, прежде чем изменить его размер, а ключевое слово Redim Preserve сохраняет предыдущее содержимое.

Dim x () As Number Redim x (2) ' x = Array (0, 0) x (2) = 20 ' x = Array (0, 20) Redim x (3) ' x = Array (0, 0, 0) x (3) = 30 ' x = Array (0, 0, 30) Redim Preserve x (4) ' x = Array (0, 0, 30, 0) formula = "finished" Массивы и циклы For/Next В следующем примере показано создание и использование массива Array (10, 20, 30,..., 100) с использованием цикла For/Next. Указанная ниже формула возвращает число 20.

Dim b (10) As Number Dim i For i = 1 To Next i formula = b(2) В одной инструкции можно объявить несколько переменных, отделяя их друг от друга с помощью запятых.

© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Связанные сведения Циклы For/Next (синтаксис Basic) [стр. 825] 1.7.2.1.9.4 Значения по умолчанию для простых типов (синтаксис Basic) Неинициализированная переменная будет иметь значение по умолчанию для своего типа. В целом при программировании не рекомендуется полагаться на значения типов по умолчанию. Например, инициализируйте все локальные переменные в формуле, все глобальные переменные в формуле, помещенной в верхний колонтитул отчета, а также все общие переменные в формуле, помещенной в верхний колонтитул главного отчета.

При изменении размеров массива с помощью ключевого слова Redim записи заполняются значениями по умолчанию для типов.

Значения по умолчанию "" 'Пустая строка.

CDate (0, 0, 0) 'Нулевое значение даты.

Нулевое значение времени. Значение, использующееся неинициализированной переменной времени.

Нулевое значение даты-времени. Значение, использующееся неинициализированной переменной даты-времени.

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

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Связанные сведения Простые типы данных (синтаксис Basic) [стр. 799] 1.7.2.1.9.5 Автоматические преобразования типов (синтаксис Basic) Как правило, в программе SAP Crystal Reports значения одного типа нельзя использовать вместо значений другого типа без явного указания функции преобразования типов. Например:

Dim postalCode as String 'Ошибка - присвоение числового значения строковой переменной.

postalCode = 'ОК - используйте функцию преобразования типов CStr, чтобы создать "10025".

postalCode = CStr (10025, 0) Однако некоторые преобразования выполняются автоматически:

числовых значений в значения валюты;

значений даты в значения даты-времени;

простого типа в диапазон такого же базового простого типа.

Например, следующие присвоения являются правильными:

Dim cost As Currency 'Аналогично: cost = CCur (10) Dim orderDate As DateTime 'Аналогично: orderDate = CDateTime (1999, 9, 23, 0, 0, 0) orderDate = CDate (1999, 9, 23) Dim aRange As Number Range 'Аналогично: aRange = 20 To Dim aRangeArray () As Number Range 'Аналогично: aRangeArray = Array (10 To 10, 20 To 25, 2 To 2) aRangeArray = Array (10, 20 To 25, 2) Обратные преобразования не разрешены. Например:

Dim num As Number num = 5 + CCur (10) 'Это приведет к ошибке.

' Convert to Number type using the CDbl function.

num = CDbl (5 + CCur (10)) 5 преобразуется в CCur (5) и добавляется к CCur (10), чтобы получить CCur (15). Однако это значение типа "валюта" не может автоматически присваиваться числовой переменной num, поскольку автоматические преобразования из валюты в число не разрешены. Аналогичным образом функции, принимающие аргумент "валюта", вместо него могут иметь числовой аргумент, и числовой аргумент будет преобразован © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide в аргумент "валюта", тогда как функции, принимающие числовой аргумент, не могут иметь аргумент "валюта" без предварительного явного преобразования валюты в число с помощью функции CDbl.

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

При использовании функции в формуле укажите имя функции и необходимые аргументы. Например, для функции Len, которая вычисляет длину строки, необходимо указать аргумент String. Приведенная ниже функция возвращает числовое значение 5.

Dim x As String x = "hello" formula = Len (x) Указание для функции аргументов неправильного типа приводит к возникновению ошибки. Например, вызов функции Len (3) приведет к ошибке, поскольку эта функция не принимает аргумент Number.

В некоторых случаях функции могут принимать различное количество аргументов или типов аргументов.

Например, функция CDate может принимать отдельный аргумент String для формирования значения даты или три числовых значения, обозначающих год, месяц и день соответственно, для формирования значения даты. См. раздел Типы "дата", "время" и "дата-время" (синтаксис Basic) [стр. 801].

Примеры использования функции Mid Dim x as String x = "hello" 'Начало в позиции 2, переход к концу строки formula = Mid (x, 2) 'теперь формула имеет значение "ello" 'Start at position 2, extract 1 character formula = Mid (x, 2, 1) 'теперь формула имеет значение "e" Функции имеют такие классы: математические, итоговые и финансовые функции, функции для работы со строками, датами и временем, диапазонами дат и массивами, функции преобразования типов, функции условных операторов, функции оценки времени, функции состояния распечатки, функции свойств документа, а также дополнительные функции. Кроме того, существует несколько функций, специфичных для формул условного форматирования.

Функции, сходные с функциями Visual Basic Такие группы функций, как математические и финансовые функции, функции для работы со строками и датами/временем, функции преобразования типов и функции условных операторов в основном включают Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide функции, которые знакомы пользователям Visual Basic. Большинство функций работает таким же образом, как и функции Visual Basic с идентичными названиями.

В некоторых случаях функции будут иметь больше перегрузок, чем доступно для функций Visual Basic.

Например, функция CDate поддерживает перегрузку Visual Basic для создания значения даты из строкового значения, например: CDate ("Sept 18, 1999"). При этом она также поддерживает перегрузку создания значения даты путем указания года, месяца и дня в качестве аргументов Number, например:

CDate (1999, 9, 18). Перегрузки указываются в дереве "Функции".

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

Например, функция Length, которая является обычной функцией синтаксиса Crystal для определения длины строки, не указана в дереве функций синтаксиса Basic по той причине, что работает аналогично 1.7.2.1.10.2 Итоговые функции (синтаксис Basic и Crystal) В группе итоговых функций содержатся функции для создания итоговых полей, например:

Sum({Orders.Order Amount}, {Orders.Ship Via}) Как правило, итоговые поля создаются с использованием диалогового окна "Вставка итога" или "Вставка итоговой суммы". Кроме того, можно создать итоговое поле исключительно для использования в собственной формуле путем заполнения аргументов в одной из функций в разделе итоговых функций.

Однако группы, которые используются в итоговых полях, должны уже существовать в отчете.

1.7.2.1.10.3 Диапазоны дат (синтаксис Basic и Crystal) Диапазоны дат, создаваемые указанными функциями, зависят от текущей даты. Например, если сегодня сентября 2008 года, тогда значением диапазона дат будет LastFullMonth:

CDate(#Aug 1, 2000#) To CDate(#Aug 31, 2000#) Эта возможность весьма полезна во многих случаях. Но что делать, если необходимо определить диапазон дат, основываясь на поле базы данных, например {Orders.Order Date}? Вместо этого можно использовать функции даты-времени.

Пример синтаксиса Basic d = CDate ({Orders.Order Date}) Dim dr As Date Range dr = DateSerial (Year(d), Month(d) - 1, 1) To _ DateSerial (Year(d), Month(d), 1 - 1) 'Здесь dr означает значение диапазона дат, включающее последний полный месяц до {Orders.Order Date}.

© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Пример синтаксиса Crystal Local DateVar d := CDate ({Orders.Order Date});

Local DateVar Range dr;

dr := DateSerial (Year(d), Month(d) - 1, 1) To DateSerial (Year(d), Month(d), 1 - 1);

//Здесь dr означает значение диапазона дат, включающее последний полный месяц до {Orders.Order Date}.

Функция DateSerial облегчает эту задачу, поскольку при ее использовании не нужно волноваться об особых случаях. Эта функция не позволит создать недействительную дату. Например, DateSerial (1999, 1 соответствует 1 декабря 1998 года. Обратите внимание, что в вышеуказанном примере {Orders.Order Date} фактически является полем DateTime, поэтому используется функция CDate, чтобы преобразовать его в дату путем отбрасывания временной части.

Связанные сведения Типы данных диапазонов (синтаксис Basic) [стр. 802] 1.7.2.1.10.4 Функции массива (синтаксис Basic и Crystal) Функции массива вычисляют итоговые значения элементов массива. Например, функция Sum при применении к массиву возвращает сумму элементов массива.

Пример синтаксиса Basic Следующая формула возвращает значение 100:

formula = Sum (Array (10, 20, 30, 40)) Пример синтаксиса Crystal Следующая формула возвращает значение 100:

Sum ([10, 20, 30, 40]) Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Связанные сведения Типы данных массива (синтаксис Basic) [стр. 803] 1.7.2.1.10.5 Функции оценки времени (синтаксис Basic и Crystal) К этим функциям относятся специальные функции отчетов: BeforeReadingRecords, WhileReadingRecords, WhilePrintingRecords и EvaluateAfter. С их помощью можно управлять временем вычисления формул в SAP Crystal Reports.

Формула может вычисляться до получения записей из базы данных, во время чтения записей из базы данных, но до их группирования, сортировки или суммирования, или во время печати отчета, когда записи группируются, сортируются и суммируются. Обычно программа SAP Crystal Reports задает подходящее время вычисления формулы в зависимости от объема информации, которая необходима этой формуле.

Например, если формула использует поле базы данных, она не может быть вычислена до того, как из базы данных будут считаны записи. Однако иногда может понадобиться принудительно использовать более позднее время вычисления, чем обычно, чтобы получить желаемый результат. Примеры см. в разделе Глобальные переменные (синтаксис Basic) [стр. 807] или Глобальные переменные (синтаксис Crystal) [стр.

844].

Обычно возвращаемое значение функции затем используется в формуле. Функции оценки времени вызываются с тем, чтобы изменить внутреннее поведение SAP Crystal Reports. Возвращаемое ими значение не используется. Для вызова таких функций достаточно поместить их имена в отдельную инструкцию и указать перед ними ключевое слово Call (не обязательно).

WhilePrintingRecords Call WhilePrintingRecords 1.7.2.1.10.6 Функции состояния распечатки (синтаксис Basic и Crystal) Эти функции являются специальными функциями отчетов, связанными с состоянием просматриваемого отчета.

Например, {Orders.Order Date} относится к значению поля в текущей записи, а PreviousValue ({Orders.Order Date}) относится к значению в предыдущей записи. NextValue ({Orders.Order Date}) является значением в следующей записи. IsNull ({Orders.Order Date}) проверяет, является ли значение поля пустым.

Другие примеры функций: PageNumber и TotalPageCount. Они могут использоваться для получения сведений о нумерации страниц в отчете.

© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.7.2.1.10.7 Функции свойств документа (синтаксис Basic и Crystal) Эти функции возвращают значения атрибутов, относящихся к документу. Например, это функции PrintDate и ReportTitle.

1.7.2.1.10.8 Дополнительные функции (синтаксис Basic и Crystal) Это функции, содержащиеся в библиотеках пользовательских функций (User Function Library, UFL). UFL – это отдельная библиотека динамических ссылок или сервер автоматизации, которые создаются пользователем и используются программой SAP Crystal Reports для добавления настроенных функций к языку формул. Написание UFL гораздо сложнее, чем написание формулы с помощью синтаксиса Basic или Crystal.

Использование библиотек UFL делает отчеты менее портативными, поскольку вместе с отчетом необходимо предоставлять UFL.

1.7.2.1.10.9 Функции условного форматирования (синтаксис Basic) При написании формулы условного форматирования могут понадобиться дополнительные функции, которые отображаются вверху дерева функций.

Например, нужно отформатировать поле {Customer.Last Year's Sales} таким образом, чтобы продажи на сумму более 100 000 долл. печатались зеленым цветом, продажи на сумму менее 15 000 долл. печатались красным, а все остальные продажи — черным.

If {Customer.Last Year's Sales} > 100000 Then formula = crGreen ElseIf {Customer.Last Year's Sales} < 15000 Then formula = crRed Else formula = crBlack End If Поскольку это функция форматирования цвета шрифта, в дереве функций отображается список констант цвета. В этом примере используются три константы: crGreen, crRed и crBlack. Вместо констант цвета можно использовать и фактические числовые значения. Например, crRed соответствует 255, а crGreen — 32768. Однако формула будет более понятной при использовании констант цвета. В синтаксисе Basic все функции констант имеют префикс "cr".

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Некоторые атрибуты форматирования не используют функции констант. Например, чтобы не печатать значения {Customer.Last Year's Sales}, если суммы продаж составили меньше 50 000 долл., для атрибута подавления можно написать следующую формулу условного форматирования:

If {Customer.Last Year's Sales} < 50000 Then formula = True ' Подавлять значение.

formula = False ' Не подавлять значение.

Или более упрощенный вариант:

formula = {Customer.Last Year's Sales} < Если сумма продаж за прошлый год составила менее 50 000 долл., тогда выражение {Customer.Last Year's Sales} < истинно, и формула возвращает значение True. Если продажи за прошлый год составили 50 000 долл.

или больше, тогда выражение {Customer.Last Year's Sales} < ложно, и формула возвращает значение False.

1.7.2.1.10.10 Универсальные функции условного форматирования (синтаксис Basic) Доступны следующие три универсальные функции условного форматирования:

ТекущееЗначениеПоля АтрибутПоУмолчанию GridRowColumnValue Эти функции отображаются в верхней части дерева функций (по необходимости). См. раздел Диалоговое окно "Редактор формул" [стр. 735].

Функцию DefaultAttribute можно использовать для любой формулы форматирования, функцию CurrentFieldValue — для любой формулы форматирования, при помощи которой форматируется значение поля, а функцию GridRowColumnValue — для любой формулы форматирования, при помощи которой выполняется форматирование значения поля в перекрестной таблице или сетке OLAP.

Функция CurrentFieldValue позволяет выполнять условное форматирование ячеек перекрестной таблицы или сетки OLAP, основываясь на их значениях. Функция GridRowColumnValue позволяет выполнять условное форматирование ячеек перекрестной таблицы или сетки OLAP, основываясь на © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide значениях заголовков строк или столбцов. Эти две функции необходимы в некоторых ситуациях, когда нет другого способа указать данные поля при помощи языка формул.

Например, чтобы скрывать ячейки перекрестной таблицы, если их значения меньше 50 000, используется следующая функция:

formula = CurrentFieldValue < 1.7.2.1.11 Операторы (синтаксис Basic) Операторы представляют собой специальные символы или слова между двумя или более значениями, описывающие операцию или действие, которые должны произойти. Программа считывает операторы в формуле и выполняет указанные действия.

1.7.2.1.11.1 Арифметические операторы (синтаксис Basic) Арифметические операторы используются для объединения чисел, числовых значений, числовых полей и числовых функций с целью получения других чисел.

К арифметическим операторам относятся сложение (+), вычитание (-), умножение (*), деление (/), целочисленное деление (\), модули (Mod), отрицание (-) и возведение в степень (^).

'Вычисление процента выпущенных и находящихся в обращении привилегированных акций от общего объема акций.

formula = ({Financials.Preferred Stock} / _ formula = 7 + 2 * 3 - 2 + Sqr(6 + 3) * Len("up") 'Формула возвращает значение 17.

Порядок старшинства Обычно программа вычисляет выражения в следующем порядке:

слева направо;

в соответствии с правилами старшинства базовой математики.

В SAP Crystal Reports арифметические операторы имеют такой же порядок старшинства, как и в Visual Basic. Ниже указан список, начиная от наибольшего старшинства до наименьшего:

возведение в степень (^);

отрицание (-);

умножение и деление (*, /);

целочисленное деление (\);

модули (Mod);

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide сложение и вычитание (+, -).

Сначала слева направо выполняются операции умножения и деления. После этого выполняется сложение и вычитание. Например: 5 + 10 * 3 = 5 + 30 = 35.

Порядок старшинства можно менять, используя круглые скобки. Например: (5 + 10) * 3 = 15 * 3 = 45. Если вы не уверены в порядке старшинства, уточните порядок выполнения действий с помощью круглых скобок.

1.7.2.1.11.2 Операторы сравнения (синтаксис Basic) Операторы сравнения обычно используются для сравнения операндов условия в управляющей структуре, такой как инструкция If.

К операторам сравнения относятся равенство (=), неравенство (), меньше чем (=).

Все операторы сравнения, используемые в виде группы, уступают по старшинству арифметическим операторам. Например, выражение 2 + 3 < 2 * 9 аналогично выражению (2 + 3) < (2*9).

1.7.2.1.11.3 Булевы операторы (синтаксис Basic) Булевы операторы обычно используются с операторами сравнения, чтобы создавать условия для управляющих структур.

К булевым операторам относятся (в порядке старшинства от старшего к младшему): Not, And, Or, Xor, Eqv и Imp.

Булевы операторы в виде группы уступают по старшинству операторам сравнения. Так, выражение 2 < And 4 >= -1 аналогично выражению (2 < 3) And (4 >= -1).

1.7.2.1.11.4 Неопределенные поля и значения (синтаксис Basic) Как правило, когда программа SAP Crystal Reports обнаруживает в формуле поле с неопределенным значением, вычисление этой формулы сразу же прекращается без выдачи какого-либо значения. Чтобы обеспечить обработку полей с неопределенными значениями в формуле, необходимо явно выполнить эту операцию с использованием одной из специальных функций, предназначенных для обработки таких значений: IsNull, PreviousIsNull или NextIsNull.

Операторы, используемые при вычислении программой SAP Crystal Reports условия:

IsNull({Product.Color}) Or _ InStr({Product.Color}, " ") = © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Сначала программа вычисляет IsNull ({Product.Color}), и если в результате устанавливается, что это условие является истиной, программе становится известно, что все условие также является истиной, и ей не нужно выполнять следующую проверку:

InStr({Product.Color}, " ") = Другими словами, программа SAP Crystal Reports прекращает вычисление логического выражения, если она может предсказать результаты всего выражения. В следующем примере формула предотвращает попытки деления на ноль, если знаменатель равен 0:

Dim num As Number, denom As Number If denom 0 And num / denom > 5 Then Visual Basic не поддерживает данный прием, поскольку в этом синтаксисе вычисляются все части логического выражения, даже если в этом нет необходимости.

Поле {Product.Color} содержит оба основных цвета, например "красный" и "черный", а также описательные названия цветов, состоящие из двух слов, например "стальной глянец" и "бриллиантовый зеленый". Ниже приведен пример формулы, в которой "basic" используется для основных цветов и "fancy" для всех остальных.

If InStr({Product.Color}, " ") = 0 Then formula = "basic" Else formula = "fancy" End If Вызов функции InStr выполняет поиск пробелов в строке {Product.Color}. Если пробел найден, эта функция возвращает его позицию. В противном случае возвращается значение 0. Так как основные цвета состоят только из одного слова без пробелов, для них InStr вернет значение 0.

Для некоторых изделий, например предохранительного замка цепи, значение цвета не было указано, поэтому поле {Product.Color} не содержит значения в базе данных для этой записи. Следовательно, рядом с записью "Предохранительный замок цепи" не будет напечатано ни единого слова.

В следующем примере показано, как исправить указанный выше пример с помощью функции IsNull:

If IsNull({Product.Color}) Or _ InStr({Product.Color}, " ") = 0 Then formula = "basic" Else formula = "fancy" End If Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.7.2.1.12 Управляющие структуры (синтаксис Basic) Формулы, не имеющие управляющих структур, выполняют каждую инструкцию формулы только один раз.

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

Синтаксис Basic поддерживает многие основные управляющие структуры из Visual Basic с аналогичным синтаксисом. Одним из преимуществ языка Basic является то, что в нем можно легко читать примечания к блокам для управляющих структур. Это значительно упрощает написание и отладку сложных формул.

1.7.2.1.12.1 Инструкции If (синтаксис Basic) Инструкция If является одной из наиболее используемых управляющих структур. Она позволяет вычислить последовательность инструкций, если условие имеет значение "истина", или вычислить другую последовательность инструкций, если условие имеет значение "ложь".

Примечание При форматировании с помощью условных формул всегда указывайте ключевое слово Else, иначе значения, которые не отвечают условию If, могут не сохранить свой исходный формат. Для предотвращения этого используйте функцию DefaultAttribute (формула If...Else = DefaultAttribute).

Пример Компания планирует выплачивать всем своим сотрудникам вознаграждение в размере 4%, за исключением сотрудников отдела продаж, которые получат 6%. Следующая формула, в которой используется инструкция If, выполнит следующее:

If {Employee.Dept} = "Sales" Then formula = {Employee.Salary} * 0. Else formula = {Employee.Salary} * 0. End If Если условие {Employee.Dept} = "Sales" в этом примере имеет значение "истина", тогда обрабатывается следующее выражение:

formula = {Employee.Salary} * 0. В противном случае обрабатывается инструкция formula = {Employee.Salary} * 0. (следует за оператором Else).

© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Предположим, что другая компания планирует выплату служащим вознаграждения в размере 4% с минимальной суммой вознаграждения 1 000 долларов. Обратите внимание, что оператор Else не включен (он является необязательным и не требуется в данном случае).

formula = {Employee.Salary} * 0. If formula < 1000 Then formula = End If Теперь предположим, что указанная ранее компания также планирует ограничить размер вознаграждения до 5 000 долларов. В данном случае нужно использовать оператор ElseIf. Обратите внимание, что ElseIf пишется слитно. В следующем примере использован только один оператор ElseIf, хотя добавить можно любое количество операторов.

Для каждой инструкции If используется только один оператор Else.

Оператор Else выполняется в том случае, если ни одно из условий If или ElseIf не является истиной.

formula = {Employee.Salary} * 0. If formula < 1000 Then formula = ElseIf formula > 5000 Then formula = End If Предположим, что компании необходимо подсчитать сумму налога, которую должен заплатить сотрудник, и составить соответствующее сообщение. Доход ниже 8 000 долл. не облагается налогом, доход от до 20 000 долл. облагается налогом в размере 20%, доход от 20 000 до 35 000 долл. облагается налогом в размере 29% и доход свыше 35 000 долл. облагается налогом в размере 40%.

Dim tax As Currency, income As Currency income = {Employee.Salary} Dim message As String If income < 8000 Then message = "нет" ElseIf income >= 8000 And income < 20000 Then message = "самый низкий" tax = (income - 8000)*0. ElseIf income >= 20000 And income < 35000 Then message = "средний" tax = (20000 - 8000)*0.20 + (income - 20000)*0. Else message = "самый высокий" tax = (20000 - 8000)*0.20 + (35000 - 20000)*0.29 + _ End If Dim taxStr As String Rem Используйте 2 десятичных знака и запятую в качестве разделителя тысяч.

taxStr = CStr (tax, 2, ",") formula = "Вы относитесь к налоговой группе " & сообщение & _ ". " & _ "Сумма вашего предполагаемого налога составляет " & строка налога & "."

Обратите внимание, что в данном случае переменные используются для упрощения логики вычисления.

Кроме того, следует отметить, что существуют две инструкции, которые выполняются в случае Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide выполнения одного из условий: одна назначает переменную налога, а другая — переменную сообщения.

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

1.7.2.1.12.1.1 Однострочные и многострочные инструкции If (синтаксис Basic) Существует два вида инструкций If: однострочные и многострочные. Наличие новой строки после первого ключевого слова Then свидетельствует о том, что инструкция If является многострочной. В противном случае инструкция If является однострочной. В многострочной инструкции If всегда присутствуют конструкция End If, в то время как в однострочной инструкции If ее нет.

Примечание Благодаря использованию символов переноса строки однострочные инструкции If не обязательно должны располагаться на одной строке. Как правило, рекомендуется использовать многострочные инструкции If, поскольку они более читабельны. Однако в простых случаях иногда используются однострочные инструкции If.

If {Employee.Dept} = "Sales" Then _ formula = {Employee.Salary} * 0.06 _ Else _ formula = {Employee.Salary} * 0. Далее приводится пример, в котором показаны различные формы однострочных инструкций If.

Dim per As Number, extra As Boolean per = 2 : extra = False 'Пример без оператора Else.

If {Employee.Dept} = "Sales" Then per = 'В блоке Then или Else могут содержаться несколько инструкций, разделенных двоеточиями.

If {Employee.Dept} = "R&D" Then _ Else _ 1.7.2.1.12.2 Инструкции Select (синтаксис Basic) Инструкция Select похожа на инструкцию If. Однако иногда можно написать более ясные и менее скучные формулы с помощью инструкции Select. В данном примере выполняется анализ поля {Customer.Fax}, чтобы определить, соответствует ли код города штату Вашингтон (206, 360, 509) или провинции Британская Колумбия, Канада (604, 250):

Select Case Left ({Customer.Fax}, 3) Case "604", "250" Case "206", "509", "360" © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide End Select Выражение с правой части ключевых слов Select Case называется условием Select. В приведенном примере задано значение условия Left ({Customer.Fax}[1 To 3]). Инструкция Select пытается найти первый вариант Case, удовлетворяющий условию Select, а затем выполняет следующие за ним инструкции до следующего условия Case.

Dim areaCode As String areaCode = Left ({Customer.Fax}, 3) If areaCode In Array ("604", "250") Then formula = "BC" ElseIf areaCode In Array ("206", "509", "360") Then formula = "WA" End If Данная формула выполняет группировку количества номинаций на премию Оскара фильмов в разных категориях, а также тех фильмов, которые находятся в процессе номинации, тем самым демонстрируя некоторые возможности списков выражений для меток Case. Примите к сведению, что оператор Case Else является необязательным. Если ни одно из выражений Case не удовлетворено, выполняется оператор Case Else. Например, в следующем примере формула возвращает значение "extreme", если условие {movie.NOM} равно 11.

Rem Select example Select Case {movie.NOM} Rem Может иметь несколько инструкций, оформленных в блоках.

formula = "extreme" End Select Циклы For/Next позволяют выполнять вычисление последовательности инструкций несколько раз. В этом состоит их отличие от инструкций If и Select, в которых при вычислении формулы программа делает лишь один проход по каждой инструкции.

Циклы For/Next рекомендуется использовать в тех случаях, когда заранее известно, сколько раз потребуется вычислять инструкции.

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Синтаксис цикла For Предположим, необходимо установить обратный порядок символов в строке {Customer.Customer Name}.

Например, строка "City Cyclists" принимает вид "stsilcyC ytiC".

formula = "" Dim strLen strLen = Len ({Customer.Customer Name}) Dim i For i = 1 To strLen Dim charPos charPos = strLen - i + formula = formula & _ Mid({Customer.Customer Name}, charPos, 1) Next i Проверьте работу данной формулы при условии, что текущим значением поля {Customer.Customer Name} является "Clean Air". Переменная strLen соответствует длине строки "Clean Air", то есть имеет значение 9.

На данном этапе ей также присваивается тип Number. Переменная i является переменной счетчика For, поскольку ее значение меняется после каждой итерации цикла For. Иными словами, она используется для подсчета общего количества итераций цикла. Цикл For будет повторен 9 раз, то есть сначала переменная i имеет значение 1, затем – 2, 3 и так далее, пока не примет значение 9. Во время первого повторения девятый символ в поле {Customer.Customer Name} добавляется к пустой формуле специальной переменной. Таким образом, после первой итерации формула имеет значение "r". Во время второй итерации восьмой символ строки {Customer.Customer Name} добавляется к формуле, после чего она принимает значение "ri". Данная процедура продолжается до тех пор, пока после девятой итерации формула не будет иметь вид "riA naelC", что и является обратной строкой.

Далее приводится упрощенный вариант формулы, описанной выше, в которой используется оператор Step с отрицательным значением -1. В примере "Clean Air" переменная i имеет значение 9 в первой итерации, 8 во второй, 7 в третьей и так далее, пока в последней итерации не будет получено значение 1.

formula = "" Dim i For i = Len ({Customer.Customer Name}) To 1 Step - formula = formula + _ Mid({Customer.Customer Name}, i, 1) Next i Самым простым вариантом является использование встроенной функции StrReverse:

formula = StrReverse ({Customer.Customer Name}) При помощи встроенных функций String в SAP Crystal Reports можно выполнять многие задачи по обработке строк, для которых обычно используется цикл For/Next или какой-либо другой тип цикла.

Однако циклы For/Next обеспечивают максимальную гибкость и производительность при обработке строк и массивов. Это может пригодиться в случае, если встроенные функции не способны выполнить необходимую задачу.

© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Далее приводится более подробный пример возможностей обработки строк в SAP Crystal Reports. Шифр Цезаря – это простой код, который традиционно приписывают Юлию Цезарю. В нем каждая буква слова заменяется буквой, которая находится на пять символов далее в алфавите. Например, слово "Jaws" станет словом "Ofbx". Обратите внимание, что буква "w" заменяется буквой "b". Так как в английском алфавите после "w" нет пяти букв, весь процесс начинается с начала.

Далее приведена формула, при помощи которой шифр Цезаря применяется к полю {Customer.Customer Name} в базе данных Xtreme:

Dim inputString inputString = {Customer.Customer Name} Dim shift shift = formula = "" For i = 1 To Len(inputString) inC = Mid(inputString, i, 1) Dim isChar, isUCaseChar isChar = LCase(inC) In "a" To "z" isUCaseChar = isChar And (UCase (inC) = inC) inC = LCase(inC) If isChar Then offset = (Asc(inC) + shift - Asc("a")) Mod _ outC = Chr(offset + Asc("a")) If isUCaseChar Then outC = UCase(outC) formula = formula & outC Next i В приведенном выше примере многострочная инструкция If вложена в блок инструкций цикла For/Next.

Эта инструкция If отвечает за точные данные о перемещении отдельного символа. Например, буквы обрабатываются иначе, чем знаки пунктуации и пробелы. В частности, знаки пунктуации и пробелы не кодируются. Управляющие структуры могут вкладываться в другие управляющие структуры, и несколько инструкций могут включаться в блок инструкций управляющей структуры.

Чтобы выйти из цикла For/Next, используйте инструкцию Exit For. В следующем примере выполняется поиск имени "Fred" среди имен глобального массива. Если такое имя найдено, формула возвращает индекс имени в массиве. В противном случае возвращается значение -1. Например, если используется следующий массив имен:

Array ("Frank", "Helen", "Fred", "Linda") Формула возвращает значение 3.

Global names () As String Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 'Массив имен был инициализирован и заполнен в других формулах.

Dim i formula = - ' Функция UBound возвращает размер аргумента массива.

For i = 1 to UBound (names) If names (i) = "Fred" Then Next I 1.7.2.1.12.4 Циклы Do (синтаксис Basic) Цикл Do можно использовать для выполнения фиксированного блока инструкции неопределенное количество раз.

Существует 4 различных типа циклов Do © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Циклы Do поддерживают инструкцию Exit Do, позволяющую немедленно завершить цикл. Инструкция Exit Do сходна с инструкцией Exit For в циклах For/Next.

Пример формулы с использованием цикла Do While... Loop В следующем примере показан поиск первого вхождения цифры в строке ввода. Если цифра найдена, формула возвращает ее позицию, иначе возвращается значение -1. В этом случае строка ввода явно задана строковой константой. Но она может быть задана равной полю базы данных, имеющему строковый тип.

Например, для строки ввода "The 7 Dwarves" формула возвращает значение 5, которое является позицией цифры 7.

Dim inString inString = "The 7 Dwarves" Dim i, strLen strLen = Len (inString) formula = - Do While i 100000 Then Else If {Customer.Last Year's Sales} < 15000 Then Else Поскольку это функция форматирования цвета шрифта, в дереве функций отображается список констант цвета. В этом примере используются три константы: crGreen, crRed и crBlack. Вместо констант цвета можно использовать и фактические числовые значения. Например, crRed соответствует 255, а crGreen — 32768. Однако формула будет более понятной при использовании констант цвета. В синтаксисе Crystal все функции констант имеют префикс "cr".

В синтаксисе Crystal также поддерживаются функции констант из предыдущих версий без префикса "cr".

Например, можно использовать "Red" вместо "crRed". Тем не менее, префикс "cr" позволяет упорядочить функции констант и рекомендуется к использованию.

Некоторые атрибуты форматирования не используют функции констант. Например, чтобы не печатать значения {Customer.Last Year's Sales}, если суммы продаж составили меньше 50 000 долл., для атрибута подавления можно написать следующую формулу условного форматирования:

If {Customer.Last Year's Sales} < 50000 Then True // Подавлять значение.

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide False // Не подавлять значение.

Или более упрощенный вариант:

{Customer.Last Year's Sales} < Если сумма продаж за прошлый год составила менее 50 000 долл., тогда выражение {Customer.Last Year's Sales} < истинно, и формула возвращает значение True. Если продажи за прошлый год составили 50 000 долл.

или больше, тогда выражение {Customer.Last Year's Sales} < ложно, и формула возвращает значение False.

1.7.2.2.10.4 Универсальные функции условного форматирования (синтаксис Crystal) Доступны следующие три универсальные функции условного форматирования:

ТекущееЗначениеПоля АтрибутПоУмолчанию GridRowColumnValue Функцию DefaultAttribute можно использовать для любой формулы форматирования, функцию CurrentFieldValue — для любой формулы форматирования, при помощи которой форматируется значение поля, а функцию GridRowColumnValue — для любой формулы форматирования, при помощи которой выполняется форматирование значения поля в перекрестной таблице или сетке OLAP.

Функция CurrentFieldValue позволяет выполнять условное форматирование ячеек перекрестной таблицы или сетки OLAP, основываясь на их значениях. Функция GridRowColumnValue позволяет выполнять условное форматирование ячеек перекрестной таблицы или сетки OLAP, основываясь на значениях заголовков строк или столбцов. Эти две функции необходимы в некоторых ситуациях, когда нет другого способа указать данные поля при помощи языка формул.

Например, чтобы скрывать ячейки перекрестной таблицы, если их значения меньше 50 000, используется следующая функция:

CurrentFieldValue < © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.7.2.2.11 Операторы (синтаксис Crystal) Операторы представляют собой специальные символы или слова между двумя или более значениями, описывающие операцию или действие, которые должны произойти. Программа считывает операторы в формуле и выполняет указанные действия.

1.7.2.2.11.1 Арифметические операторы (синтаксис Crystal) Арифметические операторы используются для объединения чисел, числовых значений, числовых полей и числовых функций с целью получения других чисел.

К арифметическим операторам относятся сложение (+), вычитание (-), умножение (*), деление (/), целочисленное деление (\), процент (%), модули (Mod), отрицание (-) и возведение в степень (^).

//Вычисление процента выпущенных и находящихся в обращении привилегированных акций от общего объема акций.

{Financials.Preferred Stock} % {Financials.Common Stock};

7 + 2 * 3 - 2 + Sqr(6 + 3) * Length("up");

//Формула возвращает значение 17.

Порядок старшинства Обычно программа вычисляет выражения в следующем порядке:

слева направо;

в соответствии с правилами старшинства базовой математики.

Список арифметических операторов от наибольшего старшинства до наименьшего возведение в степень (^);

отрицание (-);

умножение, деление и процент (*, /, %);

целочисленное деление (\);

модули (Mod);

сложение и вычитание (+, -).

Сначала слева направо выполняются операции умножения и деления. После этого выполняется сложение и вычитание. Например: 5 + 10 * 3 = 5 + 30 = 35.

Порядок старшинства можно менять, используя круглые скобки. Например: (5 + 10) * 3 = 15 * 3 = 45. Если вы не уверены в порядке старшинства, уточните порядок выполнения действий с помощью круглых скобок.

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.7.2.2.11.2 Операторы сравнения (синтаксис Crystal) Операторы сравнения обычно используются для сравнения операндов условия в управляющей структуре, такой как выражение If.

К операторам сравнения относятся равенство (=), неравенство (), меньше чем (=).

Все операторы сравнения, используемые в виде группы, уступают по старшинству арифметическим операторам. Например, выражение 2 + 3 < 2 * 9 аналогично выражению (2 + 3) < (2*9).

1.7.2.2.11.3 Булевы операторы (синтаксис Crystal) Булевы операторы обычно используются с операторами сравнения, чтобы создавать условия для управляющих структур.

К булевым операторам относятся (в порядке старшинства от старшего к младшему): Not, And, Or, Xor, Eqv и Imp.

Булевы операторы в виде группы уступают по старшинству операторам сравнения. Так, выражение 2 < And 4 >= -1 аналогично выражению (2 < 3) And (4 >= -1).

1.7.2.2.11.4 Неопределенные поля и значения (синтаксис Crystal) Как правило, когда программа SAP Crystal Reports обнаруживает в формуле поле с неопределенным значением, вычисление этой формулы сразу же прекращается без выдачи какого-либо значения. Чтобы обеспечить обработку полей с неопределенными значениями в формуле, необходимо явно выполнить эту операцию с использованием одной из специальных функций, предназначенных для обработки таких значений: IsNull, PreviousIsNull или NextIsNull.

Операторы, используемые при вычислении программой SAP Crystal Reports условия:

IsNull({Product.Color}) Or InStr({Product.Color}, " ") = Сначала программа вычисляет IsNull ({Product.Color}), и если в результате устанавливается, что это условие является истиной, программе становится известно, что все условие также является истиной, и ей не нужно выполнять следующую проверку:

InStr({Product.Color}, " ") = Другими словами, программа SAP Crystal Reports прекращает вычисление логического выражения, если она может определить результаты всего выражения. В следующем примере формула предотвращает попытки деления на ноль, если знаменатель равен 0:

Local NumberVar num;

© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Local NumberVar denom;

If denom 0 And num / denom > 5 Then Поле {Product.Color} содержит оба основных цвета, например "красный" и "черный", а также описательные названия цветов, состоящие из двух слов, например "стальной глянец" и "бриллиантовый зеленый".

Предположим, необходимо написать формулу, в которой "basic" используется для основных цветов и "fancy" для всех остальных.

If InStr({Product.Color}, " ") = 0 Then Else Вызов функции InStr выполняет поиск пробелов в строке {Product.Color}. Если пробел найден, эта функция возвращает его позицию. В противном случае возвращается значение 0. Так как основные цвета состоят только из одного слова без пробелов, для них InStr вернет значение 0.

Для некоторых изделий, например предохранительного замка цепи, значение цвета не было указано, поэтому поле {Product.Color} не содержит значения в базе данных для этой записи. Следовательно, рядом с записью "Предохранительный замок цепи" не будет напечатано ни единого слова.

Вот пример того, как исправить описанную выше ситуацию с помощью функции IsNull:

If IsNull({Product.Color}) Or InStr({Product.Color}, " ") = 0 Then Else Связанные сведения Диалоговое окно "Редактор формул" [стр. 735] 1.7.2.2.12 Управляющие структуры (синтаксис Crystal) Формулы, не имеющие управляющих структур, выполняют каждое из выражений формулы только один раз во время вычисления формулы. Выражения формулы выполняются в последовательном порядке: от первого к последнему. Управляющие структуры позволяют изменять такую строгую последовательность.

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

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.7.2.2.12.1 Выражения If (синтаксис Crystal) Выражение If является одной из наиболее используемых управляющих структур. Оно позволяет вычислить выражение, если условие является истиной. В противном случае с его помощью можно вычислить другое выражение.

Примечание При форматировании с помощью условных формул всегда указывайте ключевое слово Else, иначе значения, которые не отвечают условию If, могут не сохранить свой исходный формат. Для предотвращения этого используйте функцию DefaultAttribute (If...Else DefaultAttribute).

Пример Компания планирует выплачивать всем своим сотрудникам вознаграждение в размере 4%, за исключением сотрудников отдела продаж, которые получат 6%. Следующая формула, в которой используется выражение If, выполнит следующее:

If {Employee.Dept} = "Sales" Then {Employee.Salary} * 0. Else {Employee.Salary} * 0. Если условие {Employee.Dept} = "Sales" в этом примере имеет значение "истина", тогда обрабатывается следующее выражение:

{Employee.Salary} * 0. В противном случае обрабатывается выражение {Employee.Salary} * 0. (следует за оператором Else).

Предположим, что другая компания планирует выплату служащим вознаграждения в размере 4% с минимальной суммой вознаграждения 1 000 долларов. Обратите внимание, что оператор Else не включен (он является необязательным и не требуется в данном случае).

Local CurrencyVar bonus := {Employee.Salary} * 0.04;

If bonus < 1000 Then bonus := 1000;

//Конечное выражение представляет собой переменную 'bonus'.

//Данное выражение возвращает значение переменной и является результатом выполнения формулы.

bonus Другой способ выполнения примера 2 является использование оператора Else:

Local CurrencyVar bonus := {Employee.Salary} * 0.04;

If bonus < 1000 Then Else © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Теперь предположим, что указанная ранее компания также планирует ограничить размер вознаграждения до 5 000 долларов. В данном случае нужно использовать оператор Else If. В следующем примере использован только один оператор Else If, хотя добавить можно любое количество операторов.

Для каждого выражения If используется только один оператор Else.

Оператор Else выполняется в том случае, если ни одно из условий If или Else If не является истиной.

Local CurrencyVar bonus := {Employee.Salary} * 0.04;

If bonus < 1000 Then Else If bonus > 5000 Then Else Пример Предположим, что компании необходимо подсчитать сумму налога, которую должен заплатить сотрудник, и составить соответствующее сообщение. Доход ниже 8 000 долл. не облагается налогом, доход от до 20 000 долл. облагается налогом в размере 20%, доход от 20 000 до 35 000 долл. облагается налогом в размере 29% и доход свыше 35 000 долл. облагается налогом в размере 40%.

Local CurrencyVar tax := 0;

Local CurrencyVar income := {Employee.Salary};

Local StringVar message := "";

If income < 8000 Then message := "no";

Else If income >= 8000 And income < 20000 Then message := "lowest";

tax := (income - 8000)*0. Else If income >= 20000 And income < 35000 Then message := "middle";

tax := (20000 - 8000)*0.20 + (income - 20000)*0. Else message := "highest";

tax := (20000 - 8000)*0.20 + (35000 - 20000)*0.29 + //Используйте 2 десятичных знака и запятую в качестве разделителя тысяч.

Local StringVar taxStr := CStr (tax, 2, ",");

"Вы относитесь к налоговой группе " & сообщение & ". " & "Сумма вашего предполагаемого налога составляет " & строка налога & "."

Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Примечание В данном случае переменные используются для упрощения логики вычисления. Кроме того, существуют два выражения, которые выполняются в случае выполнения одного из условий: одно назначает переменную налога, а другое — переменную сообщения. Во многих случаях полезно, чтобы выполнялись несколько выражений как результат условия.

1.7.2.2.12.1.1 Группирование выражений (синтаксис Crystal) If представляет собой выражение. Иными словами, оно вычисляет значение определенного типа. Если оператор Else отсутствует, а условие не является истиной, тогда это значение будет значением по умолчанию для данного типа. Например:

If Length ({Employee.First Name}) < 5 Then "short" Приведенное выше выражение If возвращает строковое значение. Строковое значение считается "коротким", если имя служащего состоит из менее чем 5-ти букв или строка пуста.

Рассмотрим формулу:

If Year({Orders.Order Date}) >= 1995 Then {Orders.Order Date} Для дат заказов до 1995 года приведенное выше выражение If возвращает пустое значение даты-времени.

Данное значение представляет собой значение даты и времени, а не даты, поскольку поле {Orders.Order Date} является полем типа "дата/время" базы данных. Пустое значение даты и времени не печатается программой SAP Crystal Reports, то есть в случае помещения указанной выше формулы в отчет, данное поле формулы будет пустым для дат заказов до 1995 года. Поведение пустых значений времени аналогично поведению пустых значений даты.

Данный пример иллюстрирует использование круглых скобок для выполнения нескольких выражений как результат выполнения условия If. Компания взимает сбор в размере 5% за заказы, отгруженные в течение трех дней. В других случаях сбор составляет 2%. В зависимости от ситуации сотруднику компании необходимо напечатать такие сообщения: "Срочная отгрузка – 100,00 долл." или "Стандартная отгрузка – 20,00 долл.".

Local StringVar message;

Local CurrencyVar ship;



Pages:     | 1 |   ...   | 15 | 16 ||


Похожие работы:

«ЕЖЕНЕДЕЛЬНЫЙ ОБЗОР Рынок институтов совместного инвестирования в Украине с 08 по 15 сентября 2008 года Данный обзор подготовлен аналитическим отделом Инвестиционной компании ТАСК, на основании аналитического отчета по рынку институтов совместного инвестирования (ИСИ), выполняемого по заказу КУА ТАСК-инвест, и предназначен прежде всего для инвесторов – существующих и потенциальных. Главная цель его подготовки – ознакомить инвесторов с изменениями на отечественном рынке ИСИ, помочь...»

«Микляева А.В., Румянцева П.В. Трудный класс: диагностическая и коррекционная работа ВВЕДЕНИЕ 3 1. ШКОЛЬНЫЙ КЛАСС КАК СОЦИАЛЬНО-ПСИХОЛОГИЧЕСКИЙ ФЕНОМЕН 1. 1. Взгляд в историю 5 1. 2. К вопросу о том, можно ли считать школьный класс малой группой 10 1. 3. Психологическая сущность школьного класса 1. 4. Школьный класс в образовательной среде 1. 5. Возрастная динамика школьного класса 2. ЧТО ТАКОЕ ТРУДНЫЙ КЛАСС? 2. 1. К определению понятия трудный класс 2. 2. Типология трудных классов 2.2.1....»

«ТЕХНИЧЕСКИЙ КОДЕКС ТКП 210-2010 (02140) УСТАНОВИВШЕЙСЯ ПРАКТИКИ ЭЛЕКТРОУСТАНОВКИ ОБОРУДОВАНИЯ ЭЛЕКТРОСВЯЗИ. ПРАВИЛА ПРОЕКТИРОВАНИЯ ЭЛЕКТРАЎСТАНОЎКI АБСТАЛЯВАННЯ ЭЛЕКТРАСУВЯЗI. ПРАВIЛЫ ПРАЕКТАВАННЯ Издание официальное Минсвязи Минск ТКП 210-2010 УДК 621.311.4:621.39 МКС 43.060.50; 33.040 КП 02 Ключевые слова: батарея аккумуляторная, электроустановка, электрооборудование, устройство электроснабжения, устройство преобразовательное, электростанция, дизельная электростанция, подстанция,...»

«ТЕКУЩИЕ МЕЖДУНАРОДНЫЕ ПРОЕКТЫ, КОНКУРСЫ, ГРАНТЫ, СТИПЕНДИИ (добавления по состоянию на 26июля 2013 г.) Конкурс на получение грантов Правительства России для государственной поддержки научных исследований, проводимых под руководством ведущих ученых в российских образовательных и научных учреждениях (Минобрнауки РФ) Конечный срок подачи заявки: 01 октября 2013 г. (подача заявок начинается с 12 августа 2013 года) Веб-сайт:...»

«РОССИЙСКАЯ АКАДЕМИЯ НАУК ОТДЕЛЕНИЕ БИОЛОГИЧЕСКИХ НАУК ДАЛЬНЕВОСТОЧНОЕ ОТДЕЛЕНИЕ БИОЛОГИЧЕСКИЕ РЕСУРСЫ ДАЛЬНЕГО ВОСТОКА РОССИИ: КОМПЛЕКСНЫЙ РЕГИОНАЛЬНЫЙ ПРОЕКТ ДВО РАН BIOLOGICAL RESOURCES OF THE RUSSIAN FAR EAST: COMPLEX REGIONAL PROJECT OF FEB RAS ТОВАРИЩЕСТВО НАУЧНЫХ ИЗДАНИЙ КМК Москва 2007 УДК 574:573.6 Биологические ресурсы Дальнего Востока России: комплексный региональный проект ДВО РАН / под ред. Ю. Н. Журавлева. – Москва: Товарищество научных изданий КМК, 2007. 262 с. В книге...»

«ПРАВИТЕЛЬСТВО НОВОСИБИРСКОЙ ОБЛАСТИ ПОСТАНОВЛЕНИЕ от 19 марта 2014 г. N 104-п О ГОСУДАРСТВЕННОЙ ПОДДЕРЖКЕ ИНВЕСТИЦИОННОЙ ДЕЯТЕЛЬНОСТИ, ОСУЩЕСТВЛЯЕМОЙ В ФОРМЕ КАПИТАЛЬНЫХ ВЛОЖЕНИЙ НА ТЕРРИТОРИИ НОВОСИБИРСКОЙ ОБЛАСТИ В соответствии с Законом Новосибирской области от 14.04.2007 N 97-ОЗ О государственном регулировании инвестиционной деятельности, осуществляемой в форме капитальных вложений на территории Новосибирской области, в целях стимулирования инвестиционной деятельности и обеспечения...»

«Согласовано Заместитель Главы Администрации Д.В. Космин _2013г. ИНВЕСТИЦИОННЫЙ ПАСПОРТ ГОРОДА ИЖЕВСКА СОДЕРЖАНИЕ Обращение Главы Администрации города Ижевска 1. Информация о городе Ижевске 1.1 Историческая справка 1.2 Расположение и административно-территориальное деление города 1.3 Природные ресурсы 1.4 Охрана окружающей среды 1.5 Население и кадровый потенциал 1.6 Образование 1.7 Здравоохранение 1.8 Культура 1.9 Физическая культура и спорт 1.10 Транспорт 1.11 Строительство 1.12...»

«С.А. Мишин ПРОЕКТНЫЙ БИЗНЕС адаптированная модель для России Москва 2006 Издательство Астрель Издательская группа АСТ www.ast.ru УДК ББК Сергей Алексеевич Мишин Проектный бизнес: адаптированная модель для России © Мишин С.А., 2006 ISBN © ООО “Издательство Астрель”, 2006 Дополнение к авторским правам: Владельцы авторских прав допускают свободное, некоммерческое использование части 2 настоящей книги. Электронная версия части 2 представлена на сайте www.m-rating.ru в формате PDF. Есть все...»

«В. А. Томсинов Подготовка и проведение  университетской реформы  1863 года Опубликовано в издании: Университетская реформа 1863 года в России /  Составитель и автор вступительных статей В. А. Томсинов. М.: Зерцало, 2012. С. LXVIII–CXVII. (Серия “Великие реформы). ПОДГОТОВКА И ПРОВЕДЕНИЕ УНИВЕРСИТЕТСКОЙ РЕФОРМЫ 1863 ГОДА § 1. Разработка нового Университетского устава Подготовка университетской реформы началась в 1856 году и до начала 60-х годов шла без особой спешки. К февралю 1858 года...»

«РОССИЙСКАЯ ФЕДЕРАЦИЯ СВЕРДЛОВСКАЯ ОБЛАСТЬ ДУМА ТАЛИЦКОГО ГОРОДСКОГО ОКРУГА Пятый созыв РЕШЕНИЕ от 26 апреля 2012 года № 20 г. Талица О внесении изменений в Решение Думы Талицкого городского округа от 30 марта 2012 года № 9 (с изм. от 30.03.2012г.) О бюджете Талицкого городского округа на 2012 год Рассмотрев проект Решения Думы Талицкого городского округа О внесении изменений в Решение Думы Талицкого городского округа от 30 марта 2012 года № 9 (с изм. от 30.03.2012г.) О бюджете Талицкого...»

«Жиль Делез Логика смысла Раритет Деловая книга Москва Екатеринбург 1998 1998 УДК16 ББК 87.4 Д29 Перевод Я. Я. Свирского Научный редактор А. Б. Толстов Делёз Ж. Логика смысла: Пер. с фр.- Фуко М. Д 29 Theatrum philosophicum: Пер. с фр.-М.: Раритет, Екатеринбург: Деловая книга, 1998. - 480 с. ISBN 5-85735-095-6 (Раритет) ISBN 5-88687-041-5 (Деловая книга) Книга крупнейшего мыслителя современности Жиля Делёза посвящена одной из самых сложных и вместе с тем традиционных для философских изысканий...»

«13 апреля 2011 года   N 17/2011­ОЗ ЗАКОН АСТРАХАНСКОЙ ОБЛАСТИ О ГОСУДАРСТВЕННОЙ ПОДДЕРЖКЕ ИНВЕСТИЦИОННОЙ ДЕЯТЕЛЬНОСТИ В АСТРАХАНСКОЙ ОБЛАСТИ Принят Думой Астраханской области 31 марта 2011 года ГЛАВА 1. ОБЩИЕ ПОЛОЖЕНИЯ Статья 1. Предмет регулирования настоящего Закона Настоящий   Закон   регулирует   отношения   в   сфере   осуществления  инвестиционной   политики   Астраханской   области,   организации  инвестиционного   процесса   в   Астраханской   области,   определяет   формы ...»

«МИНСКИЙ НИИ СОЦИАЛЬНО-ЭКОНОМИЧЕСКИХ И ПОЛИТИЧЕСКИХ ПРОБЛЕМ ЭКОНОМИЧЕСКИЙ МЕХАНИЗМ ФУНКЦИОНИРОВАНИЯ СВОБОДНЫХ ЭКОНОМИЧЕСКИХ ЗОН (НА ПРИМЕРЕ СЭЗ МИНСК) Минск, 2002 г. 2 Авторский коллектив: Бобков В.А. – член-корреспондент НАН Беларуси Лученок А.И. – доктор экономических наук Рубанов А.В. – доктор социологических наук Маркусенко М.В. – кандидат экономических наук Булко О.С. – кандидат экономических наук Шулейко О.Л. – кандидат экономических наук Филончик О.В. Карловская Г.В. Любан В.В. Шпортюк...»

«ТЕХНИЧЕСКИЙ КОДЕКС ТКП 5.1.01/ОР (03220) УСТАНОВИВШЕЙСЯ ПРАКТИКИ Национальная система подтверждения соответствия Республики Беларусь ОСНОВНЫЕ ПОЛОЖЕНИЯ Нацыянальная сiстэма пацвярджэння адпаведнасцi Рэспублiкi Беларусь АСНОЎНЫЯ ПАЛАЖЭННI Настоящий проект технического кодекса не подлежит применению до его утверждения Госстандарт Минск ТКП 5.1.01/ОР УДК МКС 03.120.20 КП 06 Ключевые слова: технический кодекс установившейся практики, система, подтверждение соответствия, структура, функции...»

«ВВЕДЕНИЕ Современная национальная экономика Российской Федерации, так же как и ранее народное хозяйство Советского Союза, отличается важной ролью нефтегазового комплекса. Значение нефтяного и газового сектора экономики обусловлено многими причинами, начиная от общемировых тенденций, заключающихся в повышении роли этих энергоносителей и энергоемкости хозяйственной деятельности, и заканчивая последствиями социально-экономического кризиса, приведшего к разрушению многих отраслей обрабатывающей...»

«ЛТТЫ ИННОВАЦИЯЛЫ ОР АКЦИОНЕРЛІК ОАМЫ 2011 ЖЫЛЫ ЫЗМЕТІНІ НЕГІЗГІ НТИЖЕЛЕРІ ТУРАЛЫ ЕСЕП ЛТТЫ ИННОВАЦИЯЛЫ О Р ENG РУС ОТЧЕТ ОБ ОСНОВНЫХ ИТОГАХ ДЕЯТЕЛЬНОСТИ АКЦИОНЕРНОЕ ОБЩЕСТВО НАЦИОНАЛЬНЫЙ ИННОВАЦИОННЫЙ ФОНД ЗА 2011 ГОД REPORT ON MAIN RESULTS OF THE ACTIVITY OF NATIONAL INNOVATION FUND JOINT STOCK COMPANY FOR ОТЧЕТ ОБ ОСНОВНЫХ ИТОГАХ ДЕЯТЕЛЬНОСТИ ЗА 2011 ГОД СОДЕРЖАНИЕ Страницы. Eng.. 2 Введение 3 Текущее состояние развития инноваций в РК 6 Основные события 2011...»

«Проект TACIS ENVRUS 9704 Национальный парк Ладожские шхеры предложения по созданию А. В. Кравченко Конcорциум Metshallitus Consulting Oy, Kampsax International, Indufor Oy, Finnish Environmental Institute Петрозаводск 2001 Содержание Предисловие 4 Реферат 5 I. Эколого-экономическое обоснование организации национального парка 7 Ладожские шхеры 1. Введение 8 2. Современный и предлагаемый статус 3. Расположение, границы и площадь парка 4. Природа 4.1. Рельеф 4.2. Геология 4.3. Гидрография и...»

«ТКП 018-2005 (02140) ТЕХНИЧЕСКИЙ КОДЕКС УСТАНОВИВШЕЙСЯ ПРАКТИКИ ПОРЯДОК ПРОВЕДЕНИЯ АВАРИЙНОВОССТАНОВИТЕЛЬНЫХ РАБОТ НА ВОЛОКОННООПТИЧЕСКИХ ЛИНИЯХ ПЕРЕДАЧИ ПАРАДАК ПРАВЯДЗЕННЯ АВАРЫЙНААДНАЎЛЯЛЬНЫХ РАБОТ НА ВАЛАКОННА-АПТЫЧНЫХ ЛIНIЯХ ПЕРАДАЧЫ Издание официальное Минсвязи Минск PDF created with FinePrint pdfFactory trial version www.pdffactory.com ТКП 018-2005 (02140) УДК 621.315.235 МКС 13.180 КП Ключевые слова: авария, барабан кабельный, волокно оптическое, длина строительная, вставка кабельная,...»

«ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ ТЕХНОСКАНЕР (ООО ТЕХНОСКАНЕР) ГОСТ ISO 9001-2011 Р/счёт 40702810645000093689 ИНН 5504235120 Омское отделение №8634 ОАО Сбербанк России Российская Федерация БИК 045209673 Кор. счет 30101810900000000673 644042, г. Омск, пр. К. Маркса, д. 41, офис 327 в ГРКЦ ГУ Банка России по Омской обл. тел. (3812) 34-94-22 Свидетельство СРО Энергоаудиторы Сибири № 054-Э- e-mail : [email protected] Свидетельство СРО Региональное Объединение Проектировwww.tehnoskaner.ru...»

«Мониторинг состояния книжного рынка, разработка концепции развития книжного рынка на присоединенных территориях МОСКВА – 2012 Аннотация Настоящий Мониторинг выполнялся по заказу Департамента средств массовой информации и рекламы города Москвы (государственный контракт № _ от _ 2012г.) и ставил своей задачей подробный анализ уровня соответствия текущего книжного предложения структуре спроса и базовым потребностям читающих групп москвичей в целях роста конкурентоспособности книги в культурном и...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.