Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Поиск по всем полям во всех формах

Расширение функционала и существующих возможностей программы с помощью модулей расширений и плагинов от сторонних разработчиков.

Модератор: Разработчики расширений

kok80
Эксперт
Сообщения: 307
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 18 раз

Поиск по всем полям во всех формах

Сообщение kok80 » Вс дек 23, 2018 11:41 pm

Изображение

Возможности:

1) фильтр по всем видимым в Grid формы полям (выбрать поля для поиска или для исключения из поиска можно в "действия формы" )
2) значения фильтра формы учитываются
3) ESC-очистить поле поиска, Ctrl+F в grid формы-фокус в окно поиска
4) сохранение истории поиска для каждой формы отдельно
5) нажатие правой кнопкой мышки на "X" - единоразовый поиск без учета фильтра формы
6) настройка задержки старта поиска после ввода (актуально при больших объемах информации или медленном соединении с базой)
7) кнопка вниз на поле поиска - переход на grid формы, кнопка вверх в grid формы при выделенной первой строке - переход в поле поиска
8) на простой форме: значения поиска записывается в переменную kok80.QueryFilter (название переменной можно задать в настройках), форма обновляется.
Пример использования в фильтре запроса на простой форме: [?!адрес]==GetVar("kok80.QueryFilter")
9) Поиск в окне списка объекта с учетом фильтра объекта

Установка:
после импорта модуля выполнить: дизайнер - действия при запуске - вставить действие - поиск

Известные ошибки/недоработки:
- в дереве при выборе неверхней node отображает пустой результат поиска
ps здесь всегда ссылка на последнюю версию:

kok80-poisk2.09.zip [ Изображение Скачать ]

................................
dxdb_icon Демо онлайн
dxdb_icon Демо онлайн 2


Замечания, предложения ?

...

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

Re: Поиск по всем полям во всех формах

Сообщение Гocть » Пт мар 01, 2019 10:12 am

В обеих реализациях отметил один маленький недостаток, а именно: торможение интерфейса программы во время ввода при большом объеме данных и медленном соединении с базой. Все потому что запрос выполняется при каждом нажатии клавиш. Эту процедуру запихнуть бы в отдельный поток, но так как в api нет такого класса, можно облегчить ее "таймером сдвига реакции". Как только в поле поиска возникло событие OnChange таймер включается и начинает отсчёт времени, ожидая нажатие следующей клавиши (500..1000 мс. Может настраиваться в действии). Если нажатие было выполнено, то таймер перезапускается и ждёт следующее. Если таймаут ожидания вышел, то только тогда выполняется запрос. Таким образом вместо нескольких ненужных запросов:

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

ё
ёж
ёжи
ёжик
ёжики

выполняется всего один: ёжики
Фрилансер. Разработка на заказ. Консультирование.

kok80
Эксперт
Сообщения: 307
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 18 раз

Re: Поиск по всем полям во всех формах

Сообщение kok80 » Пт мар 01, 2019 9:02 pm

Version=1.3
добавлена задержка поиска после ввода символа и настройка времени задержки
Вложения
kok80-poisk1.3.zip
(9.33 КБ) 27 скачиваний

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

Re: Поиск по всем полям во всех формах

Сообщение Гocть » Пт мар 01, 2019 10:44 pm

Асы иногда тоже задумываются:). Мне кажется что относительно комфортный и не заметный даже для "наредбуленной" белки диапазон задержки по умолчанию можно установить в пределах 400, 500 мс (100 это как то круто:)).
На всякий пожарный желательно предусмотреть MinDelay 100 (как сейчас и есть) и MaxDelay (в районе 3000 мс.) на случай ошибки ввода параметра (ниже или выше допустимого значения). Ну и проверку на "число".
Фрилансер. Разработка на заказ. Консультирование.

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

Re: Поиск по всем полям во всех формах

Сообщение admin » Сб мар 02, 2019 8:07 am

kok80 писал(а):1) фильтр по всем полям, кроме TdxFile (ждем когда admin допилит возможность)

Фильтрация по файлу уже есть в программе.

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

Re: Поиск по всем полям во всех формах

Сообщение Гocть » Сб мар 02, 2019 12:07 pm

