|
|
#1 |
|
Участник
|
Исполнить сформированный фильтр
help!!
На форме несколько источников данных . Связи на таблицах настроены, ссылки обновлены. Создаю фильтр по дочерней таблице , срабатывающий при смене вкладки Таба: public void tabChanged(int _FromTab, int _ToTab) { ... qbds1 = query.dataSourceTable(tablenum(PurchTable)); qbds2 = query.dataSourceTable(tablenum(PurchLine)); switch (Tab.tab()) { case 1: qbr2 = Global::findOrCreateRange_RU(qbds2,fieldnum(PurchLine,text),"!Очередь"); break; case 2: qbr2 = Global::findOrCreateRange_RU(qbds2,fieldnum(PurchLine,text),"Очередь"); break; } } при этом фильтр устанавливается (есть запись в форме фильтра), но записи в форме не фильтруются.ExecuteQuery на датасурсе напрочь сносит сформированный фильтр. нужно принудительно применить этот фильтр. Нужен совет... Спасибо. |
|
|
|
|
#2 |
|
Программатор
|
Мне кажется нужно сделать что то типа
qbds1 = PurchTAble_ds.query(); и тд |
|
|
|
|
#3 |
|
Участник
|
Вообще то этот код обычно в executeQuery пишут. this.query(). Дай запрос. Дай датасорс запроса, дай или создай range, ну и т.д. А на tabchange вызывать через refresh.
|
|
|
|
|
#4 |
|
Участник
|
Можно запрос и самому сформировать. До сих пор я так и делал. Потом говорил ExecuteQuery() и аллилуйя - все работало. Много писанины , да и зачем дублировать то , что можно сформировать мышкой. Я уверен - есть волшебный метод ! : )
|
|
|
|
|
#5 |
|
Участник
|
Надо не ExecuteQuery вызывать, а refresh. Тем более что refresh как раз вызывает в том числе ExecuteQuery. ExecuteQuery только фильтр формирует.
|
|
|
|
|
#6 |
|
Участник
|
нет , рефреш не помог горю.
|
|
|
|
|
#7 |
|
Участник
|
Sada , направление мыслей у меня такое-же. А вот что делать дальше ?
|
|
|
|
|
#8 |
|
Программатор
|
а потом играетесь как хотите с qbds1 и после purchTable_ds.query(qbds1); вызовите executeQuery всем назло
|
|
|
|
|
#9 |
|
Участник
|
query = PurchLine_ds.query();
PurchLine_ds.executeQuery(); Это сбрасывает фильтр,- задача не решена |
|
|
|
|
#10 |
|
Программатор
|
читайте внимательней, что вы имеете ввиду под фильтром? Кстати мы Вам не решаем задачу, мы помогаем найти Вам решение.
Последний раз редактировалось Sada; 26.07.2007 в 18:18. |
|
|
|
|
#11 |
|
Участник
|
Цитата:
2) Не может этого быть. Или вы что то там очень интересное делаете. Случайно в ExecuteQuery нет создания new Query. Или что-то с последовательностью методов не то. Поиграйтесь с методом reserch(). А вы правильно refresh вызвали таблица_ds.refresh(). Бывает полезно в конец ExecuteQuery. info(this.query().datasourseNo(1).toString()); Если он у вас первый. Ну или место datasourseNo datasourseName, datasourseTable. Ну там разберётесь. Получите точно какой фильтр у вас есть. Без гадания на кофейной гуще. Последний раз редактировалось miklenew; 26.07.2007 в 18:25. |
|
|
|
| За это сообщение автора поблагодарили: radya (1). | |
|
|
#12 |
|
Участник
|
Да , может быть я не поллностью раскрыл условия: qbds1 это экземпляр QueryBuildDataSource , Нельзя сопоставить qbds1 и query - это разные типы. Ваш вариант выдает ошибку несоответствия типов.
Под фильтром я понимаю то, что отображается при нажатии "воронки" |
|
|
|
|
#13 |
|
Программатор
|
Всё правильно ругается. получите Query и тада с ним играйтесь как хотите. Зачем вам именно QueryBuildDataSource? query.dataSourceTable(tableNUm(PurchTable)).addRange().Value(); и поехали... А потом этот кверик обратно в PurchTable_ds передайте и екзекут квери()
Последний раз редактировалось Sada; 26.07.2007 в 18:30. |
|
|
|
|
#14 |
|
Участник
|
Всем спасибо. Miklenew - особенно за вывод запроса в инфолог.
Задача решена PurchLine_ds.query(query); PurchLine_ds.ExecuteQuery(); |
|
|
|
|
#15 |
|
Программатор
|
Собсна про ето я и писАл. Учим предназначение зелёных квадратиков
...
|
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Как сделать фильтр по группе пользователей? | 12 | |||
| ERP-BLOG: Axapta, фильтр по сетке | 26 | |||
| Иногда не работает фильтр | 0 | |||
| Программируемый фильтр по Grid | 6 | |||
| фильтр по связанной таблице | 13 | |||
|