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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2005, 17:26   #1  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
? Как получить данные из связ таблиц в динамич запросе?
Пожалуйста, подскажите, как можно получить данные из динамического запроса, где основная таблица связана еще с несколькими, а данные нужны как раз из этих "подчиненных" таблиц.

что-то вроде queryRun.get(...).joinChild() - не получается( или это не для этого?

Большое спасибо
Старый 26.09.2005, 17:39   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Что-то типа такого

PHP код:
InventTable  inventTable;
InventTrans inventTrans;
;
...
inventTable QueryRun.Get(tablenum(InventTable));
inventTrans QueryRun.Get(tablenum(InventTrans));

или

inventTable 
QueryRun.GetNo(1);
inventTrans QueryRun.GetNo(2); 
__________________
Axapta v.3.0 sp5 kr2
Старый 26.09.2005, 17:42   #3  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
спасибо....
тоже так пробовал,просто у меня они пустые строчки выдают.
а почему может такое присходить? неправильно связи настроены или еще что?
данные вполне логичные выдает,соотв запросу....
Старый 26.09.2005, 18:06   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
KERNDOC://Classes/QueryRun/changed
kerndoc://classes/queryRun/next

PHP код:
{
    
queryRun qr;
    
CustTable ct;
 
    
// ...
  
    
if (qr.prompt())
    {
        while (
qr.next())
        {
            if (
qr.Changed(tableNum(CustTable)))
            {
                
ct qr.Get (tableNum(CustTable));
                print 
ct.AccountNum;
            }
        }
    }

Старый 26.09.2005, 18:07   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Приведите пример запроса, как вы выполняете запрос и как получаете из него записи
__________________
Axapta v.3.0 sp5 kr2
Старый 26.09.2005, 18:23   #6  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
query = new Query();
query.addDataSource(tablenum(InventTrans), "InventTrans");
...
query.dataSourceTable(tablenum(InventTrans)).addDataSource(tablenum(InventTransPosting), "InventTransPosting");

query.dataSourceTable(tablenum(InventTransPosting)).
addLink(fieldnum(InventTrans, InventTransId), fieldnum(InventTransPosting, InventTransId));

query.dataSourceTable(tablenum(InventTransPosting)).addRange(fieldnum(InventTransPosting, InventTransPostingType)).
value(queryValue(InventTransPostingType::Financial));

query.dataSourceTable(tablenum(InventTransPosting)).addRange(fieldnum(InventTransPosting, ItemId)).
value(queryValue(_itemId));
...
while (qr.next())
{
inventTrans = qr.get(tablenum(InventTrans));
inventTransPosting = qr.getNo(2);
}
Старый 26.09.2005, 18:47   #7  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
я используюгруппировку.вот и не получается(((
Старый 26.09.2005, 20:19   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
А почему вы решили, что не получается? Проверяете RecId или if (inventTrans)?

Если вы не включили RecId в SelectionField, проверять таким образом запись не имеет смысла, так как его значение всегда будет равно 0. Таким образом просто используйте нужные вам поля и значения в них.

PS Или можно включить поле RecId с агрегатной функцией, например, так
PHP код:
    query.dataSourceTable(tablenum(InventTrans)).addSelectionField(fieldnum(InventTransRecId), SelectionField::Max); 
Тогда проверка записи будет выполнена успешно
__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить query в запросе Бухг проводки Arahnid DAX: Программирование 17 22.10.2007 22:24
Данные в Grid из таблиц, связанных по Outer Join cherv DAX: Программирование 2 17.02.2007 01:36
Как получить данные Configuration Utility? 111andrei DAX: Программирование 2 07.02.2007 10:55
Как в Axapte получить данные о windows Кандидат DAX: Программирование 7 23.11.2005 18:30
Как получить записи двух таблиц в виде одной таблицы? chi DAX: Программирование 32 16.12.2004 11:44

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:23.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.