Цитата:
Сообщение от
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
}