Перейти к содержанию

Выражения: различия между версиями

Материал из Химсофт Вики
Строка 240: Строка 240:


Так как переменная <code>Date</code> имеет тип <code>DateTime</code>:
Так как переменная <code>Date</code> имеет тип <code>DateTime</code>:
*можмно обратиться к ее свойству <code>Year</code>;  
*можно обратиться к ее свойству <code>Year</code>;  
*аналогичным образом можно получить текущий месяц (<code>[Date].Month</code>).
*аналогичным образом можно получить текущий месяц (<code>[Date].Month</code>).



Версия от 09:24, 19 октября 2026

Выражение – это строка кода на языке C#, которая возвращает какое-либо значение.

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

Пример:

[2 + 2]

Редактор выражений

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

Редактор выражений представляет собой окно, в котором можно ввести текст выражения и вставить в него элементы из окна Данные:

Обращение к объектам отчета

Пример 1. Высота объекта Text1 (обращение по имени):

Text1.Height

Пример 2. Имя файла, из которого был загружен отчет (использование переменной Report):

Report.FileName

Пример 3. Название отчета (обращение к вложенным свойствам объекта):

Report.ReportInfo.Name

Использование функций .NET

Вы можете использовать любые объекты .NET в выражениях.

Пример: использование функции Max:

Math.Max(5, 10)

Сборки .NET

По умолчанию отчет использует следующие сборки .NET:

System.dll
System.Drawing.dll
System.Windows.Forms.dll
System.Data.dll
System.Xml.dll

Вам доступны все объекты .NET, объявленные в этих сборках.

Если вам нужно получить доступ к другой сборке, добавьте ее название в список сборок отчета.

Это можно сделать в меню Отчет|Свойства…, выбрав в окне элемент Скрипт.

Например, если вы хотите использовать в отчете функцию, объявленную в вашем приложении, добавьте ссылку на сборку приложения (.exe или .dll) в список сборок отчета.

Обращение к функциям

После этого можно обращаться к функции, используя пространство имени (namespace) вашего приложения. Например, если в приложении определена следующая функция:

namespace Demo
{
  public static class MyFunctions
  {
    public static string Func1()
    {
      return "Hello!";
    }
  }
}

Обратиться к ней в отчете можно так:

Demo.MyFunctions.Func1()

Если добавить в скрипт директиву using Demo, это позволит укоротить форму обращения к функции:

MyFunctions.Func1()

Для обращения к переменным или функциям, которые были вами определены в скрипте отчета, используйте имя переменной или функции:

myPrivateVariableThatIHaveDeclaredInScript
MyScriptFunction()

Использовать в выражении можно функции, которые возвращают значение.

Обращение к данным отчета

Помимо стандартных языковых элементов, в выражениях можно использовать следующие элементы отчета:

  • поля источников данных;
  • системные переменные;
  • итоговые значения;
  • параметры отчета.

Все эти элементы содержатся в окне Данные.

Любой из этих элементов можно использовать в выражении, заключив его в квадратные скобки. Например:

[Page] + 1

Это выражение возвращает номер следующей печатаемой страницы.

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

Обращение к источникам данных

Пример 1. Обращение к полям источников данных:

[Имя источника.Имя поля]

Пример 2. Имя источника отделяется от имени поля точкой, например:

[Employees.FirstName]

Пример 3. Имя источника может быть составным в случае, если мы обращаемся к источнику данных, используя связь (relation).

[Products.Categories.CategoryName]

Пример 4. Операции с полями одинаковых типов данных.

[Employees.FirstName] + " " + [Employees.LastName]

Каждое поле имеет определенный тип данных - он задается в свойстве DataType поля (его можно увидеть в окне "Свойства", если предварительно выбрать поле данных в окне "Данные"). От того, какой тип имеет поле, зависит, каким образом его можно использовать в выражении. Так, в примере выше, оба поля (имя и фамилия) имеют строковый тип и поэтому их допустимо использовать таким образом.

Пример 5. Операции с полями разных типов данных.

В следующем примере мы попробуем использовать поле Employees.Age числового типа, что приведет к ошибке:

[Employees.FirstName] + " " + [Employees.Age]

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

[Employees.FirstName] + " " + [Employees.Age].ToString()

В данном случае мы обращаемся с полем Employees.Age так, будто это целочисленная переменная. Так оно и есть. Мы уже знаем, что все выражения компилируются в исполняемый код. Все нестандартные с точки зрения компилятора вещи (вроде обращения к системным переменным и полям данных) конвертируются в другой вид, понятный компилятору. Так, последнее выражение будет преобразовано в следующий вид:

(string)(Report.GetColumnValue("Employees.FirstName")) + " " + (int)(Report.GetColumnValue("Employees.Age")).ToString()

Как видно, дизайнер при компиляции выражений заменяет обращения к полям данных следующим образом:

[Employees.FirstName] --> (string)(Report.GetColumnValue("Employees.FirstName"))

[Employees.Age] --> (int)(Report.GetColumnValue("Employees.Age"))

То есть, мы можем использовать поле БД в выражениях, как будто это переменная, имеющая определенный тип.

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

[Employees.FirstName].Substring(0, 1)

Обращение к системным переменным

В выражениях можно использовать следующие системные переменные (они доступны в окне Данные):

Переменная Тип данных .NET Описание
Date DateTime Дата и время старта отчета.
Page int Номер текущей страницы.
TotalPages int Общее количество страниц в отчете. Чтобы использовать эту переменную, надо включить двойной проход у отчета. Это можно сделать в меню Отчет/Свойства….
PageN string Номер страницы в виде: Страница N.
PageNofM string Номер страницы в виде: Страница N из M".
Row# int Номер строки данных внутри группы. Это значение сбрасывается при старте новой группы.
AbsRow# int Абсолютный номер строки данных. Это значение не сбрасывается при старте новой группы.

Каждая переменная имеет определенный тип данных, от этого зависит, как ее можно использовать в выражении.

Пример: использование даты:

[Date].Year

Это выражение возвращает текущий год.

Так как переменная Date имеет тип DateTime:

  • можно обратиться к ее свойству Year;
  • аналогичным образом можно получить текущий месяц ([Date].Month).

Дизайнер преобразует обращение к системной переменной в следующий вид (на примере переменной Date):

((DateTime)Report.GetVariableValue("Date"))

Обращение к итоговым значениям

Обращение к параметрам отчета