|
![]() |
#1 |
Участник
|
блин, а как все сложно начиналось та
![]() по идее нужно ограничение вида prodId == 'prodNum1' || CollectRefProdId == 'prodNum1'; т.е. X++: str value = '((ProdId == %1)||(CollectRefProdId == %1))' ... ....addRange(fieldNum(prodTable,recId)).value(strFmr(value, 'ProdNum1')); ПС: могут быть опечатки и пр мелочи. но идея вроде та. |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Jony
![]() блин, а как все сложно начиналось та
![]() по идее нужно ограничение вида prodId == 'prodNum1' || CollectRefProdId == 'prodNum1'; т.е. X++: str value = '((ProdId == %1)||(CollectRefProdId == %1))' ... ....addRange(fieldNum(prodTable,recId)).value(strFmr(value, 'ProdNum1')); ПС: могут быть опечатки и пр мелочи. но идея вроде та.
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#3 |
Участник
|
Цитата:
Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 18.
X++: if( SalesEditFilter.valueStr() ) prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, RecId ) ).value(strFmt(value, SalesEditFilter.valueStr())); else prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, RecId ) ).value(strFmt(value, ""));
__________________
Рабочий день сокращает жизнь на 8 часов ![]() Последний раз редактировалось Himan; 29.03.2007 в 17:01. |
|
![]() |
#4 |
Программатор
|
str value = '((ProdId == "%1")||(CollectRefProdId == "%1"))'
|
|
![]() |
#5 |
Участник
|
по else ветка должна по идее очищать существующий ренж а не добавлять пустой.
и ненада каждый раз добавлять ограничение, его можно тока 1 раз добавить и менять ему значение каждый раз. Последний раз редактировалось Jony; 29.03.2007 в 17:26. |
|
![]() |
#6 |
Участник
|
т.е. надо фильтр налаживать на номар ссылки вот в чем проблемка
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#7 |
Участник
|
по теории должно помочь, если сделать выборку, а потом join
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#8 |
Участник
|
надо что-то подобное
X++: prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr()); qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) );
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#9 |
Участник
|
Вылаживаю запрос который отрабатывает коректно...
в коде прописы df. следующее.: X++: qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); qbs.joinMode( joinMode::InnerJoin ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr());
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#10 |
Дмитрий Ерин
|
Цитата:
Сообщение от Himan
![]() Вылаживаю запрос который отрабатывает коректно...
в коде прописы df. следующее.: X++: qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); qbs.joinMode( joinMode::InnerJoin ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr()); Не вникал в задачу, поэтому сказать, где - правильно, не могу. Но где-то точно неправильно ![]()
__________________
![]() |
|
![]() |
#11 |
Участник
|
Цитата:
Потому что у Вас в коде CollectRefProdId относится к родительскому DS, а ProdId - к дочернему (см. выше замечание Jony про метод addLink). А в приложенном Query в relation всё указано наоборот: Field = CollectRefProdId, RelatedField = ProdId.
а в коде все, не фильтрует почему не понятно
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#12 |
Дмитрий Ерин
|
Попробуйте так:
X++: ... qbs.joinMode( joinMode::InnerJoin ); qbs.fetchMode(1); ...
__________________
![]() |
|
![]() |
#13 |
Участник
|
X++: qbs.addLink( fieldNum( ProdTable, ProdId ), fieldNum( ProdTable, CollectRefProdId ) ); qbs.joinMode( joinMode::InnerJoin ); qbs.fetchMode(1); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr());
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#14 |
Дмитрий Ерин
|
Ну да... фетчмоде вообще-то по умолчанию = 1. Это я ступил
![]() Сложно конечно разгадывать вслепую. Форму бы глянуть... Может быть дело в выравнивании... У Вас на контроле SalesEditFilter (я так понимаю - это StringEdit) - в качестве EDT указан SalesIdBase или что?
__________________
![]() |
|
![]() |
#15 |
Участник
|
нет там EDT, просто поле на форма) Я из него значение прямо в фильтр и все
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#16 |
Участник
|
вот форма)) посмотрите в чем дело
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#17 |
Дмитрий Ерин
|
Ну вот, как я и предполагал.
Попробуйте указать этому контролу свойство ExtendedDataType = SalesIdBase. Если не поможет, значит проблема не в выравнивании вправо ![]()
__________________
![]() |
|
![]() |
#18 |
Участник
|
Значит не в выравнивании)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#19 |
Участник
|
почему интересно на значения фильтра не реагирует, если бы выравнивание то вообще ничего ббы не выводил а так, все выводит как будто на него ничего и не накладывали, что такое ума не приложу)
дак выложил же Up
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#20 |
Дмитрий Ерин
|
|
|
Теги |
datasource, query, датасорс (datasource), источник данных (datasource), подчиненный источник данных, программно, запрос (query) |
|
|