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

Фильтр по полю

Порядок и особенности создания. Вывод данных из полей в текстовый документ. Правила применения тегов и их написание. Ссылки на поле.
rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Фильтр по полю

Сообщение rausNT » Вт сен 12, 2017 9:27 am

admin писал(а): Фигурные скобки для это используются.


Все равно не получается. Вторые сутки бьюсь над задачей. Подскажите, как можно составить фильтр.
Есть форма "ИП", у нее есть подчиненная форма "Запросы", в запросах есть поле "Тип"
Нужно выбрать ИП, где в форме "Запросы" отсутствуют записи или отсутствует хотя бы одна запись со значением в поле "Тип" - ГИББД, ГТН, Росреестр.
Т.е. если в "Запросы" отсутствуют записи - выбирает ИП, если есть ГТН и Росреестр, но нет ГИБДД - выбирает ИП, если есть записи с полем "Тип" ГИББД, ГТН, Росреестр - не выбирает ИП.
Подскажите пожалуйста.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Фильтр по полю

Сообщение YurAnt » Вт сен 12, 2017 9:34 am

Экспортируйте этот участок со связями или целиком базу прикрепите к сообщению.
Изображение

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Фильтр по полю

Сообщение rausNT » Вт сен 12, 2017 9:50 am

YurAnt писал(а):Экспортируйте этот участок со связями или целиком базу прикрепите к сообщению.


Во вложении. Форма "задачи по ИП" Пароль админа - 123456

экспорт.7z
(76.27 КБ) 17 скачиваний

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Фильтр по полю

Сообщение YurAnt » Вт сен 12, 2017 10:51 am

Пробуйте.
ИП_ЗАПРОСЫ.zip
(162.27 КБ) 21 скачивание

1. Снимите флажки "по-умолчанию" в интерфейсах. Пользователь-разработчик из-за них никуда не имеет доступа.
2. Добавьте в выражение видимости полей дополнительное условие: Пользователь<>"Имя пользователя-разработчика". Так хотя бы останется у кого-то одного право исправить косяк.
3. НЕ НУЖНО делать ИНН числовым полем. Несмотря на свой внешний вид - ИНН (как и прочие реквизиты) - это априори текстовое поле и с ним никогда не будет арифметических операций, а вот геморрой с ИНН-числом быть может.
Изображение

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Фильтр по полю

Сообщение rausNT » Вт сен 12, 2017 11:45 am

YurAnt, спасибо, работает, правда пока не разобрался как.
Не понимаю, что это "1. На форме ИП "Сервис"->"Пересчитать" (поле: "условие отбора")"
У форм вообще не нашел свойства "Сервис" Это где можно найти?

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Фильтр по полю

Сообщение YurAnt » Вт сен 12, 2017 11:51 am

rausNT писал(а):работает, правда пока не разобрался как.

В отборе участвует всего лишь одно поле в ИП, значение которого формируется из Ваших условий и сохраняется вместе с записью. Это упрощает выражение и минимально нагружает базу.
rausNT писал(а):Не понимаю, что это "1. На форме ИП "Сервис"->"Пересчитать" (поле: "условие отбора")"
У форм вообще не нашел свойства "Сервис" Это где можно найти?

Вы и форму ИП не найдете... Читайте спойлер "рекомендации" выше (п.1)

P.S. Невнимательно прочитал вопрос и немного неверно указал выражение в поле "Условие отбора" в форме ИП (И вместо ИЛИ).
Замените на:

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

iif(count('Запрос-Ответ')=0 |
  (
   count('Запрос-Ответ')>0 &
      (
      countif('Запрос-Ответ','[Выбор типа запроса]="ГИБДД"')<1 |
      countif('Запрос-Ответ','[Выбор типа запроса]="ГТН"')<1 |
      countif('Запрос-Ответ','[Выбор типа запроса]="Росреестр"')<1
      )
  )
,1,0)   
Изображение

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Фильтр по полю

Сообщение rausNT » Вт сен 12, 2017 12:23 pm

YurAnt писал(а):Вы и форму ИП не найдете...


А, понял, перерасчет полей - это пользовательский функционал. Тогда, нет, так нельзя. Отследить кто обновил поля, кто нет - невозможно, из-за этого будут зависеть результаты. Но мне кажется что поля, которые с iif обновляются сами? (во всяком случае это в видеоролике говорится)

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Фильтр по полю

Сообщение YurAnt » Вт сен 12, 2017 12:42 pm

rausNT писал(а):Но мне кажется что поля, которые с iif обновляются сами?

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

1. Создали запись ИП. Поле "Условие отбора" в значении по умолчанию получило значение 1 (т.е. - "показать в запросе", т.к. у нас пока ничего нет в таблице "Запрос-Ответ" - 1-е условие.)
или
2. Добавляем в "Запрос-Ответ" строки, но пока в них не появятся как минимум по одной с ГИБДД, ГТН и Росреестр - значение поля также будет 1. Это 2-е условие.
3. И как только имеем не менее одной записи в "Запрос-Ответ" с содержанием ГИБДД, ГТН и Росреестр - поле обнуляется.

Условие в замом запросе получается очень простое: [!Условие отбора]=1

Но все это будет происходить с момента создания записей с уже встроенным выражением. Старые записи нужно "подтолкнуть" пересчетом.
Изображение

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Фильтр по полю

Сообщение rausNT » Вт сен 12, 2017 12:54 pm

YurAnt писал(а):
rausNT писал(а):Старые записи нужно "подтолкнуть" пересчетом.

Старых записей пока нет,база в тестировании. Тогда все ок. Логику понял. Как можно больше вычислений делать в формах в спецполях, а в запросах уже фильтровать по этим поля.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Фильтр по полю

Сообщение YurAnt » Вт сен 12, 2017 12:58 pm

rausNT писал(а):Как можно больше вычислений делать в формах в спецполях, а в запросах уже фильтровать по этим поля.

Ну не всегда - такого прямо "закона" нет. Это зависит от многих факторов - конструкция базы, объем данных, необходимая актуальность и т.п. Каждый конкретный случай может иметь свою схему... В данном примере чуть разгрузили вычисления, отдавая их форме (типа - промежуточный регистр) и упростили отбор запроса. Ему просто остается собрать нужные записи, не "бегая по ним с калькулятором". При последующем ожирении базы подобные мелкие оптимизации становятся "спасателями".
Изображение


Вернуться в «Шаблоны»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость