Фильтрация в листе
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Фильтрация в листе
Ситуация: при изменении записи она перестает удовлетворять условиям фильтрации листа.
Например, в листе просматриваются только записи с флагом 0, а после изменения флаг записи меняется на 1. Т.е. получается, что запись должна "исчезать" из листа.
По дефолту такого не происходит. Т.е. запись остается в листе. "Уходит" из него только после рефреша.
Естественно, я не хочу рефрешить весь лист. Я думаю, что просто могу удалить данную запись из очереди, но полагаю, что должен быть какой то штатный вариант решения данной проблемы.
Например, в листе просматриваются только записи с флагом 0, а после изменения флаг записи меняется на 1. Т.е. получается, что запись должна "исчезать" из листа.
По дефолту такого не происходит. Т.е. запись остается в листе. "Уходит" из него только после рефреша.
Естественно, я не хочу рефрешить весь лист. Я думаю, что просто могу удалить данную запись из очереди, но полагаю, что должен быть какой то штатный вариант решения данной проблемы.
Re: Фильтрация в листе
я не согдасен, ну представь след ситуацию, работает тётя с документами за определённую дату, приходит дядя и говорит срочно надо вбить такой то документ, она вбивает, Но он не за ту дату, за которую работает тётя, после добавления он попадает в LIST, тётя его видит и может без доп телодвижений его вновь отредактировать при желании, иначе если бы она захотела его отредактировать пришлось бы сбросить рабочее состояние фильтров Browse на другое, зачем спрашивается.StillZero писал(а):Ситуация: при изменении записи она перестает удовлетворять условиям фильтрации листа.
Например, в листе просматриваются только записи с флагом 0, а после изменения флаг записи меняется на 1. Т.е. получается, что запись должна "исчезать" из листа.
По дефолту такого не происходит. Т.е. запись остается в листе. "Уходит" из него только после рефреша.
Естественно, я не хочу рефрешить весь лист. Я думаю, что просто могу удалить данную запись из очереди, но полагаю, что должен быть какой то штатный вариант решения данной проблемы.
ну ежели данный алгоритм не устраивает, а он большинство устраивает, удаляй из List Queue руками.
штатного механизма не может быть по определению, т к условие загрузки Browse могут быть довольно сложные и хитрые и переложить их на язык IF ELSE не представляется возможным.
Хотим поиметь как в стандартной Browse - т е рефрешь(обновляй) Browse, но сколько плюсов и минусов в этих подходах, думаю плюсов больше в первом - запись не удаляем до принудительного обновления Browse.
Начал смотреть шаблоны...
Вроде тема подходящая, вставлю и свои проблемы(вопросы):
1. Не получается использовать один xxxBrowseBoxFilter для нескольких ListBox'ов в окне.
Всегда просит выбрать конкретную структуру.
2. При режиме загрузки AllRecords и нажатии кнопки Refresh
происходит запрос на сервер. Можно ли предусмотреть, чтобы рефрешить только очередь для просмотра.
ну, остальное к фильтрации не относиться
3. Не хватает функций:
- получениe очереди с именами таблиц базы
- получениe очереди с именами столбцов таблицы (запроса)
Я так понимаю они есть, только я или их не нашел или они скрыты от пользователя.
4. Хотелось бы для MAVBrowseRefresh к RefreshIcon и NonRefreshIcon
иметь еще и RefreshText и NonRefreshText, а желательно и вовсе предусмотреть возможность менять другие аттрибуты.
P.S. Версия шаблонов с clarionlife.net
Вроде тема подходящая, вставлю и свои проблемы(вопросы):
1. Не получается использовать один xxxBrowseBoxFilter для нескольких ListBox'ов в окне.
Всегда просит выбрать конкретную структуру.
2. При режиме загрузки AllRecords и нажатии кнопки Refresh
происходит запрос на сервер. Можно ли предусмотреть, чтобы рефрешить только очередь для просмотра.
ну, остальное к фильтрации не относиться
3. Не хватает функций:
- получениe очереди с именами таблиц базы
- получениe очереди с именами столбцов таблицы (запроса)
Я так понимаю они есть, только я или их не нашел или они скрыты от пользователя.
4. Хотелось бы для MAVBrowseRefresh к RefreshIcon и NonRefreshIcon
иметь еще и RefreshText и NonRefreshText, а желательно и вовсе предусмотреть возможность менять другие аттрибуты.
P.S. Версия шаблонов с clarionlife.net
-
- Бывалый
- Сообщения: 70
- Зарегистрирован: 07 Июль 2005, 5:39
- Откуда: Хабаровск
- Контактная информация:
Для этого у сервера MS SQL есть служебные функции, точно не помню, подробно можно посмотруть на http://sql.ruRavenous писал(а):Начал смотреть шаблоны...
Вроде тема подходящая, вставлю и свои проблемы(вопросы):
3. Не хватает функций:
- получениe очереди с именами таблиц базы
- получениe очереди с именами столбцов таблицы (запроса)
Я так понимаю они есть, только я или их не нашел или они скрыты от пользователя.
Андрей, насколько я понял, все равно имеет и заполняет такие очереди,Для этого у сервера MS SQL есть служебные функции, точно не помню, подробно можно посмотруть на http://sql.ru
почему бы не сделать функции для их использования.
внутренние списки конечно же есть, но они сразу не наполнены, а наполняются по мере использования структур из DCT, при первом обращении к структуре из DCT (а-ля OPEN) происходит инициализация списка в библиотекеRavenous писал(а):Андрей, насколько я понял, все равно имеет и заполняет такие очереди,Для этого у сервера MS SQL есть служебные функции, точно не помню, подробно можно посмотруть на http://sql.ru
почему бы не сделать функции для их использования.
фильтрующие шаблоны это дочерние к Browse, этот как UpdateButtons, и у таких шаблонов есть привязка к родителю на уровне классов, что мешает поставить несколько, руками всё равно ничего не пишешь.Ravenous писал(а):Начал смотреть шаблоны...
Вроде тема подходящая, вставлю и свои проблемы(вопросы):
1. Не получается использовать один xxxBrowseBoxFilter для нескольких ListBox'ов в окне.
Всегда просит выбрать конкретную структуру.
непонялRavenous писал(а): 2. При режиме загрузки AllRecords и нажатии кнопки Refresh
происходит запрос на сервер. Можно ли предусмотреть, чтобы рефрешить только очередь для просмотра.
если желающих чтобы реализовать данную фичу будет > 3, то реализуюRavenous писал(а): 4. Хотелось бы для MAVBrowseRefresh к RefreshIcon и NonRefreshIcon
иметь еще и RefreshText и NonRefreshText, а желательно и вовсе предусмотреть возможность менять другие аттрибуты.
а вот в этой версии изменений не предусмотреноRavenous писал(а): P.S. Версия шаблонов с clarionlife.net
по пункту 2Andrew Myalin писал(а):непонял
Беру процедуру 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 писал(а): а вот в этой версии изменений не предусмотрено
если ты посмотришь реакцию на MouseRight находясь в локаторе, увидишь что локатор может выступать как фильтрующий, т е хоть ты и заказал читать всё, ты можешь ограничить выборку по условию в локаторном поле с использованием доп фильтров или без, объясняю что это такое, сидит опять же тётя и работает с документами за определённую дату - установлены фильтры, приходит дядя и говорит что вот есть документ (не за ту дату за которую работает тётя) и надо бы его отредактировать, тётя не меняя состояния Browse вбивает в локатор номер документа дяди и находит его - режим локатора - без учёта доп фильров, тётя отредактировала дядин документ, далее нажала Refresh Browse - всё - тётя опять работает в своём шаттном режиме, разве это не удобно?Ravenous писал(а):по пункту 2Andrew Myalin писал(а):непонял
Беру процедуру BrowseZipCodes из твоего примера abcmavt.app
ставлю ListBox'у галку Read All Records
....
запускаю пример
сортирую по "City"
в поле поиска ввожу "Mis"
все класно, курсор встает на "Mission"
Refresh горит красненьким
жму на Refresh
в этот момент идет запрос на сервер, зачем?
Понятно, что когда-то нужно обновить очередь, но ведь
у меня загрузка стоит Read All Records т.е я считал уже все с
сервера и мне кажется логично было бы фильтровать по существующей очереди.
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
Andrew Myalin писал(а): если желающих чтобы реализовать данную фичу будет > 3, то реализую
а ты TIPS повесь на кнопарь сейчас, как решение на данный моментRavenous писал(а): Конечно и так нормально, но боюсь замучаюсь пользователям объяснять, что и когда эти иконки обозначают. Если бы словами было написано было бы понятней.
Не вопрос, купим! [/quote]Andrew Myalin писал(а): а вот в этой версии изменений не предусмотрено
Согласен удобно, ну я и писал, что когда-то обновлять очередь необходимо! Немного по-другому желание сформулирую. Хочу в режиме Read All Records иметь фильтрующий локатор по очереди. Желательно с аналогом Sql'ного Like.Andrew Myalin писал(а):...Refresh Browse - всё - тётя опять работает в своём шаттном режиме, разве это не удобно? ...
Есть программка 1,2мб
очень нравиться как в ней работает поиск
ну прийдут мысли конечно же скажу, опять же я писал, что использовал cwODBC, по этому хотел провести соответствия между теми функциями и твоими.Andrew Myalin писал(а):а ты поделись тут - чего на твой взгляд в библе не хватает, глядишь и реализую, просто время показало что пользователям библиотеки пока что хватает всего, раз про HENV и HDBC никто пока не спрашивал.
У меня импорт/экспорт данных в разные форматы происходит посредством MSSQL OpenQuery, OpenRowset..
а так как предполагается, что пользователь сам будет настраивать все это дело и набор данных для выгрузки(загрузки) это не только файл(таблица), а может быть и результат запроса, то вот и понадобились очередь с именами таблиц в базе и очередь с именами возвращаемых колонок запроса.
это будет, и назывться это будет а-ля Excel Auto FilterRavenous писал(а): Согласен удобно, ну я и писал, что когда-то обновлять очередь необходимо! Немного по-другому желание сформулирую. Хочу в режиме Read All Records иметь фильтрующий локатор по очереди. Желательно с аналогом Sql'ного Like.
немного дальше в идее пошли, можно задавать условие(я) для любой колонки, т е не один локатор - а много - на каждую колонку
и фильтрация будет на клиенте по закаченной очереди.
а вот подсвечивать в колонке ключевые слова, енто увы - никак, если конечно не отказаться от привычного LIST контрола и перейти на что то другое