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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.08.2005, 19:39   #1  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
Условие where в синтаксисе Query
Подскажите, пожалуйста, как с помощью синтаксиса Query отразить условие ...where RAssetTrans.AccountNum == RassetTable.AccountNum ?
Старый 02.08.2005, 19:47   #2  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
какое то странное условие..
а точно такое условие?
текущая строка фильтруется сама на себя?

но если я чего то не поняла

this.query()
.dataSourceTable(TableNum(tmpLedgerAccountsQuery))
.addRange(fieldnum(tmpLedgerAccountsQuery,balance)).value(параметр фильтра);
Старый 02.08.2005, 19:51   #3  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
и по-моему на форуме уже не раз обсуждались вопросы с Query (разных форматов написания)

предлагаю воспользоваться поиском на форуме))
говорят, помогает)))
Старый 02.08.2005, 20:01   #4  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
select Name from RAssetTable
where RAssetTable.AccountNum == RAssetTrans.AccountNum; -чего тут странного(((
Старый 02.08.2005, 20:14   #5  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
есть метод на RAssetTrans
под названием assetName(), который возвращает Наименование из таблицы Основные стредства

получается вот так Name = RAssetTrans.assetName()
Старый 02.08.2005, 20:18   #6  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
мне надо понять с query, это только для примера про основные (((
Старый 02.08.2005, 20:36   #7  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
последовательно в квери прикрепляешь необходимые таблицы, связывая их между собой, с указанем полей для связки...
далее определяешь QueryRun на основе составленного квери, и просмотриваешь каждую строку
PHP код:
Query                           q  = new Query();
QueryRun                    qr;
QueryBuildDataSource            qbdsTableqbdsTrans;

qbdsTrans q.addDataSource(tablenum(Table));

qbdsTable qbdsTransaddDataSource(tablenum(Trans));
qbdsTable.joinMode(joinMode::InnerJoin)
qbdsTable.addLink(fieldNum(Tablefield), fieldNum(Transfield));
 
qr = new QueryRun(q);

while (
qr.next())
{
          


QueryBuildRange range;
QueryBuildRange rangeTrans;
Старый 02.08.2005, 20:41   #8  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
посмотри ссылку

http://www.axforum.info/forums/showt...ighlight=query
Старый 03.08.2005, 13:19   #9  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
А если у меня запрос по двум таблицам, то я должен дважды делать
OST = qr.get(tablenum(RAssetTrans)) и
Name = qr.get(tablenum(RAssetTable)) - так?
Старый 03.08.2005, 14:23   #10  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
Совершенно верно! При условии, что ты будешь извлекать данные из обеих таблиц!
Старый 03.08.2005, 14:36   #11  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
из обеих таблиц -это значит добавить в один и тот же два разных датасурса? то есть типа from RAssetTrans,RAssettable?
qbdsRAssetTrans = queryRAssetTrans.addDataSource(tablenum(RAssetTrans));
qbdsRAssetTrans = queryRAssetTrans.addDataSource(tablenum(RAssetTable));
Старый 03.08.2005, 14:44   #12  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
Query q = new Query();
QueryRun qr;
QueryBuildDataSource qbdsTable, qbdsTrans;
RAssetTable _RAssetTable;
RAssetTrans _RAssetTrans;

qbdsTrans = q.addDataSource(tablenum(RAssetTable));

qbdsTable = qbdsTransaddDataSource(tablenum(RAssetTrans));
qbdsTable.joinMode(joinMode::InnerJoin)
qbdsTable.addLink(fieldNum(Table, AccountNum), fieldNum(RAssetTrans, AccountNum));

qr = new QueryRun(q);

while (qr.next())
{
_RAssetTable = qr.get(tablenum(RAssetTable)) ;
_RAssetTrans = qr.get(tablenum(RAssetTrans)) ;

//_RAssetTable - перменная типа таблицы, в которую задан курсор из запроса
//_RAssetTrans - перменная типа таблицы, в которую задан курсор из запроса
// теперь с этими перемеными-курсорами можно работать и вытаскивать
//данные
Name = _RAssetTable.Name; - наименование ОС
}
Старый 03.08.2005, 15:06   #13  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
работает...))).Спасибо тебе, Tays. ))) Можно еще спросить? По почте) ?
Старый 03.08.2005, 15:18   #14  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
когда я в запросе суммирую сумму по одинаковым AccountNum , то при этом в отчете исчезает поле Наиманование. А до этого все красиво выводилось...
Старый 03.08.2005, 15:25   #15  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
и еще. Если я хочу сделать не select *, а select конкретное поле, но при этом без group by. если я пользуюсь selectionfield . то он требует указать group by. А мне надо, например, просто Name
Старый 03.08.2005, 15:32   #16  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Придется его отдельно подтаскивать наименование по AccountNum, потому что при группировке оно съедается.
(display - метод, к примеру, если запрос для формы делаете)

PHP код:
Name RAssetTable::find(_RAssetTable.AccountNum).Name
а по поводу требования group by - просит, видимо, потому что у вас группировка по accountNum на RAssetTrans, и связь по этому полю с RAssetTable - соответственно и там нужно группировать по accountNum
А для Name пожно указать,к примеру SelectionField::Max - тоже подтащит вам название
Старый 03.08.2005, 15:34   #17  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
Спросить можно

f-tays@yandex.ru
Старый 03.08.2005, 16:16   #18  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
как сделать в отчете две колонки, чтобы в них выводились по определенному условию цифры из одного и того же поля таблицы? Всё это в синтаксисе Query/
Возможен ли такой вариант ? While (queryRun.next())
{
// объявление и формирование нового query и queryrun

}
Старый 03.08.2005, 16:22   #19  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
написать два дисплей метода для колонок - а в них проверть условие.

if (condition)
return Table.Field;
return '';

а condition может быть к примеру переменной из classDeclaration отчета.

а их можно заполнять в цикле по записям вашем.
Старый 03.08.2005, 16:24   #20  
sev is offline
sev
Участник
 
151 / 8 (1) +
Регистрация: 01.08.2005
интересно... да, вариант. ) А как я говорю-можно так? То есть внутри queryrun.next() еще раз бегать? Неэффективно так? Но можно? Как считаете?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
условие where по полям одной и той же таблицы Starling DAX: Программирование 23 05.03.2008 15:48
Расширенные возможности Query - арифметические операции в условие Where. Lemming DAX: Программирование 10 07.02.2008 14:38
Как прикрутить в query условие vale15 DAX: Программирование 1 11.09.2007 11:00
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
условие WHERE SomeField == NULL Alexey DAX: Программирование 7 23.01.2002 16:42

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

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

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