|
01.09.2008, 11:52 | #1 |
Участник
|
ясно
Это еще не на человеческом языке. Пользователям то что нужно? |
|
01.09.2008, 12:01 | #2 |
Участник
|
задание ставил консультант - что надо пользователям - не знаю - хотят фильтр!
И раз название темы всё таки "Как удалить datasource из Query" Привожу полный работающий код ещё раз: X++: public static Query deleteDataSource(Query query, QueryBuildDataSource dataSource) { Query result; QueryBuildDataSource dSource; int idx; boolean isEqual(QueryBuildDataSource A, QueryBuildDataSource B) { return (A.name() == B.name()) && (A.table() == B.table()); } QueryBuildDataSource copyDataSource(QueryBuildDataSource dest, QueryBuildDataSource source) { QueryBuildRange range; int i; for (i = 1; i <= source.linkCount(); i++) { dest.addLink(source.link(i).field(), source.link(i).relatedField()); } //31.08.2008 DMV-ruk added dynalinks for (i = 1; i <= source.dynalinkCount(); i++) { dest.addDynalink(source.dynalink(i).field(), source.dynalink(i).cursor(),source.dynalink(i).dynamicField()); } for (i = 1; i <= source.rangeCount(); i++) { range = dest.addRange(source.range(i).field()); range.value(source.range(i).value()); range.name(source.range(i).name()); range.status(source.range(i).status()); range.label(source.range(i).label()); range.enabled(source.range(i).enabled()); } for (i = 1; i <= source.sortFieldCount(); i++) { dest.addSortField(source.sortField(i), source.sortDirection(i)); } for (i = 1; i <= source.sortIndexCount(); i++) { dest.addSortIndex(source.sortIndex(i)); } dest.fields().dynamic(source.fields().dynamic()); if (!dest.fields().dynamic()) { dest.fields().clearFieldList(); for (i = 1; i <= source.fields().fieldCount(); i++) { dest.fields().addField(source.fields().field(i), source.fields().fieldKind(i)); } } return dest; } void delete(QueryBuildDataSource topOrig, QueryBuildDataSource topRes) { int i; for (i = 1; i <= topOrig.childDataSourceCount(); i++) { if (!isEqual(topOrig.childDataSourceNo(i), dataSource)) { delete(topOrig.childDataSourceNo(i), copyDataSource(topRes.addDataSource(topOrig.childDataSourceNo(i).table(), topOrig.childDataSourceNo(i).name()), topOrig.childDataSourceNo(i))); } } } result = new Query(); for (idx = 1; idx <= query.dataSourceCount(); idx++) { dSource = query.dataSourceNo(idx); if (dSource.level() == 1) { if (!(isEqual(dSource, dataSource))) { delete(query.dataSourceNo(idx), copyDataSource(result.addDataSource(query.dataSourceNo(idx).table(), query.dataSourceNo(idx).name()), query.dataSourceNo(idx))); } } } return result; } |
|
|
За это сообщение автора поблагодарили: mazzy (1). |
Теги |
query |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|