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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.11.2003, 12:21   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
При попытке следующий фрагмент кода, компилятор выдаст ошибку "Контейнерные и текстовые поля не могут быть использованы в выражении WHERE"
Код:
str         name;
UserInfo    userInfo;
// ...
select firstonly userInfo where userInfo.id == name;
Сообщение об этой же ошибке на английском языке является более информативным: "Container and unbounded string (text) fields are not allowed in a WHERE expression". Все дело в том, что Axapta не позволяет использовать в выражениях WHERE переменные динамического размера. Таковыми являются переменные типов container и str.

Однако, если тип container является чисто динамическим, строкам в X++ можно задать фиксированный размер при объявлении переменной.
Код:
str 100  name;
В этом примере объявлена строковая переменная длины 100. Размер этой переменной фиксирован и она может использоваться в выражениях WHERE.

В соответствии с рекомендациями по программированию в Axapta (Best Practices Handbook) переменные строкового типа использовать вообще не стоит. Вместо них следует объявлять переменные с помощью расширенных типов данных (Extended Data Types). Большинство EDT имееют ограничение на размер строки (за исключением EDT типа Memo) и, соответственно, переменные таких типов могут быть использованы в WHERE. Так, более правильным был бы следующий способ объявления переменной:
Код:
Name     name;
Здесь объявлена переменная типа Name, длина которого по умолчанию равна 100.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 


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

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

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