Фильтрация в листе

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Фильтрация в листе

Сообщение StillZero »

Ситуация: при изменении записи она перестает удовлетворять условиям фильтрации листа.
Например, в листе просматриваются только записи с флагом 0, а после изменения флаг записи меняется на 1. Т.е. получается, что запись должна "исчезать" из листа.
По дефолту такого не происходит. Т.е. запись остается в листе. "Уходит" из него только после рефреша.

Естественно, я не хочу рефрешить весь лист. Я думаю, что просто могу удалить данную запись из очереди, но полагаю, что должен быть какой то штатный вариант решения данной проблемы.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Фильтрация в листе

Сообщение Andrew™ »

StillZero писал(а):Ситуация: при изменении записи она перестает удовлетворять условиям фильтрации листа.
Например, в листе просматриваются только записи с флагом 0, а после изменения флаг записи меняется на 1. Т.е. получается, что запись должна "исчезать" из листа.
По дефолту такого не происходит. Т.е. запись остается в листе. "Уходит" из него только после рефреша.

Естественно, я не хочу рефрешить весь лист. Я думаю, что просто могу удалить данную запись из очереди, но полагаю, что должен быть какой то штатный вариант решения данной проблемы.
я не согдасен, ну представь след ситуацию, работает тётя с документами за определённую дату, приходит дядя и говорит срочно надо вбить такой то документ, она вбивает, Но он не за ту дату, за которую работает тётя, после добавления он попадает в LIST, тётя его видит и может без доп телодвижений его вновь отредактировать при желании, иначе если бы она захотела его отредактировать пришлось бы сбросить рабочее состояние фильтров Browse на другое, зачем спрашивается.

ну ежели данный алгоритм не устраивает, а он большинство устраивает, удаляй из List Queue руками.

штатного механизма не может быть по определению, т к условие загрузки Browse могут быть довольно сложные и хитрые и переложить их на язык IF ELSE не представляется возможным.

Хотим поиметь как в стандартной Browse - т е рефрешь(обновляй) Browse, но сколько плюсов и минусов в этих подходах, думаю плюсов больше в первом - запись не удаляем до принудительного обновления Browse.
Аватара пользователя
Ravenous
Бывалый
Сообщения: 56
Зарегистрирован: 06 Июль 2005, 14:25
Откуда: Москва

Сообщение Ravenous »

Начал смотреть шаблоны...
Вроде тема подходящая, вставлю и свои проблемы(вопросы):

1. Не получается использовать один xxxBrowseBoxFilter для нескольких ListBox'ов в окне.
Всегда просит выбрать конкретную структуру.

2. При режиме загрузки AllRecords и нажатии кнопки Refresh
происходит запрос на сервер. Можно ли предусмотреть, чтобы рефрешить только очередь для просмотра.

ну, остальное к фильтрации не относиться

3. Не хватает функций:
- получениe очереди с именами таблиц базы
- получениe очереди с именами столбцов таблицы (запроса)
Я так понимаю они есть, только я или их не нашел или они скрыты от пользователя.

4. Хотелось бы для MAVBrowseRefresh к RefreshIcon и NonRefreshIcon
иметь еще и RefreshText и NonRefreshText, а желательно и вовсе предусмотреть возможность менять другие аттрибуты.

P.S. Версия шаблонов с clarionlife.net
Благодарень за терпение и понимание.

Изображение
Денис
Бывалый
Сообщения: 70
Зарегистрирован: 07 Июль 2005, 5:39
Откуда: Хабаровск
Контактная информация:

Сообщение Денис »

Ravenous писал(а):Начал смотреть шаблоны...
Вроде тема подходящая, вставлю и свои проблемы(вопросы):

3. Не хватает функций:
- получениe очереди с именами таблиц базы
- получениe очереди с именами столбцов таблицы (запроса)
Я так понимаю они есть, только я или их не нашел или они скрыты от пользователя.
Для этого у сервера MS SQL есть служебные функции, точно не помню, подробно можно посмотруть на http://sql.ru
Аватара пользователя
Ravenous
Бывалый
Сообщения: 56
Зарегистрирован: 06 Июль 2005, 14:25
Откуда: Москва

Сообщение Ravenous »

