04.07.2005, 21:17 | #1 |
Участник
|
Проблема с OuterJoin и addRange
Такая проблема, есть две таблицы Master и Detail связанный в дизайне по OuterJoin, которые показывются в одном гриде. Все прекрасно работает. Но стоит попытаться наложить фильтр на Detail (по какому то полю,не входящую в link), то выдается ошибка "недопустимый диапазон" и фильтр не создается. Не подскажите, можно ли побороть сие безобразие. Заранее благодарен.
|
|
05.07.2005, 10:16 | #2 |
Участник
|
А итерактивно фильтр по нужному полю устанавливается? Если без проблем, то кусочек кода покажи.
|
|
05.07.2005, 14:47 | #3 |
Moderator
|
Кстати, наложение фильтра на связанный по outer-join дочерний datasource дает уменьшение выборки этого самого datasource, и не более того. Т.е. общее число записей не уменьшается. Спрашивается - нафига козе баян?
__________________
Андрей. |
|
05.07.2005, 16:58 | #4 |
Участник
|
Цитата:
Изначально опубликовано Dron AKA andy
Кстати, наложение фильтра на связанный по outer-join дочерний datasource дает уменьшение выборки этого самого datasource, и не более того. Т.е. общее число записей не уменьшается. Спрашивается - нафига козе баян? По поводу баяна - простая задача типа : Есть услуги, есть районы , есть тарифы на услуги, которые зависят от районов. Делается grid в котором услуги и тарифы в одной строке (для ввода тарифов), есть еще один grid по районам, перемещение по районам отбирает тариф для данной услуги только для этого района. |
|
05.07.2005, 17:18 | #5 |
Moderator
|
А edit-методом не проще решить задачу? И без outer join можно обойтись...
__________________
Андрей. |
|
05.07.2005, 17:29 | #6 |
Участник
|
Цитата:
Изначально опубликовано Dron AKA andy
А edit-методом не проще решить задачу? И без outer join можно обойтись... |
|
28.02.2014, 11:24 | #7 |
Участник
|
А другой вариант addRange и outer join
Цитата:
Сообщение от Alex P
Спасибо всем, кто ответил. Проблема разрешилась по методу - "А если немного подумать-?". Простая ошибка. Если Data Source привязан по join к master - таблице, то у него номер в query не 1, а 2. ( this.query().dataSourceNo(2).addRange( ....) )
По поводу баяна - простая задача типа : Есть услуги, есть районы , есть тарифы на услуги, которые зависят от районов. Делается grid в котором услуги и тарифы в одной строке (для ввода тарифов), есть еще один grid по районам, перемещение по районам отбирает тариф для данной услуги только для этого района. есть запрос на форме типа X++: select * from SalesLine outer join Name from EcoResCategory where... Нужно наложить фильтр на EcoResCategory.Name Делаю так: X++: crCategoryFilter = salesLine_ds.query().dataSourceTable(tableNum(EcoResCategory)).addRange(fieldNum(EcoResCategory, Name)); X++: void crSetRange(){ crCategoryFilter.value(UseCategory.checked()?CategoryFilter.valueStr():""); SalesLine_ds.executeQuery(); } Если просто накладывать фильтр на поле прямо на форме - работает. Как побороть? Последний раз редактировалось gefr; 28.02.2014 в 11:26. Причина: уточнение |
|
28.02.2014, 12:06 | #8 |
Участник
|
Сам разобрался: надо было использовать другой фильтр.
Неправильно для outer join: crCategoryFilter = salesLine_ds.query().dataSourceTable(tableNum(EcoResCategory)).addRange(fieldNum(EcoResCategory, Name)); Правильно для outer join: crCategoryFilter = salesLine_ds.query().addQueryFilter( salesLine_ds.query().dataSourceTable(tableNum(EcoResCategory)),"Name"); |
|