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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.09.2014, 14:14   #1  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Ошибка в запросе - Почему не работает??
Добрый день! Не получается написать правильно запрос - не понимаю почему вылазит ошибка. Подскажите пожалуйста?
Цитата:
select FirstOnly InventNonConformanceTable
join VendTrans
join InventDimInventTrans
join InventDimNonconformance
join InventTrans
join VendInvoiceTrans
join vendInvoiceJour
where inventNonConformanceTable.InventTransIdRef == InventTrans.InventTransId &&
inventDimNonConformance.inventDimId == inventNonConformanceTable.InventDimId &&
inventDimNonConformance.inventBatchId == inventDimInventTrans.inventBatchId &&
inventDimNonConformance.inventBatchId == inventTrans.inventDim().inventBatchId &&
inventTrans.InventTransId == vendInvoiceTrans.InventTransId &&
inventTrans.InvoiceId == vendInvoiceTrans.InvoiceId &&
vendInvoiceTrans.PurchID == vendInvoiceJour.PurchId &&
vendInvoiceTrans.InvoiceDate == vendInvoiceJour.InvoiceDate &&
vendInvoiceTrans.InvoiceId == vendInvoiceJour.InvoiceId &&
vendInvoiceTrans.numberSequenceGroup == vendInvoiceJour.numberSequenceGroup &&
vendInvoiceJour.LedgerVoucher == vendTrans.Voucher &&
vendInvoiceJour.InvoiceDate == vendTrans.TransDate &&
vendInvoiceJour.InvoiceAccount == vendTrans.AccountNum &&
vendTrans.RecId == this.RefRecId;
Выдает ошибку на стройку с применением метода inventTrans.inventDim(). Illegal use of WHERE expression.
Тогда как вот такой вариант вполне себе исполняется:
Цитата:
select inventNonConformanceTable
join inventDimNonConformance
where inventNonConformanceTable.InventTransIdRef == inventTrans.InventTransId &&
inventDimNonConformance.inventDimId == inventNonConformanceTable.InventDimId &&
inventDimNonConformance.inventBatchId == inventTrans.inventDim().inventBatchId;
Старый 15.09.2014, 14:29   #2  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Нельзя использовать методы в запросах таким образом
Вместо inventTrans.inventDim() вам прийдеться приджоинить inventDim отдельно, а потом использовать поля из этой таблици далее.

Приведенный пример работает "на ура" т.к. inventTrans не участвует в джоинах, а уже выбран. "Неработающий" же код АХ конвертирует в SQL и вот с вашим методом возникает небольшая проблема.

Последний раз редактировалось skuull; 15.09.2014 в 14:34.
Старый 15.09.2014, 14:31   #3  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
Потому что InventTrans у вас участвует в запросе, а функцию можно вызвать только к конкретному курсору. Приджойните InventDim в запросе к InventTrans и сравнивайте уже с полем inventDim.inventBatchId.
Старый 15.09.2014, 15:00   #4  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Спасибо большое люди добрые! Вы мне очень помогли! Очень благодарен - все теперь стало ясно!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Need help ошибка Неправильный тип индекса массива. Evgeniy2020 DAX: Администрирование 3 05.11.2013 03:13
Ошибка при добавлении нового пользователя в AX2009 LexR DAX: Администрирование 4 06.07.2012 17:51
Ошибка чтения файлов XLS под Windows 7 Zabr DAX: Программирование 14 05.09.2011 12:52
Ошибка в логе при установке клиента AX 2009 sao DAX: Администрирование 9 04.02.2010 11:56
А почему Завершить сессию Не работает? bm DAX: Функционал 13 28.08.2008 17:58

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

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

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