Последняя версия DataExpress 3 beta от 9 октября 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Вычисляемое поле в отчете

Создание, изменение, фильтрация и выбор данных.
masslay
Интересующийся
Сообщения: 87
Зарегистрирован: Сб апр 01, 2017 9:58 am
Откуда: Челябинск
Контактная информация:

Вычисляемое поле в отчете

Сообщение masslay » Чт май 31, 2018 8:34 pm

Я честно посмотрел и справку и форум и все не могу никак решить одну задачу.
Нужно сделать отчет, который бы подсчитывал зарплату продавцов по формулам. В отчете есть три поля: Дата, Название магазина и ФИО продавца.
https://yadi.sk/i/fzPi0aus3WkMJm
https://yadi.sk/i/34Ei7yDs3WkMhc
Нужно сделать в отчете 4-ое вычисляемое поле, которое должно показывать формулу, по которой рассчитывается зарплата.
Формулы зарплат сделаны в отдельной форме.
https://yadi.sk/i/wSxy4D5l3WkLwo
Каждой формуле задан определенный временной период действия. Проще говоря, с начала этого года я зарплаты продавцам повысил и добавил новую формулу.
И вот я пытаюсь в Вычисляемом поле Отчета ввести формулу:

Код: Выделить всё

DBGET('Расчёт зарплаты','Название','[!Начало]<=[Дата]&[!Конец]>[Дата]')

Эта формула в теории должна сопоставлять Дату в отчете с датами начала и конца периода действия формулы и показывать название нужной формулы. Но этого не происходит почему-то.
https://yadi.sk/i/qyoQ08793WmQoa
Что я делаю не так?

Аватара пользователя
admin
Разработчик
Сообщения: 3832
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: Вычисляемое поле в отчете

Сообщение admin » Чт май 31, 2018 9:43 pm

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

Код: Выделить всё

DBGET('Расчёт зарплаты','Название',
concat('[!Начало]<="', [Дата], '" &[!Конец]>"', [Дата], '"'))

masslay
Интересующийся
Сообщения: 87
Зарегистрирован: Сб апр 01, 2017 9:58 am
Откуда: Челябинск
Контактная информация:

Re: Вычисляемое поле в отчете

Сообщение masslay » Чт май 31, 2018 10:10 pm

admin писал(а):DB-функция не видит поля запросов и отчетов, только поля формы, где она применяется. Попробуйте так:

Код: Выделить всё

DBGET('Расчёт зарплаты','Название',
concat('[!Начало]<="', [Дата], '" &[!Конец]>"', [Дата], '"'))

Заработало! Но почему? Причем тут concat?

Аватара пользователя
Гocть
Эксперт
Сообщения: 1130
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: Вычисляемое поле в отчете

Сообщение Гocть » Чт май 31, 2018 10:13 pm

Функция concat локально может увидеть "местные" поля ([Дата]), а форма, к которой вы обращаетесь DB-запросом их не увидит. Вы в фильтре передаете строчное значение (уже сам результат выполнения функции concat, склейка иными словами).
Фрилансер. Разработка на заказ. Консультирование.

masslay
Интересующийся
Сообщения: 87
Зарегистрирован: Сб апр 01, 2017 9:58 am
Откуда: Челябинск
Контактная информация:

Re: Вычисляемое поле в отчете

Сообщение masslay » Чт май 31, 2018 10:18 pm

Гocть писал(а):Функция concat локально может увидеть "местные" поля, а форма, к которой вы обращаетесь DB-запросом их не увидит. Вы в фильтре передаете строчное значение (уже сам результат выполнения функции concat, склейка иными словами).

Витиеватое решение какое-то, но спасибо за помощь!

Аватара пользователя
Гocть
Эксперт
Сообщения: 1130
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: Вычисляемое поле в отчете

Сообщение Гocть » Чт май 31, 2018 10:23 pm

Короче говоря: concat, это товарищ который сидит посередине маршрутки. [Дата] сидит сзади, а водитель это 'Расчёт зарплаты'. :ugeek:
Водитель сам не дотянется до оплаты, пока concat не передаст. А concat передаст. :)
Фрилансер. Разработка на заказ. Консультирование.

masslay
Интересующийся
Сообщения: 87
Зарегистрирован: Сб апр 01, 2017 9:58 am
Откуда: Челябинск
Контактная информация:

Re: Вычисляемое поле в отчете

Сообщение masslay » Чт май 31, 2018 10:26 pm

Гocть писал(а):Короче говоря: concat, это товарищ который сидит посередине маршрутки. [Дата] сидит сзади, а водитель это 'Расчёт зарплаты'. :ugeek:

Да я понял в общем-то. Мне как обывателю просто не понятно почему DBGET не видит? Но на то я и обыватель.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1130
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: Вычисляемое поле в отчете

Сообщение Гocть » Чт май 31, 2018 10:31 pm

masslay писал(а):почему DBGET не видит?

Очевидно потому, что вы не в форме (в смысле форме DataExpress :) ), а в отчете. Форма имеет набор данных (DataSet), которыми можно оперировать внутри DB-функции, а отчет(или запрос) служит для вывода информации и такого набора внутри себя не содержит.
Поэтому и требуется передаст.
Фрилансер. Разработка на заказ. Консультирование.

masslay
Интересующийся
Сообщения: 87
Зарегистрирован: Сб апр 01, 2017 9:58 am
Откуда: Челябинск
Контактная информация:

Re: Вычисляемое поле в отчете

Сообщение masslay » Чт май 31, 2018 10:35 pm

Гocть писал(а):
masslay писал(а):почему DBGET не видит?

Очевидно потому, что вы не в форме (в смысле форме DataExpress :) ), а в отчете. Форма имеет набор данных (DataSet), которыми можно оперировать внутри DB-функции, а отчет(или запрос) служит для вывода информации и такого набора внутри себя не содержит.
Поэтому и требуется передаст.

Ага. Это поэтому всех посылают в запросы, да?