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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2005, 08:05   #21  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Цитата:
Кстати, обратите внимание, что у вашем случае активируется кнопка сброса фильтра. Если ее нажать, то увидите что хотите
не поясните??? был бы благодарен
Старый 27.10.2005, 08:31   #22  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Эта кнопка активируется в случае расхождения м-ду выполняемым запросом (тот что в QueryRun().Query()) и, так сказать, базовым запросом (который находится в датасорс.Query()). При этом вызывается заново метод датасорс.ExecuteQuery(), который передает в QueryRun() запрос из Query() датасорса.

В вашем случае вы изменили запрос датасорс.Query(). Запрос в QueryRun().Query() отличается от него, поэтому активизировалась кнопка. При сбросе измененный запрос попадает в QueryRun() и вы видете его. Обратите внимание, что в фильтрации записей теперь видно ваше условие.
__________________
Axapta v.3.0 sp5 kr2
Старый 27.10.2005, 08:48   #23  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Но это значит что пользователь может изменить запрос прямо из формы. а как этого избежать? записать его QueryRun().Query()

Можно тогда вопрос, мне нужно из набора записей убрать записи. которые находятся в другом наборе,

один убирает когда я доавляю в датасорс таблицу, с определенным критерием но с признаком joinMode::NoExistsJoin,

вкогда присоеднияю вторуб таблицу со сложным условием - возникает ощущение что это условие не воспринимается и игнорируется....

короче говоря вопрос в следующем , как правильно исключить записи с помощью joinMode::NoExistsJoin, последовательно по 2 наборам записей
Старый 27.10.2005, 09:18   #24  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Но это значит что пользователь может изменить запрос прямо из формы. а как этого избежать?
Блокируйте или скрывайте. Range().Status(RangeStatus::Locked) или Range().Status(RangeStatus::Hidden)

По поводу второго вопроса - приведите запрос sql который желаете получить
__________________
Axapta v.3.0 sp5 kr2
Старый 27.10.2005, 10:00   #25  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
ну например
Код:

Select inventtable.itemid from inventtable
where itemid not in
(SELECT inventtable.itemid FROM inventtable
inner join inventsum
on inventtable.itemid = inventsum.itemid
where InventSum.Inventdimid = ' АН00000031' AND
InventSum.PostedQty + InventSum.Received - InventSum.Deducted + InventSum.Registered - InventSum.Picked - InventSum.ReservPhysical > 0 )
такиъх условия надо чтобы 2 было...
Старый 27.10.2005, 10:18   #26  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А зачем во вложенном запросе нужна InventTable?
__________________
Axapta v.3.0 sp5 kr2
Старый 27.10.2005, 11:57   #27  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
согласен не нужна...
просто делал запрос на основе других - поторопился,

вопрос остается открытым
Старый 27.10.2005, 12:32   #28  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
сформировал критерий, знаю как запихнуть его с помощью AddRange,
теперь не знаю как реализовать "отнимание" этих записей
Старый 27.10.2005, 12:35   #29  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
X++:
    Query           q = new Query();
    ;
    q.addDataSource(tablenum(InventTable));
    q.dataSourceTable(tablenum(InventTable)).addDataSource(tablenum(InventSum));
    q.dataSourceTable(tablenum(InventSum)).joinMode(JoinMode::NoExistsJoin);
    q.dataSourceTable(tablenum(InventSum)).addLink(fieldnum(InventTable, ItemId),
        fieldnum(InventSum, ItemId));
__________________
Axapta v.3.0 sp5 kr2
Старый 27.10.2005, 12:42   #30  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
тк делал,
но когда добавляешь еще одну таблицу с Jo inMode::NoExistsJoin, второго условия как будто и нет
Старый 27.10.2005, 13:59   #31  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Если я вас правильно понял, то попробуйте так
X++:
q.dataSourceTable(tablenum(InventSum)).joinMode(JoinMode::NoExistsJoin);
q.dataSourceTable(tablenum(InventSum)).fetchMode(QueryFetchMode::One2One);
__________________
Axapta v.3.0 sp5 kr2
Старый 27.10.2005, 14:24   #32  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
fetchMode(Q ueryFetchMode::One2One) - я понимаю что это связано со связью типа 1 -1 или 1 ко многим. но все равно ен объясните причем здесь это?
Старый 28.10.2005, 08:08   #33  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
определенное движение есть... но работаето либо одно условие c joinMode::InnerJoin либо второе...

все действия производятся в init формы
Старый 28.10.2005, 08:35   #34  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Приведите свой код, как вы формируете запрос.
Без этого получается гадание на кофейной гуще
__________________
Axapta v.3.0 sp5 kr2
Старый 01.11.2005, 09:35   #35  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
По поводу использования fetchMode(QueryFetchMode::One2One)

При разборе полетов выяснилось, что при использовании такого режима для следующего Query
X++:
Query    q = new Query();
    QueryBuildDatasource    qbds;
    ;
    qbds = q.addDatasource(tablenum(table1));
    qbds.AddDatasource(tablenum(table2));
    qbds.DatasourceTable(tablenum(table2)).
      joinMode(JoinMode::[No]ExistsJoin);
    qbds.DatasourceTable(tablenum(table2)).
      fetchMode(QueryFetchMode::One2One);
    qbds.DatasourceTable(tablenum(table2)).
      addLink(fieldnum(Table1, field1), fieldnum(Table2, field2));
    
    qbds.AddDatasource(tablenum(table3));
     qbds.DatasourceTable(tablenum(table3)).
      joinMode(JoinMode::[No]ExistsJoin);
     qbds.DatasourceTable(tablenum(table3)).
      fetchMode(QueryFetchMode::One2One);
     qbds.DatasourceTable(tablenum(table3)).
      addLink(fieldnum(Table1, field2), fieldnum(Table3, field2));
Axapta формирует на сервере запрос в таком виде
X++:
select * 
      from table1 
        where [not] Exists(select 'x' 
                          from table2
                       where table1.field1 = table2.field1 and 
                       [not] Exists(select 'x' 
                                    from table3 
                                    where table1.field2 = table3.field2))
т.е. каждый добавляемый источник данных, подключаемый ч/з Exists или NoExists будет попадать в предложение where предыдущего подключенного источника данных на том-же уровне вложенности

Если использовать подключение источников данных ч/з Exists, то такой запрос работает как ожидалось. Если же использовать NotExists, то необходимо рассматривать каждый запрос по отдельности для правильного составления.

2 Bars

В вашем случае я бы предложил сделать следующее

1. Подключать первым InventSum
2. Подключать его как ExistsJoin,
3. В условии изменить сравнение с ">" на "<="
__________________
Axapta v.3.0 sp5 kr2
Старый 01.11.2005, 11:33   #36  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Спасибо, попробую
хотя в принципе процесс уже немного изменили и критерии соответсвенно тоже... но на будущее обязательно запомню.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Метод addRange() и его использование (верное) Akinak DAX: Программирование 8 06.04.2007 00:32
AddRange не фильтрует Ихъ бин программикеер DAX: Программирование 6 01.09.2006 14:27
Расширенный AddRange и OuterJoin Russland DAX: Программирование 0 04.07.2006 16:36
Можно ли редактировать форму, если на нее наложен addRange? Hans DAX: Программирование 10 22.05.2006 16:35
Как добавить в addRange условие по "или" на контейнерные поля? Lora DAX: Программирование 9 29.11.2004 13:52

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

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

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