08.08.2007, 17:48 | #1 |
Постигающий
|
Поле для ввода критерия фильтрации
Задача такая:
нужно на форме с гридом поместить контрол, соответствующий определенному полю грида, в котором можно задать критерий фильтрации. причем с возможностью использования маски и выборв нескольких значений (как в стандартном фильтре)...подскажите,те , кто в этом разобрался, куда рыть, что делать? |
|
08.08.2007, 17:54 | #2 |
Участник
|
Update:
блинн, неусмотрел часть вопроса Сорри. Последний раз редактировалось Lemming; 08.08.2007 в 17:58. |
|
08.08.2007, 17:56 | #3 |
Участник
|
Смотря какое поле, по сути, нужно просто сделать свой EDT, который наследовать от типа Range. (это, ессно, не обязательно, но проще, если все будет так).
На этом типе можно продублировать те relation, что и на основном поле (что в гриде). Или же, как альтернатива, переписать лукап у поля этого на форме. Когда будете в ExecuteQuery накладывать фильтр, не используйте queryValue и ему подобные, чтобы не escapились спец.символы. Вроде все. Ничего сложного. |
|
08.08.2007, 17:57 | #4 |
NavAx
|
Сравнительно просто, создаешь новый строковый тип данных (строка дли-и-инная), вешаешь на него свою лукап форму с перебитым closeSelect
__________________
Isn't it nice when things just work? |
|
08.08.2007, 18:06 | #5 |
Постигающий
|
|
|
08.08.2007, 18:11 | #6 |
NavAx
|
Неможно. Будет старые значения затирать. Нужна лукап форма
__________________
Isn't it nice when things just work? |
|
08.08.2007, 18:20 | #7 |
Участник
|
Цитата:
Сообщение от Андрей К.
Задача такая:
нужно на форме с гридом поместить контрол, соответствующий определенному полю грида, в котором можно задать критерий фильтрации. причем с возможностью использования маски и выборв нескольких значений (как в стандартном фильтре)...подскажите,те , кто в этом разобрался, куда рыть, что делать? После того, как пользователям такое поле сделать, через некоторое время они обнаруживают, что в Аксапте есть замечательное окно для ввода любых критериев. И это окно открывается по клавишам Ctrl+F3 (или воронка на панели инструментов). А то окошко позволяет запоминать фильтры, использовать различные связанные таблицы... Вот тут то и начнется ад для программиста. Пользователи непременно захотят, чтобы самодельное поле отображало текущий фильтр, где бы его ни ввели (либо в воле, либо в форме CTRL+F3)/ А если программист (не дай бог) еще и собственные фильтры будет накладывать... То непременно захотят и их видеть тоже на форме... В общем, посмотрите как это сделано на форме деловых отношений в CRM. smmBusRelTable Там решена как раз ваша часть задачи - вводить фильтр в поля на форме. Но обратите внимание, что проще пользователей научить нажимать Ctrl+F3, нежели программировать. Хотя... Если вам платят за это, то почему бы и нет? |
|
08.08.2007, 18:29 | #8 |
Участник
|
Для этого нужно установить свойство ReplaceOnLookup на контроле в значение No
Правда все равно своя форма лучше, потому что так есть ньюансы |
|
08.08.2007, 18:49 | #9 |
Участник
|
Цитата:
Сообщение от mazzy
Э-э-э... Это только первая часть. И вдобавок самая простая.
После того, как пользователям такое поле сделать, через некоторое время они обнаруживают, что в Аксапте есть замечательное окно для ввода любых критериев. И это окно открывается по клавишам Ctrl+F3 (или воронка на панели инструментов). А то окошко позволяет запоминать фильтры, использовать различные связанные таблицы... Вот тут то и начнется ад для программиста. Пользователи непременно захотят, чтобы самодельное поле отображало текущий фильтр, где бы его ни ввели (либо в воле, либо в форме CTRL+F3)/ А если программист (не дай бог) еще и собственные фильтры будет накладывать... То непременно захотят и их видеть тоже на форме... В общем, посмотрите как это сделано на форме деловых отношений в CRM. smmBusRelTable Там решена как раз ваша часть задачи - вводить фильтр в поля на форме. Но обратите внимание, что проще пользователей научить нажимать Ctrl+F3, нежели программировать. Хотя... Если вам платят за это, то почему бы и нет? То есть если он выбирает фильтр, то вместо QueryRun используется Query и его пользовательские фильтры сбрасываются. Все были за. Правда и фильтры у нас посложение были, а не просто по полю из грида. |
|
08.08.2007, 18:57 | #10 |
Участник
|
Тогда сразу вопрос: на кой ляд создавать пользовательские фильтры, которые сбрасываются и НЕ РАБОТАЮТ?
Может таки научить пользователей нажимать Ctrl+F3? |
|
08.08.2007, 19:11 | #11 |
NavAx
|
На форме, кончено, ценность таких фильтров сомнительна. Но вообще они имеют право на жизнь. К примеру, в настройках нужно указать дапазон счетов, к которым будет применим специфический алгоритм. Указывать их по одному, в связанной таблице долго, черевато ошибками и добавляя новый субсчет нужно не забыть проставить его в эту таблицу. Гораздо проще указать, к примеру "01*", а в алгоритме просто подставлять этот критерий
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 08.08.2007 в 19:16. |
|
08.08.2007, 19:16 | #12 |
NavAx
|
Она попытается найти значение в связанной таблице, не найдет, ругнется. Это и есть ньюанс?
__________________
Isn't it nice when things just work? |
|
08.08.2007, 19:17 | #13 |
Участник
|
Цитата:
Нюанс, что при открытии формы лукапа значения фильтруются по введенному в данный момент значению. (правда это не всегда так, поэтому не скажу) |
|
08.08.2007, 19:25 | #14 |
Участник
|
А вот с этим совершенно согласен.
|
|
08.08.2007, 19:25 | #15 |
NavAx
|
Это уже на поле datasourc-а? Хитро
__________________
Isn't it nice when things just work? |
|
08.08.2007, 19:27 | #16 |
Участник
|
Ну, на контроле самом, если быть точным. Ведь фильтры эти не привязаны к источнику.
Но все равно поддерживаю лукап форму или переписанный просто лукап. |
|
09.08.2007, 10:11 | #17 |
Участник
|
Цитата:
Сообщение от macklakov
На форме, кончено, ценность таких фильтров сомнительна. Но вообще они имеют право на жизнь. К примеру, в настройках нужно указать дапазон счетов, к которым будет применим специфический алгоритм. Указывать их по одному, в связанной таблице долго, черевато ошибками и добавляя новый субсчет нужно не забыть проставить его в эту таблицу. Гораздо проще указать, к примеру "01*", а в алгоритме просто подставлять этот критерий
|
|