Показать сообщение отдельно
Старый 07.03.2013, 15:02   #9  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от kadet Посмотреть сообщение
Добрый день!
Подскажите, пожалуйста, искал по форуму и документации, не могу найти ошибку. Есть кусок кода для Axapta 4.0:

if (salestable.salesid == (select salesid
from salestable
join wmspickingroute
where salestable.salesid == wmspickingroute.transrefid
&& salestable.SalesStatus == salesstatus::completeleft
&&( wmspickingroute.expeditionstatus == wmsexpeditionstatus::started
|| wmspickingroute.expeditionstatus == wmsexpeditionstatus::activated)))

Компилятор выдает синтактическую ошибку, до этого работал только в sql, поэтому не могу понять что не правильно с синтаксисом.
Ваш SELECT всегда возвращает запись в указанную после слова FROM переменную, независимо от того, сколько полей вы указываете. В данном случае будет 2 переменных: salestable и wmspickingroute. Также ваш код не имеет смысла, т.к. SalesId будет всегда совпадать. Попробуйте следующий код:
X++:
select salesid from salestable
join wmspickingroute
    where salestable.salesid   == wmspickingroute.transrefid
    && salestable.SalesStatus == salesstatus::completeleft
    &&( wmspickingroute.expeditionstatus  == wmsexpeditionstatus::started
    || wmspickingroute.expeditionstatus  == wmsexpeditionstatus::activated);
if (mySalesTable.SalesId  == salesTable.SalesId) // Сравниваем 2 переменные указывающие на разные наборы данных
{
    // some code
}
__________________
// no comments