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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.08.2006, 10:23   #1  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
Использование "like" при работе с классом "QueryBuildRange"
Как задать классу "QueryBuildRange" значение c ключевым словом "like" ?

Требуется получиться запрос типа

X++:
select RassetTable
where RassetTable.AccountNum like "0*";
вариант

X++:
Query query = new Query();
QueryBuildDataSource ds = query.addDataSource(tableNum(RassetTable));
QueryRun queryRun;
;
ds.addRange(fieldNum(RassetTable, AccountNum)).value('((AccountNum like "0*"))');
queryRun = new QueryRun(query);
queryRun.next();
генерирует ошибку "Ошибка расширенного диапазона запроса", причем если слово "like" в диапазоне поменять на "==", отрабатывает без ошибок
Старый 11.08.2006, 10:29   #2  
olesh is offline
olesh
Участник
 
58 / 26 (1) +++
Регистрация: 02.04.2002
Адрес: Москва
ds.addRange(fieldNum(RassetTable, AccountNum)).value("0*");
Старый 11.08.2006, 10:31   #3  
Jabberwocky is offline
Jabberwocky
Microsoft Dynamics
Аватар для Jabberwocky
Сотрудники Microsoft Dynamics
 
274 / 307 (11) ++++++
Регистрация: 02.09.2005
Адрес: Москва
Код:
ds.addRange(fieldNum(RassetTable, AccountNum)).value("0*");
Это выражение как раз и эквивалентно конструкции like. Обратитесь к разделу Organization of queries из Developer's Guide, там описаны все типы регулярных выражений.
__________________
You should use Bing before asking dumb questions.
Старый 11.08.2006, 10:34   #4  
Hezl is offline
Hezl
Участник
Аватар для Hezl
 
138 / 16 (1) ++
Регистрация: 21.04.2004
Адрес: Moscow, Russia
угу, и еще это полезно почитать: http://axapta.mazzy.ru/lib/search/
__________________
Безвыходным мы называем положение, выход из которого нам не нравится.
Старый 11.08.2006, 10:47   #5  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
ок, а если надо диапазон типа

qbr.value('((AccountNum like "0*") || (AccountNum like "1*"))');

?
Старый 11.08.2006, 10:48   #6  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
т.е. нужен именно расширенный диапазон
Старый 11.08.2006, 10:54   #7  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
qbr.value('((AccountNum like "0*") || (AccountNum like "1*"))');
примерно так:
X++:
range   r1,r2;
;
r1 = '(AccountNum like 0*)';
r2 = '(AccountNum like 1*)';
ds.addRange(fieldNum(SomeTable, recId)).value(r1);
ds.addRange(fieldNum(SomeTable, recId)).value(r2);
PS:
разбил условие на 2 строки так как иногда (по непонятным причинам) такие условия то работают, то требуют какуюгить скобку (хотя их достаточно)
PPS: (по непонятным причинам) - т.е если источник данных этого условия первый - то можно 1 строкой , если не первый то 1-й строкой не фурычит, разбив на 2 и добавив - все нормально работает
если одной строкой то она выглядет так : ((AccountNum like 0*)||(AccountNum like 1*))
сорри нада like вместо ==

Последний раз редактировалось Jony; 11.08.2006 в 11:03.
Старый 11.08.2006, 10:55   #8  
Jabberwocky is offline
Jabberwocky
Microsoft Dynamics
Аватар для Jabberwocky
Сотрудники Microsoft Dynamics
 
274 / 307 (11) ++++++
Регистрация: 02.09.2005
Адрес: Москва
Вы обратились к ссылкам, которые Вам порекомендовали? Читайте документацию, говорят, помогает...
__________________
You should use Bing before asking dumb questions.
Старый 11.08.2006, 10:55   #9  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
пардон, я слегка не правильно написал... особенность, что нужно расширенные диапазон через "или" на разные поля, т.е. типа

