В качестве столбцов отчета можно использовать вычислимые поля. Для создания вычислимого поля нужно воспользоваться кнопкой Добавить вычислимое поле. |
Для вычислимого поля задается формула. Обращение к какому-либо полю из отчета происходит как [Имя_столбца] (применяется имя столбца в отчете, а не имя поля в таблице базы данных). Остальные параметры аналогичны параметрам обычного столбца.
Функции Transact-SQL, используемые в вычислимых полях
В формулах для столбцов могут использоваться следующие функции Transact-SQL:
IF(<Условие>,<Выражение1>, |
Если <Условие> истинно, то результат функции - <Выражение1>, иначе - <Выражение2> IF([Поле] > 0, 1, 2) |
YEAR(<Дата>) |
Год, соответствующий <Дате> YEAR([Поле]) |
MONTH(<Дата>) |
Месяц, соответствующий <Дате> MONTH ([Поле]) |
DAY(<Дата>) |
День, соответствующий <Дате> DAY ([Поле]) |
HOUR(<Дата>) |
Час, соответствующий <Дате> HOUR ([Поле]) |
MINUTE(<Дата>) |
Минута, соответствующая <Дате> MINUTE ([Поле]) |
SECOND(<Дата>) |
Секунда, соответствующая <Дате> SECOND ([Поле]) |
DATESTR(<Дата>[,<Строка с форматом>]) |
Преобразует <Дату> в текст. Если формат не задан, используется формат по умолчанию. Пример формата: 'dd/mm/yyyy hh:mm:ss' - 30.12.2009 12:34:45 'dddd, dd mmmm yyyy' - понедельник, 30 декабря 2009 Описание формата: dd - день в виде числа (30) dddd - день недели (понедельник) mm - месяц в виде числа (12) mmmm - название месяца (декабрь) yyyy - год (2009) hh - часы mm - минуты ss - секунды / - разделитель даты (в результат будет подставлен разделитель из настроек windows) : - разделитель времени (в результат будет подставлен разделитель из настроек windows) все прочие символы останутся в результирующей строке без изменений DATESTR([Поле]) DATESTR([Дата рождения],'dd/mm/yyyy') |
SUBSTR(<Строка>,<Позиция>,<Длина>) |
Выделяет из <Строки> подстроку заданной <Длины>, начиная с <Позиции> SUBSTR('строка', 1 ,4) = ‘стро’ |
LOWERCASE(<Строка>) |
Переводит <Строку> в нижний регистр LOWERCASE('СТРока') = ‘строка’ |
UPPERCASE(<Строка>) |
Переводит <Строку> в верхний регистр UPPERCASE('СТРока') = ‘СТРОКА’ |
INTTOSTR(<Число>) |
Преобразует <Число> в строку INTTOSTR([Поле]) |
STRTOINT(<Строка>) |
Преобразует <Строку> в число STRTOINT ([Поле]) |
FLOATTOSTR(<Число>) |
Преобразует дробное <Число> в строку FLOATTOSTR([Поле]) |
NUMERICNULL() |
Возвращает пустое значения для поля, которое нужно интерпретировать как числовое (а не, например, строковое). Пример использования — выражения для различения 0 и NULL в отчетах: IF(<Условие>, 0, NUMERICNULL()) |
При задании формулы в параметрах столбца следует иметь в виду, что пустая строка автоматически конвертируется в символ "Пробел".
Например, формула для столбца
IF([p]='45235',barcode128('PAT'+[p]),'')
при невыполнении условия [p]='45235' вернет символ "Пробел" вместо пустой строки.
Чтобы получить в отчете пустую строку, формула должна возвращать строку '<!ClearCell!>', т.е. предыдущая формула должна быть записана следующим образом:
IF([p]='45235',barcode128('PAT'+[p]),'<!ClearCell!>')
В отчете пустая ячейка имеет нулевую ширину, что вызывает соответствующее изменение ширины ячейки, находящейся перед пустой.