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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.12.2010, 15:27   #1  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от samolalex Посмотреть сообщение
Скорее всего, этот нюанс в пятой версии Аксапты был устранен.
А что в AX2009 вот так писать нельзя:

X++:
if (inventTrans)
{
...
}
Если можно, то чем этот код отличается от приведенного выше? Точно такое же условие.
Старый 01.12.2010, 15:30   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
А что в AX2009 вот так писать нельзя:

X++:
if (inventTrans)
{
...
}
Если можно, то чем этот код отличается от приведенного выше? Точно такое же условие.
Я имел ввиду использование табличной переменной внутри запроса в условии (where...).

Цитата:
Если можно, то чем этот код отличается от приведенного выше? Точно такое же условие.
Он (код, который я написал в моем предыдущем сообщении) отличается тем, что в условии запроса не используется табличная переменная без указания поля, что может не вызвать ошибки в Ax2009.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 01.12.2010 в 15:37.
Старый 01.12.2010, 15:39   #3  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от samolalex Посмотреть сообщение
Он отличается тем, что в условии запроса не используется табличная переменая без указания поля, что может не вызвать ошибки в Ax2009.
Но ведь табличная переменная не используется в запросе, следовательно ничем не отличается от любой другой переменной. Такое выражение сначала преобразуется в true или false (в данном случае false) и после этого подставится в запрос. По крайне мере в 3.0 так. Про переменную, которая используется в запрос, насколько я понял, речи не идет.
Старый 01.12.2010, 15:50   #4  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Но ведь табличная переменная не используется в запросе, следовательно ничем не отличается от любой другой переменной. Такое выражение сначала преобразуется в true или false (в данном случае false) и после этого подставится в запрос. По крайне мере в 3.0 так. Про переменную, которая используется в запрос, насколько я понял, речи не идет.
Табличная переменная используется в условии запроса. Под запросом я имею ввиду всю кодовую конструкцию после select, включая совокупность выражений после where.
А по поводу Ax2009 было сделано предположение об устранении возможности использования табличной переменной в условии запроса без указания конкретного поля.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 01.12.2010 в 15:56.
Старый 01.12.2010, 16:06   #5  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от samolalex Посмотреть сообщение
А по поводу Ax2009 было сделано предположение об устранении возможности использования табличной переменной в условии запроса без указания конкретного поля.
При устранении возможности было бы неплохо ошибку выдавать, а не AOS валить
Старый 01.12.2010, 16:13   #6  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
При устранении возможности было бы неплохо ошибку выдавать, а не AOS валить
Не спорю.

Интересно узнать, как данный запрос выполняется у других участников в AX2009.
__________________
С уважением, Александр.
Старый 01.12.2010, 15:42   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
вообще на форуме уже обсуждался вопрос про использование неявного преобразования (не могу найти ссылку ), и в частности про условие существования записи в таблице.
Т.е. использование синтаксиса :
X++:
if (inventTrans)
или

X++:
if (inventTrans.RecId != 0)
связано это с тем, что определенное отрицательное значение RecId дает значение false, поэтому неявное преобразование приведет к тому что запись на самом деле есть, а условие не отработает. Поэтому необходимо всегда использовать вариант:
X++:
if (inventTrans.RecId != 0)
ну или в Вашем случае
X++:
where (rHRMOrderTrans.RecId == 0 || rHRMOrderTrans.RecId == orderTrans.RecId)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax2009: как добавить строчку в "Конфигурация сервера"? mazzy DAX: Администрирование 1 21.08.2010 14:37
Shekhar: Dynamics AX2009 : Standalone Installation on Vista with Role centres and workflow. Blog bot DAX Blogs 0 30.03.2010 15:05
ax2009 & SSRS kitty DAX: Программирование 6 02.04.2009 10:38
AX2009 и AX4.0 совместимый код. Как? Alex_KD DAX: Программирование 6 08.05.2008 01:10
Ошибка "необходимо заполнить 'основной код сотрудника' " alpin DAX: Функционал 2 04.12.2003 16:28

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

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

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