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

Обсуждение релиза 3 beta (25.03.18)

cordek
Опытный
Сообщения: 262
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение cordek » Пн апр 16, 2018 11:26 am

вот фильтр запроса
[?!Заявка клиента2|Клиент] = [Клиент2]
& [?!Заявка клиента2|Направление2] = [Направление2]}
& {[!Заявка клиента2|№ счета] = recid('Выставленные счета')
| [!Заявка клиента2|№ счета] = DBGETID('Выставленные счета', '[!Номер счета]==[Комментарий]')}

выходного фильтра нет

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение Гocть » Пн апр 16, 2018 11:43 am

Непонятно как у вас все при таком фильтре раньше "летало", но он плохой.
Вот здесь [!Заявка клиента2|№ счета] = DBGETID('Выставленные счета', '[!Номер счета]==[Комментарий]') у вас происходит "умножение" нагрузки. То есть для получения нескольких десятков записей выполняется круговой подзапрос, который суммарно перебирает несколько сотен (а то и тысяч) других записей. Ещё и методом частичного сравнения.
Фрилансер. Разработка на заказ. Консультирование.

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение admin » Пн апр 16, 2018 10:35 pm

Гocть писал(а):круговой подзапрос
Как это понять?

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение Гocть » Вт апр 17, 2018 12:17 am

Образно выразился. Иными словами: запрос, который вызывает запрос, который вызывает запрос, который вызывает запрос.
В примере выражения cordek видно, что каждая запись источника должна выполнить дополнительную задачу, связанную с отдельным запросом.
Фрилансер. Разработка на заказ. Консультирование.

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение admin » Вт апр 17, 2018 8:22 am

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

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение Гocть » Вт апр 17, 2018 9:01 am

Понятно. Значит cordek что-то скрывает :) Или карты на стол, или откат на февральскую версию.
Фрилансер. Разработка на заказ. Консультирование.

cordek
Опытный
Сообщения: 262
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение cordek » Ср апр 18, 2018 7:11 pm

| [!Заявка клиента2|№ счета] == [Комментарий]
Раньше было так.

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение Гocть » Ср апр 18, 2018 7:46 pm

В форме-источнике попробуйте создать числовое поле с формулой:

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

// [!Заявка клиента2]
DBGETID('Выставленные счета', '[!Номер счета]==[Комментарий]')

Заполните его через "сервис-пересчитать".

В фильтр отбора запроса замените строку на [!Заявка клиента2|№ счета]=[!Ваше новое числовое поле]

И есть одно но: [!Номер счета]==[Комментарий] это сегодня. А завтра (послезавтра) ваша формула найдет 23-й или 32-й номер в счетах № 232, 323. Имейте ввиду.
Фрилансер. Разработка на заказ. Консультирование.

cordek
Опытный
Сообщения: 262
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение cordek » Ср апр 18, 2018 9:16 pm

Система у меня сейчас такая. Каждой новой заявке через объект присваивается счет по умолчанию, с номером "Выставить счет".
К заявкам же через запрос присоединяются записи формы "пробы".
Потом открываю форму "Выставленные счета" и в ней есть обсуждаемый запрос и поле комментарий. в котором по умолчанию стоит слово "выставить". Запрос обрабатывает записи формы "Пробы" Соответственно. если выбрать клиента в счете, то запрос показывает только пробы этого клиента и только в заявках, в которых выбрано "выставить счет" или текущий счет.
Когда нажимают кнопку "выставить счет", в заявках этого клиента, которые выбраны другим подобным запросом , в объекте № счета, вместо "выставить счет", ставится текущий счет.

https://cloud.mail.ru/public/HmH5/p88BGvxkw файл базы
пользователь Админ А.А.
пароль 1

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

Re: Обсуждение релиза 3 beta (25.03.18)

Сообщение Гocть » Ср апр 18, 2018 9:42 pm

Архив поврежден.
Фрилансер. Разработка на заказ. Консультирование.


Вернуться в «Обсуждение релизов DataExpress»