03.06.2005, 13:15 | #1 |
NavAx
|
Сортировка и/или фильтры в lookup форме - howto.
Доброго времени суток!
В какой-то момент перед человеком, редко писавшим lookup формы, встала задача отсортировать её по нужному полю, да еще и фильтров навешать. Стандартные методы не срабатывали, поскольку datasource_q был все время null (поскольку у формы AutoQuery = No) и модифицировать его не получалось - тетка Аксапта, ессно, ругалась. Поиск по конференция ничего не дал и в ФАКах было пусто. Пришлось идти к сэнсеям. Как оказалось, сэнсеи уже не раз отвечали на этот вопрос и задолбались уже на него отвечать. Так вот - для того, чтобы восполнить этот пробел, я решил написать этот топик. Кстати, штука довольно неочевидная... В общем, если стоит задача сделать фильтрацию и/или сортировку данных в собственной lookup форме ( не забывать - AutoQuery = No !), то сделать это стандартными методами (взять у datasource формы Query, добавить поля сортировки, добавить фильтры) в init'е, скажем, datasource'а формы не получится. Вместо этого следует сделать следующее: В init'е datasource'а формы создать новый "левый" Query. PHP код:
Затем нафаршировать его нужными сортировками и фильтрами. Далее - сказать магическое сочетание: PHP код:
Далее остается вызвать super(); Участие в написании принимали Lexx, Aand, и ваш покорный слуга. Всё. Комментарии - welcome. |
|
03.06.2005, 17:44 | #2 |
Участник
|
Re: Сортировка и/или фильтры в lookup форме - howto.
Небольшой рефекторинг...
Создать query в AOT. Нафаршировать его всевозможной байдой. в Коде указать две строчки PHP код:
|
|
03.06.2005, 18:17 | #3 |
NavAx
|
Нет у меня доверия к всяким WYSIWYG-прибамбасам, тем более, Аксаптовским.
Так что предпочитаю написать ручками. Вообще, проблема была не у меня - такие начальные условия (AutoQuery = No) были мне поставлены. Видимо, нужно было главной таблицей иметь не ту, в которой лежит поле, по которому нужно сделать lookup. Вообще - надо будет переспросить.... |
|
03.06.2005, 18:30 | #4 |
Участник
|
Цитата:
Изначально опубликовано Maximin
Нет у меня доверия к всяким WYSIWYG-прибамбасам, тем более, Аксаптовским. Так что предпочитаю написать ручками. 2. Ручками вы будете предпочитать до первого апгрейда. При апгрейде каждую строчку кода проверять и продумывать надо. Объекты AOT же обновляются без особых раздумий. Стремитесь уменьшить ваш код настолько насколько это возможно. Перекладывайте на ядро и на АОТ. Вам же легче будет. Ей богу. Крест на пузе! |
|
03.06.2005, 18:31 | #5 |
Участник
|
Цитата:
Изначально опубликовано Maximin
Вообще, проблема была не у меня - такие начальные условия (AutoQuery = No) были мне поставлены. Теперь другой вынужден прогать еще и еще. |
|
07.06.2005, 11:06 | #6 |
NavAx
|
Цитата:
Изначально опубликовано mazzy
Вот-вот... Один напрогал. Теперь другой вынужден прогать еще и еще. Честно говоря, не вижу разницы - анализировать код при апгрейде или ходить по объектам. Насчет же WYSIWYGа - нуу, как сказать... ) Я считаю, что, применительно к Аксапте, любые средства хоть какой-то визуальной разработки - это уже практически WYSIWYG... Хотя тоска по Access (хотя бы за возможностью перевести проектируемый запрос в режим "таблица"), иногда появляется... Вообще - давно есть мысль допилить SysTableBrowser для отображения любых запросов. Никак руки не доходят. |
|