AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.09.2008, 11:52   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от rkorchagin Посмотреть сообщение
там сделан самодельный модуль по логистике
ясно

Цитата:
Сообщение от rkorchagin Посмотреть сообщение
Постановка задачи была: "нам нужен фильтр по этому полю"
Это еще не на человеческом языке.
Пользователям то что нужно?
__________________
полезное на axForum, github, vk, coub.
Старый 01.09.2008, 12:01   #2  
rkorchagin is offline
rkorchagin
Участник
 
81 / 69 (3) ++++
Регистрация: 26.09.2006
Цитата:
Сообщение от mazzy Посмотреть сообщение
Пользователям то что нужно?
задание ставил консультант - что надо пользователям - не знаю - хотят фильтр!

И раз название темы всё таки "Как удалить 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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как можно использовать join Query как DataSource для формы ? AndrianG DAX: Программирование 2 10.03.2009 10:25
jinx: Zugriff auf die Query, QueryRun und DataSource in einer Form Blog bot DAX auf Deutsch 0 14.04.2008 18:05
axcoder: Tabax 0.2.14: View query of the active datasource Blog bot DAX Blogs 2 02.02.2007 12:10
How do I delete a datasource from a query ? (by stelsig) Maxim Gorbunov DAX in English 0 22.03.2006 12:21
query->DataSource->grid ald DAX: Программирование 2 06.02.2004 09:24
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:03.