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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2003, 17:27   #1  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
? WHERE и текстовое поле
Сообщение компилятора:
"Контейнерные и текстовые поля не могут быть использованы в выражении WHERE."

PHP код:
// Job
static void WhereAndStringField(Args _args)
{
    
int getCount(str _computerName)
    {
      
SysUserLog SysUserLog_Table;
      ;
      
select count(RecIDfrom SysUserLog_Table where SysUserLog_Table.Computername == _computerName;
      return 
SysUserLog_Table.RecId;
    }
    ;
    
info(int2str(getCount('SNOWMAN')));

Народ, поделитесь как вы обходите такое ограничение?
__________________
Дмитрий Гришин
Старый 17.10.2003, 17:35   #2  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Объяви _computerName как Name, например.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.10.2003, 17:42   #3  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
PHP код:
static void WhereAndStringField(Args _args)
{
    
int getCount(str 10 _computerName)
    {
      
SysUserLog SysUserLog_Table;
      ;
      
select count(RecIDfrom SysUserLog_Table where SysUserLog_Table.Computername == _computerName;
      return 
SysUserLog_Table.RecId;
    }
    ;
    
info(int2str(getCount('SNOWMAN')));

__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 17.10.2003, 17:44   #4  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Цитата:
Изначально опубликовано Maxim Gorbunov
Объяви _computerName как Name, например.
Да, спасибо, работает...

а что это за тип Name? где о нем почитать, и какие еще типы бывают и где их применять следует?
__________________
Дмитрий Гришин
Старый 17.10.2003, 17:49   #5  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
PHP код:
static void WhereAndStringField(Args _args)
{
    
int getCount(BMComputerID _computerName)
    {
      
SysUserLog SysUserLog_Table;
      ;
      
select count(RecIDfrom SysUserLog_Table where SysUserLog_Table.Computername == _computerName;
      return 
SysUserLog_Table.RecId;
    }
    ;
    
info(int2str(getCount('SNOWMAN')));

__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 17.10.2003, 17:49   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Тип Name - обычный Extended Data Type. Его можно увидеть в AOT в соответствующей ветке.

На самом деле, штука тут не в типе Name как таковом, а в том, чтобы указать длину строки явно. То же самое советует Юрий: он указывает, что длина _computerName - 10 символов. Указывая тип 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
Старый 17.10.2003, 17:52   #7  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
Но правильнее будет использовать не Name, а его родной BMComputerID(str 17).
__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 17.10.2003, 17:59   #8  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Цитата:
Изначально опубликовано Maxim Gorbunov
Тип Name - обычный Extended Data Type. Его можно увидеть в AOT в соответствующей ветке.

На самом деле, штука тут не в типе Name как таковом, а в том, чтобы указать длину строки явно. То же самое советует Юрий: он указывает, что длина _computerName - 10 символов. Указывая тип Name, фактически указываешь, что длина строки - 100 символов.
Ребята, спасибо за ликбез!

Просто я был немного удивлен, когда получил такую ошибку компилятора...

PS
Мой пример кода практического значения не имеет, я его составлял, чтобы вы могли получить сообщение компилятора об ошибке...
__________________
Дмитрий Гришин
Старый 19.10.2003, 00:08   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Рискну добавить. Объявление
str myVariable;
соответствует объявлению memo-поля в SQL.

Вы пытались заставить SQL сравнить memo-поле с NCHAR полем. Об этом и была ошибка.
Старый 20.10.2003, 10:19   #10  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
ИМХО
Будь сообщение компилятора: "Контейнерные и текстовые поля не могут быть использованы в выражении WHERE." чуть более информативным - оно бы не вызывало ступор при первом появлении...
__________________
Дмитрий Гришин
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сопоставление оплат клиента, переносов сальдо-поле накладная в общем журнале? Aquarius DAX: Функционал 3 28.01.2009 12:51
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Поле "Оплатить до" в строке общего журнала longson DAX: Функционал 7 29.03.2008 14:38
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Не могу, а точнее не знаю, как вытащить текстовое поле из таблицы заказов на печать. zarik DAX: Программирование 2 25.10.2004 10:07

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

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

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