|
26.04.2012, 15:43 | #1 |
Участник
|
Фильтрация Datasource с использованием внешних таблиц
Добрый день.
Передо мной следующая задача: Имеется форма, одна из колонок формы представлена не datafield, а datamethod. Требуется, ввести следующую функциональность: фильтрация datasource на основе колонки, заполняемой датаметодом. Т.е., ставим на форму элемент управления, если в нем есть значение критерия, отфильтровать по этой колонке с соответствующим значением. *** На сколько мне известно, класс QueryBuildDataSource не имеет методов, позволяющих сортировать по датаметодам. Отсюда, я собираюсь запомнить где-то изначальный query, если критерий в элементе задан, программно соединить с таблицей, из которой берутся данные для датаметода и отфильтровать по ней. А если критерий не задан, восстановить первоначальный запрос. Поэтому у меня 2 вопроса: 1. Как мне сохранить значение первоначального query, а не ссылку? Если я напишу Query q1 = this.query() будет ссылка. 2. Нет ли возможности использовать в качестве datasource хранимые процедуры? Корявый аксаптовский недоSQL слабоват. |
|
26.04.2012, 15:49 | #2 |
Молодой, подающий надежды
|
|
|
|
За это сообщение автора поблагодарили: Player1 (1), uskutus (1). |
26.04.2012, 15:57 | #3 |
Участник
|
|
|
26.04.2012, 16:25 | #4 |
Участник
|
Еще вопрос возник, я сначала подумал, что если вызвать this.query в методе datasource Table1, вернется запрос для datasource. Но потом увидел конструкцию QueryBuildDataSource qbds = this.query().dataSourceTable(tablenum(Table1));
Получается это общий для всех datasource запрос? И мне надо использовать Table1_ds.query() ? Или это одно и тоже? |
|
26.04.2012, 16:28 | #5 |
Участник
|
this.query() подчинённого источника данных также возвращает общий запрос, а не только свою часть. Последний раз редактировалось S.Kuskov; 26.04.2012 в 16:35. |
|
|
За это сообщение автора поблагодарили: uskutus (1). |
26.04.2012, 16:31 | #6 |
Участник
|
|
|
26.04.2012, 16:38 | #7 |
Участник
|
|
|
26.04.2012, 16:23 | #8 |
Участник
|
А почему бы на постоянно не заменить display-метод на соединение с таблицей? Для чего возвращаться к display-методу обратно?
|
|
26.04.2012, 16:28 | #9 |
Участник
|
Такая мысль была, но я подумал, что если постоянно не нужна эта таблица, может быть быстрее окажется приплюсовывать запрос. Хотя теперь еще раз подумал, наверное не быстрее)
Последний раз редактировалось uskutus; 26.04.2012 в 16:31. |
|
26.04.2012, 16:43 | #10 |
Участник
|
Честно? не понимаю что именно вы собираетесь сохранять?
Если нужна фильтрация, то добавляйте новый источник данных прописывайте связи и накладывайте на него фильтр. Если фильтр не нужен то отключайте добавленный источник и всё. Зачем запоминать исходный query? |
|
|
За это сообщение автора поблагодарили: Taker1796 (1). |
26.04.2012, 17:03 | #11 |
Участник
|
А как отключить добавленный источник? Еще хотелось узнать, как действует фильтр. Фильтруется набор данных в оперативной памяти или выполняется новый запрос к базе данных? Если первоначально фильтр был один, затем его изменили, видимо новый запрос.
Последний раз редактировалось uskutus; 26.04.2012 в 17:05. |
|
26.04.2012, 18:10 | #12 |
Участник
|
Если я ничего не путаю, то DataSource.enable(false)
В обоих случаях новый запрос. Дело в том что вообще говоря клиент никогда не тянет на себя весь результат запроса. Оперативно он получает от сервера только ту часть, которую необходимо отобразить, остальное подгружается по мере необходимости. |
|
04.05.2012, 09:38 | #13 |
Участник
|
|
|