![]() |
#1 |
Участник
|
query
Пишу код:
X++: query.addDataSource(tableNum(ProdTable)); qbs = query.dataSourceTable( tableNum(ProdTable) ); query.addDataSource(tableNum(SalesTable)); qbs = query.dataSourceTable( tableNum(SalesTable) ); if( SalesEditFilter.valueStr() ) { qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr()); } qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId ));
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#2 |
Программатор
|
Честно говоря ломает напрягать свои телепатические способности... Чё за ошибка то???
|
|
![]() |
#3 |
Программатор
|
X++: qbs = query.addDataSource( tableNum(ProdTable) ); qbs = qbs.AddDataSource( tableNum(SalesTable) ); if( SalesEditFilter.valueStr() ) { qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr()); } qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId )); Последний раз редактировалось Sada; 29.03.2007 в 11:23. Причина: косячокс |
|
![]() |
#4 |
Участник
|
Ошибка в том, что второй источник нужно добавлять дочерним к первому. А вы их оба добавляете к запросу на одном уровне.
X++: qbs = qbs.addDataSource(tableNum(SalesTable)); |
|
![]() |
#5 |
Участник
|
пишу в executeQuery() следущее:
X++: qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(SalesTable)); qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId )); if( SalesEditFilter.valueStr() ) { qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr()); }
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#6 |
Участник
|
Syntax
public QueryBuildLink addLink(fieldId _parentField, fieldId _thisField) а у вас как я вижу наоборот идет - _thisField, _parentField эт про линк второе: условие накладывается до супер или после в методе? |
|
![]() |
#7 |
Участник
|
Цитата:
до супера Ктонить пробовал таблицу саму с собой связать ProdTable, поля ProdId и CollectRefProdId.. просто очень надо такую фишку сделать)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() Последний раз редактировалось Himan; 29.03.2007 в 13:10. |
|
![]() |
#8 |
Участник
|
нет ничего трудного.
Query q = new Query(); QueryBuildDataSource qbs; ; qbs = q.addDataSource(tableNum(ProdTable)); qbs = qbs.addDataSource(tableNum(ProdTable)); qbs.addLink(fieldNum( ProdTable, ProdId), fieldNum( ProdTable, CollectRefProdId)); или что-то другое имелось ввиду? |
|
|
За это сообщение автора поблагодарили: Himan (1). |
![]() |
#9 |
Участник
|
X++: qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefType ) ).value( Enum2Str(InventRefType::Sales) ); if( SalesEditFilter.valueStr() ) { prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); }
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#10 |
Участник
|
ну "неахти" это не показатель совсем.
а както так оно может работать, потаму, что надо не добавлять ренж на каждый вызов, а только изменять значение его. |
|
![]() |
#11 |
Участник
|
Цитата:
а както так оно может работать, потаму, что надо не добавлять ренж на каждый вызов, а только изменять значение его.
clearRanges() и все)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#12 |
Участник
|
X++: public void executeQuery() { QueryBuildDatasource qbs; ; prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).clearLinks(); prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).clearRanges(); if( SalesCheckFilter.value( ) ) { qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefType ) ).value( Enum2Str(InventRefType::Sales) ); if( SalesEditFilter.valueStr() ) { prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); } } super(); }
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#13 |
Дмитрий Ерин
|
Почему-то мне это напомнило старый русский обычай - бить стакан об пол после выпивания его содержимого...
Извините, не сдержался ![]() P.S.: Himan, прислушайтесь к совету Jony. Лучше сразу привыкать к общепринятым правилам - и Вам, и вашим коллегам потом легче будет читать такой код. |
|
|
За это сообщение автора поблагодарили: Himan (1). |
![]() |
#14 |
Участник
|
Ruff, просто их может быть, а может нет, так что держать их не вижу смысла)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#15 |
Участник
|
формируйте запрос в инит источника данных, запомните ранж, в executeQuery только меняйте его значение.
|
|
![]() |
#16 |
Участник
|
А как или сделать или, чтоб
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 ) ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); подскажите)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() Последний раз редактировалось Himan; 29.03.2007 в 15:50. |
|
![]() |
#17 |
Участник
|
сделать можно повсякому, за что я и люблю аксапту
![]() Опишите задачу как можно полнее, что есть и что надо получить, тогда и можно что-то думать. |
|
![]() |
#18 |
Участник
|
1. Все заказы которые имеют в поле номер ссылки номер указанного в фильтре заказа.
2. Все заказы которые ссылаются (через поле ссылка производства т.е. ) на производственный заказ у которого в поле номер ссылки указан заказ из фильтра. При этом если я наложил стандартный фильт, то твой запрос должен накладывать ограничения сверх этого заказа.
__________________
Рабочий день сокращает жизнь на 8 часов ![]() Последний раз редактировалось Himan; 29.03.2007 в 16:06. |
|
![]() |
#19 |
Участник
|
т.е. показать заказы с номером из фильта и заказы, связанные с первым по полю CollectRefProdId ?
т.е. показать основной заказ и его дочерние? я прально понял? |
|
![]() |
#20 |
Участник
|
ну да
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
Теги |
datasource, query, датасорс (datasource), источник данных (datasource), подчиненный источник данных, программно, запрос (query) |
|
|