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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2010, 12:18   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от propeller Посмотреть сообщение
Дело именно в условии, потому что параметр AccountNum передал ИМЕННО значение а не кусок кода.
Не-а. Именно КУСОК КОДА - грубо говоря, фрагмент текста программы вида "AccountNum".
Измените тип переменной AccountNum и посмотрите, что получится:
X++:
    str AccountNum = "Клиент1";
    // AccountNum AccountNum = "Клиент1";
Имеем сообщение компилятора: "Контейнерные и текстовые поля не могут быть использованы в выражении WHERE."

Еще иллюстрация. Верните всё обратно, после чего внесите такие изменения:
X++:
    AccountNum AccountNum = "Клиент1";
    ..................    
    while select *
    from CustTable
    // where CustTable.AccountNum == %1
    where CustTable.AccountNum %1
    ..................    
    //#cycle(AccountNum,int1)
    #cycle(== AccountNum,int1)
}
Всё компилируется и работает.
Старый 26.02.2010, 12:54   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Gustav Посмотреть сообщение
Не-а. Именно КУСОК КОДА - грубо говоря, фрагмент текста программы вида "AccountNum".
Измените тип переменной AccountNum и посмотрите, что получится:
X++:
    str AccountNum = "Клиент1";
    // AccountNum AccountNum = "Клиент1";
Имеем сообщение компилятора: "Контейнерные и текстовые поля не могут быть использованы в выражении WHERE."
Это старая фича, которая вполне адекватно описана в сообщении об ошибке. И макросы тут совершенно не при чем. Ошибка будет и в тексте программы без макроса. Проблем в том, что не указана размерность символьного переменной.

Для исправления ошибки досточно всего-лишь явно задать размерность символьной переменной

X++:
    str 10 AccountNum = "Клиент1";
За это сообщение автора поблагодарили: Gustav (2).
Старый 26.02.2010, 13:15   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
И макросы тут совершенно не при чем
Ключевым моментом здесь является, не какая-то конкретная ошибка, а тот факт что ошибка вообще возникла на этапе компиляции. Тем самым ещё раз подтверждая, что макросы заменяются их значениями именно во время компиляции!
За это сообщение автора поблагодарили: Gustav (2).
Теги
макрос

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как из формы передать значение? s.alex DAX: Программирование 18 16.05.2013 00:56
Получить значение qbr .. propeller DAX: Программирование 2 07.11.2009 00:19
Каким образом можно получить значение поля, зная fieldId? Lemming DAX: Программирование 10 19.06.2006 12:25
присовить значение контролу отчета Pavel Pustovalov DAX: Программирование 2 29.06.2005 08:56
Можно ли передать котрол формы как параметр метода? nicky DAX: Программирование 6 23.05.2005 18:40
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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