qbr.value('((AccountNum like "0*") || (AccountGroup like "1*"))');
Старый 11.08.2006, 11:01   #10  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Поиск - великая вещь! Подружитесь с ним, помогает!
Возможности Ranges
Старый 11.08.2006, 11:02   #11  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
если разные поля, то точно так же
qbr.value('((AccountNum like "0*") || (AccountNum like "1*"))');
примерно так:
range r1,r2;
;
r1 = '(AccountNum like 0*)';
r2 = '(AccountGroup like 1*)';
ds.addRange(fieldNum(SomeTable, recId)).value(r1);
ds.addRange(fieldNum(SomeTable, recId)).value(r2);
или
ds.addRange(fieldNum(SomeTable, recId)).value('((AccountNum like 0*)||(AccountGroup like1*)));

что одно и тоже ( но иногда работеат то одно то другое )
Старый 11.08.2006, 11:20   #12  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
ds.addRange(fieldNum(SomeTable, recId)).value('((AccountNum like "0*")||(AccountGroup like"1*")));

вот так вот не работает... а именно так и надо бы
Старый 11.08.2006, 11:35   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от poul
ds.addRange(fieldNum(SomeTable, recId)).value('((AccountNum like "0*")||(AccountGroup like"1*")));

вот так вот не работает... а именно так и надо бы
Честно говоря, не совсем понял.
Вам написали одно, а вы пробуете другое

Я например не могу найти у вас закрывающую кавычку для value ('....')

Щас проверю в Аксапте
Старый 11.08.2006, 11:43   #14  
zelen is offline
zelen
Участник
 
64 / 13 (1) ++
Регистрация: 08.11.2004
Адрес: г.Москва
вот так попробуйте :
ds.addRange(fieldNum(SomeTable, recId)).value('(AccountNum like "0*" || AccountGroup like"1*"));
Старый 11.08.2006, 11:44   #15  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
Цитата:
Сообщение от kashperuk
Честно говоря, не совсем понял.
Вам написали одно, а вы пробуете другое

Я например не могу найти у вас закрывающую кавычку для value ('....')

Щас проверю в Аксапте
есть такая хорошая фраза "отличие собаки от льва : когда собаке кидаешь палку, она смотрит на палку, когда кидаешь льву, он смотрит на человека кидающего палку"... мораль : смотрите в суть...

и ещё за сцылки очень большое спасибо, но как говорицца не по делу... потомучто задать буквально одной строкой надо фильтр аля "AccountNum like '0*"', только вот с синтакцисом проблемы ... вариант "0*" не подходит
Старый 11.08.2006, 11:48   #16  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
Цитата:
Сообщение от zelen
вот так попробуйте :
ds.addRange(fieldNum(SomeTable, recId)).value('(AccountNum like "0*" || AccountGroup like"1*"));
скажите честно у вас такой вариант работает ?
у меня вооопсче ни в каком виде не принимает слово "like"... с количеством скобочек тоже эксперементировал
Старый 11.08.2006, 11:50   #17  
poul is offline
poul
Участник
 
16 / 11 (1) +
Регистрация: 11.08.2006
меняю слово "like" на "==" все работает... может быть это слово вобще нельзя использовать ?
Старый 11.08.2006, 11:51   #18  
zelen is offline
zelen
Участник
 
64 / 13 (1) ++
Регистрация: 08.11.2004
Адрес: г.Москва
сорри, не совсем так
Старый 11.08.2006, 12:20   #19  
Hezl is offline
Hezl
Участник
Аватар для Hezl
 
138 / 16 (1) ++
Регистрация: 21.04.2004
Адрес: Moscow, Russia
Тогда еще это почитайте Возможность использования Like в QueryBuildRange
__________________
Безвыходным мы называем положение, выход из которого нам не нравится.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Возможность использования Like в QueryBuildRange Koriolis DAX: Программирование 5 14.02.2005 17:43
Недостаточно прав на использование таблицы "Common" (UNKNOWN) Ace of Database DAX: Программирование 6 26.11.2004 12:59
Как в range на одно и тоже контейнерное поле поставить условие: "исключ." && like Pustik DAX: Программирование 15 03.07.2004 11:54
"LIKE" и "OR" в "qbds" @x DAX: Программирование 14 20.01.2004 13:20
Использование складской аналитики "Ячейка" Елена Сысовская DAX: Функционал 3 25.03.2003 20:27

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

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

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