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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2002, 19:10   #1  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
? While Select .. ?
Кто-нибудь может объяснить такую ошибку:
<pre>InventSum iS;
While Select iS Where iS.PostedQty != 0 &&
iS.PostedValue != 0 && iS.Closed == NoYes::No &&
((iS.PostedQty - iS.Deducted) != 0)
{
...
}</pre>

или так,

<pre>While Select iS Where iS.PostedQty != 0 &&
iS.PostedValue != 0 && iS.Closed == NoYes::No &&
(abs(iS.PostedQty) != abs(iS.Received))
{
...
}</pre>


Компилируем, получаем -
<font color=red> Некорректное использование выражения Where</font>

Чего-то не понимаю?
__________________
С уважением, Вячеслав.
Старый 15.01.2002, 19:32   #2  
Роман Кошелев is offline
Роман Кошелев
Продавец игрушек
Аватар для Роман Кошелев
 
433 / 73 (3) ++++
Регистрация: 22.11.2001
Адрес: Москва
"while select" имеет тот же синтаксис, что и "select".
Вам следует писать что-то вроде:
<pre>
InventSum iS;
While Select <b>* from</b> iS Where ....
{
...
}</pre>
__________________
С уважением, Роман Кошелев.
Старый 15.01.2002, 20:57   #3  
lm is offline
lm
Участник
 
28 / 10 (1) +
Регистрация: 11.01.2002
Адрес: Россия
Re: While Select .. ?
Цитата:
Изначально опубликовано slava
Кто-нибудь может объяснить такую ошибку:
<pre>InventSum iS;
While Select iS Where iS.PostedQty != 0 &&
iS.PostedValue != 0 && iS.Closed == NoYes::No &&
((iS.PostedQty - iS.Deducted) != 0)
{
...
}</pre>

....
Что поделаешь. Нельзя использовать в Where какие-либо операции с полями таблицы. Их можно только сравнивать с константами или с другими полями.

В первом случае проблема решается так: iS.PostedQty != iS.Deducted

В других случаях тоже можно решить проблему включив if в тело while:

While Select iS Where iS.PostedQty != 0 &&
iS.PostedValue != 0 && iS.Closed == NoYes::No
{
if (iS.PostedQty - iS.Deducted != 0) ...

}
Старый 16.01.2002, 06:17   #4  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
:( Почему?
Роману Кошелеву
Спасибо , но изменение синтаксиса не помогает

Тогда может кто-нибудь знает - это фича такая, или ошибка. Дело в том, что не хочу я тащить if'ы в конструкцию While Select. Это некрасиво
__________________
С уважением, Вячеслав.
Старый 16.01.2002, 12:04   #5  
lm is offline
lm
Участник
 
28 / 10 (1) +
Регистрация: 11.01.2002
Адрес: Россия
Re: Почему?
Цитата:
Изначально опубликовано slava
Тогда может кто-нибудь знает - это фича такая, или ошибка. Дело в том, что не хочу я тащить if'ы в конструкцию While Select. Это некрасиво
Согласно документации, синтаксис SQL запросов в Axapta ограничен, то есть описанная проблема это не глюк.

Красиво, некрасиво а if использовать придется. Иначе проблему не решишь.
Старый 16.01.2002, 12:38   #6  
Роман Кошелев is offline
Роман Кошелев
Продавец игрушек
Аватар для Роман Кошелев
 
433 / 73 (3) ++++
Регистрация: 22.11.2001
Адрес: Москва
Можно попробовать исрользовать display-методы. Я сейчас не за Аксакптой, как только смогу, проверю.
<pre>display int PD()
{
return this.PostedQty - this.Deducted;
}</pre>
см. http://www.axforum.info/forums/searc...rder=ascending
__________________
С уважением, Роман Кошелев.
Старый 16.01.2002, 13:15   #7  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Пробовал, не помогает
Я уже пробовал:

например:
While Select ... inventSum.costPricePcs() == ..

та же ошибка


Наверное это действительно недоработка преобразователя X++ select'а в SQL'евский.
Если так, то очень жаль.
__________________
С уважением, Вячеслав.
Старый 17.01.2002, 13:08   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Re: Re: Почему?
Цитата:
Изначально опубликовано lm


Согласно документации, синтаксис SQL запросов в Axapta ограничен...
Кстати, при разборе EBNF в документации (имеется в виду Руководство разработчика Axapta, вызываемое из меню) можно прийти к выводу, что указанная конструкция вполне соответствует синтаксису

Вот так-то.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
2 while select или join? _scorp_ DAX: Программирование 9 23.01.2009 16:02
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Fred Shen: Always use recId to know if a select statement returns a record Blog bot DAX Blogs 0 28.10.2006 16:40
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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