Для этого у сервера MS SQL есть служебные функции, точно не помню, подробно можно посмотруть на http://sql.ru
Андрей, насколько я понял, все равно имеет и заполняет такие очереди,
почему бы не сделать функции для их использования.
Благодарень за терпение и понимание.

Изображение
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Ravenous писал(а):
Для этого у сервера MS SQL есть служебные функции, точно не помню, подробно можно посмотруть на http://sql.ru
Андрей, насколько я понял, все равно имеет и заполняет такие очереди,
почему бы не сделать функции для их использования.
внутренние списки конечно же есть, но они сразу не наполнены, а наполняются по мере использования структур из DCT, при первом обращении к структуре из DCT (а-ля OPEN) происходит инициализация списка в библиотеке
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Ravenous писал(а):Начал смотреть шаблоны...
Вроде тема подходящая, вставлю и свои проблемы(вопросы):

1. Не получается использовать один xxxBrowseBoxFilter для нескольких ListBox'ов в окне.
Всегда просит выбрать конкретную структуру.
фильтрующие шаблоны это дочерние к Browse, этот как UpdateButtons, и у таких шаблонов есть привязка к родителю на уровне классов, что мешает поставить несколько, руками всё равно ничего не пишешь.
Ravenous писал(а): 2. При режиме загрузки AllRecords и нажатии кнопки Refresh
происходит запрос на сервер. Можно ли предусмотреть, чтобы рефрешить только очередь для просмотра.
непонял
Ravenous писал(а): 4. Хотелось бы для MAVBrowseRefresh к RefreshIcon и NonRefreshIcon
иметь еще и RefreshText и NonRefreshText, а желательно и вовсе предусмотреть возможность менять другие аттрибуты.
если желающих чтобы реализовать данную фичу будет > 3, то реализую ;)
Ravenous писал(а): P.S. Версия шаблонов с clarionlife.net
а вот в этой версии изменений не предусмотрено
Аватара пользователя
Ravenous
Бывалый
Сообщения: 56
Зарегистрирован: 06 Июль 2005, 14:25
Откуда: Москва

Сообщение Ravenous »

Andrew Myalin писал(а):непонял
по пункту 2
Беру процедуру BrowseZipCodes из твоего примера abcmavt.app
ставлю ListBox'у галку Read All Records
....
запускаю пример
сортирую по "City"
в поле поиска ввожу "Mis"
все класно, курсор встает на "Mission"
Refresh горит красненьким
жму на Refresh
в этот момент идет запрос на сервер, зачем?
Понятно, что когда-то нужно обновить очередь, но ведь
у меня загрузка стоит Read All Records т.е я считал уже все с
сервера и мне кажется логично было бы фильтровать по существующей очереди.

по 3. да и вообще...
хочу свой проект, написаный на cwODBC+база Access года 4 назад,
перевести на DirectODBC+MSSQL соответственно.
Переписывать с нуля уж больно много времени уйдет,
хочеться использовать уже существующие наработки.
Вот, на данный момент не хватает таких функций.
Могу и сам конечно эти функции переписать, где ты в своих шаблонах hdbc раздаёшь? ;-)
Andrew Myalin писал(а): если желающих чтобы реализовать данную фичу будет > 3, то реализую ;-)
Конечно и так нормально, но боюсь замучаюсь пользователям объяснять, что и когда эти иконки обозначают. Если бы словами было написано было бы понятней.
Andrew Myalin писал(а): а вот в этой версии изменений не предусмотрено
Не вопрос, купим! :-)
Благодарень за терпение и понимание.