Предлагаю так:

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

 <list name="delay"
  caption="таймер задержки поиска после ввода символа, мс"
  items="200;400;600;800;1000;1500;2000"
  defaultvalue="400"/>   


upd: Добавил демо в шапку (модифицированый модуль с добавлением в суп ShowProgress-а)
ИзображениеИзображение
Фрилансер. Разработка на заказ. Консультирование.

kok80
Эксперт
Сообщения: 307
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 18 раз

Re: Поиск по всем полям во всех формах

Сообщение kok80 » Сб мар 02, 2019 11:30 pm

Version=1.4
-исправлена ошибка конвертации фильтра формы (раньше текстовые поля проверялись на точное соответствие значению фильтра (=), сейчас на содержание значения (==)
описанную выше ошибку исправил, но в дереве отображает пустой результат поиска, вместо ошибка как раньше, будем работать над исправлением :
drts
Обнаружил ошибку/недоработку. Если применяется фильтрация по дереву (например в форме Товары), возникает ошибка.

-добавлена возможность назначения постоянного префикса для поиска в одной форме
jurist23rus
3. Возможность задать в настройках поиска какой-то префикс, чтобы поиск осуществлялся уже с учётом префикса. Например, у меня есть поля с кадастровыми номерами участков вида "23:18:0000000:111". В данном случае, вот эта часть "23:18:" всегда неизменна и я бы задал её в качестве префикса, чтобы не вводить каждый раз. Это бы упростило набор поисковой фразы, а сам поиск был бы более точным.

-добавлен поиск и поддержка фильтра по TdxFile (admin, анонса не было)
-выбор значения таймера задержки переделал на list

PS к запросам мой поиск не прикрутить, TdxQueryGrid.OpenRecords() не существует
Вложения
kok80-poisk1.4.zip
(10.03 КБ) 32 скачивания

kok80
Эксперт
Сообщения: 307
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 18 раз

Re: Поиск по всем полям во всех формах

Сообщение kok80 » Пн мар 04, 2019 2:21 pm

нашел еще ошибки в конвертации фильтра формы, исправлены:

-если текстовое поле + стоит "пусто" + значение не указано = фильтр не учитывается
-если текстовое поле + стоит "пусто" + значение = игнорируется "пусто"
-если поле с интервалом значений (число,дата, время) + не пусто ("не"+"пусто") = "не" игнорируется
Вложения
kok80-poisk1.41.zip
(10.05 КБ) 26 скачиваний

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

Re: Поиск по всем полям во всех формах

Сообщение Гocть » Чт мар 07, 2019 8:24 pm

Подкину идею:

В поле поиска работают все 4 клавиши (вверх, вниз, влево, вправо). Если так прикинуть, то "вверх" и "вниз" в однострочном поле и подавно не нужны, а вот если эти кеи присобачить например так:
поисковое поле > кей вниз: фокус на табличную часть на первую строку и далее сёрфим по таблице.
табличная часть > кей вверх: если в табличной части и на первой строке, то прыгаем в поле поиска.

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

kok80
Эксперт
Сообщения: 307
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 18 раз

Re: Поиск по всем полям во всех формах

Сообщение kok80 » Вс мар 10, 2019 12:44 pm

Version=1.42
исправлено: при смене вкладки автоматически производился поиск
кнопка вниз в активном поле поиска - переход на grid формы
кнопка вверх на grid формы при выделенной первой строке - переход в поле поиска
Вложения
kok80-poisk1.42.zip
(10.81 КБ) 29 скачиваний

kok80
Эксперт
Сообщения: 307
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 18 раз

Re: Поиск по всем полям во всех формах

Сообщение kok80 » Пн мар 11, 2019 1:40 pm

Version=1.43
- добавлено: в настройках добавлена опция, при смене вкладки вызывать поиск при сохраненном значении поиска или нет , defaul=нет.
(Если в базе запрограммировано обновление формы при смене вкладки, то при переходе на вкладку с сохраненным значением поиска результат будет неверным - будет учитываться только фильтр формы и не учитываться восстановленное значение поиска)
- нажатие Ctrl+F в grid формы передает фокус ввода в окно поиска
Вложения
kok80-poisk1.43.zip
(11.14 КБ) 23 скачивания


Вернуться в «Расширения и плагины»