Изображение
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Ravenous писал(а):
Andrew Myalin писал(а):непонял
по пункту 2
Беру процедуру BrowseZipCodes из твоего примера abcmavt.app
ставлю ListBox'у галку Read All Records
....
запускаю пример
сортирую по "City"
в поле поиска ввожу "Mis"
все класно, курсор встает на "Mission"
Refresh горит красненьким
жму на Refresh
в этот момент идет запрос на сервер, зачем?
Понятно, что когда-то нужно обновить очередь, но ведь
у меня загрузка стоит Read All Records т.е я считал уже все с
сервера и мне кажется логично было бы фильтровать по существующей очереди.
если ты посмотришь реакцию на MouseRight находясь в локаторе, увидишь что локатор может выступать как фильтрующий, т е хоть ты и заказал читать всё, ты можешь ограничить выборку по условию в локаторном поле с использованием доп фильтров или без, объясняю что это такое, сидит опять же тётя и работает с документами за определённую дату - установлены фильтры, приходит дядя и говорит что вот есть документ (не за ту дату за которую работает тётя) и надо бы его отредактировать, тётя не меняя состояния Browse вбивает в локатор номер документа дяди и находит его - режим локатора - без учёта доп фильров, тётя отредактировала дядин документ, далее нажала Refresh Browse - всё - тётя опять работает в своём шаттном режиме, разве это не удобно?
Ravenous писал(а): по 3. да и вообще...
хочу свой проект, написаный на cwODBC+база Access года 4 назад,
перевести на DirectODBC+MSSQL соответственно.
Переписывать с нуля уж больно много времени уйдет,
хочеться использовать уже существующие наработки.
Вот, на данный момент не хватает таких функций.
Могу и сам конечно эти функции переписать, где ты в своих шаблонах hdbc раздаёшь? ;-)

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

tmp  MAVSelect

  CODE

  hdbc = tmp.Db.GetHDBC()
  henv = tmp.Db.GetHENV()

думаю надо всё таки реализовать пару функций

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

 MAVGETHDBC(<STRING ConnectName>),LONG
 MAVGETHENV(<STRING ConnectName>),LONG
а ты поделись тут - чего на твой взгляд в библе не хватает, глядишь и реализую, просто время показало что пользователям библиотеки пока что хватает всего, раз про HENV и HDBC никто пока не спрашивал.
Andrew Myalin писал(а): если желающих чтобы реализовать данную фичу будет > 3, то реализую ;-)
Ravenous писал(а): Конечно и так нормально, но боюсь замучаюсь пользователям объяснять, что и когда эти иконки обозначают. Если бы словами было написано было бы понятней.
а ты TIPS повесь на кнопарь сейчас, как решение на данный момент
Andrew Myalin писал(а): а вот в этой версии изменений не предусмотрено
Не вопрос, купим! :-)[/quote]
Аватара пользователя
Ravenous
Бывалый
Сообщения: 56
Зарегистрирован: 06 Июль 2005, 14:25
Откуда: Москва

Сообщение Ravenous »

Andrew Myalin писал(а):...Refresh Browse - всё - тётя опять работает в своём шаттном режиме, разве это не удобно? ...
Согласен удобно, ну я и писал, что когда-то обновлять очередь необходимо! Немного по-другому желание сформулирую. Хочу в режиме Read All Records иметь фильтрующий локатор по очереди. Желательно с аналогом Sql'ного Like.
Есть программка 1,2мб
очень нравиться как в ней работает поиск
Изображение
Andrew Myalin писал(а):а ты поделись тут - чего на твой взгляд в библе не хватает, глядишь и реализую, просто время показало что пользователям библиотеки пока что хватает всего, раз про HENV и HDBC никто пока не спрашивал.
ну прийдут мысли конечно же скажу, опять же я писал, что использовал cwODBC, по этому хотел провести соответствия между теми функциями и твоими.

У меня импорт/экспорт данных в разные форматы происходит посредством MSSQL OpenQuery, OpenRowset..
а так как предполагается, что пользователь сам будет настраивать все это дело и набор данных для выгрузки(загрузки) это не только файл(таблица), а может быть и результат запроса, то вот и понадобились очередь с именами таблиц в базе и очередь с именами возвращаемых колонок запроса.
Благодарень за терпение и понимание.

Изображение
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Ravenous писал(а): Согласен удобно, ну я и писал, что когда-то обновлять очередь необходимо! Немного по-другому желание сформулирую. Хочу в режиме Read All Records иметь фильтрующий локатор по очереди. Желательно с аналогом Sql'ного Like.
это будет, и назывться это будет а-ля Excel Auto Filter
немного дальше в идее пошли, можно задавать условие(я) для любой колонки, т е не один локатор - а много - на каждую колонку
и фильтрация будет на клиенте по закаченной очереди.

а вот подсвечивать в колонке ключевые слова, енто увы - никак, если конечно не отказаться от привычного LIST контрола и перейти на что то другое
Ответить