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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.03.2006, 19:23   #1  
Vadik Shiryakoff is offline
Vadik Shiryakoff
Участник
 
2 / 10 (1) +
Регистрация: 26.10.2005
Адрес: Kiev city
like запрос с использованием query
Здравствуйте, Уважаемые!
Подскажите, пожалуйста, можно ли построить sql-запрос с использованием like на основе query классов. Что-то вроде:
Код:
Table1 t1;
Table2 t2;

select t1 join t2 where t1.Field1 like t2.Field1;
Вариант
Код:
qbds = q.addDataSource(tablenum(Table1), 't1');
qbds1 = qbds.addDataSource(tablenum(Table2), 't2');
qbds1.addRange(fieldnum(table2, field1)).value('(t1.Field1) like (t2.Field1)');
не работает.. Возможно ли вообще построение like запросов с использованием query или это нереально?
Заранее спасибо!
Старый 09.03.2006, 06:03   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Vadik Shiryakoff
Возможно ли вообще построение like запросов с использованием query или это нереально?
Нет. Штатными средствами не получится
http://axapta.mazzy.ru/lib/search/
__________________
полезное на axForum, github, vk, coub.
Старый 09.03.2006, 12:08   #3  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Регистрация: 27.10.2005
ну почемуж, ведь можно так

PHP код:
qbds1.addRange(fieldnum(table2field1));
qbds1.value("abc*");   // преобразуется в  ... WHERE ((field1 LIKE abc*))
или
qbds1
.value("! abc*"); // ... WHERE ((NOT (field1 LIKE abc*))) 
можно конечно сформировать строковую переменную и её передать в value()
Старый 09.03.2006, 12:18   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
2Ashir:

Это понятно, но вопрос в том, как сделать связку 2-х полей через like. А вот это действительно не получится сделать через query.
__________________
Андрей.
За это сообщение автора поблагодарили: Lucky13 (1).
Старый 09.03.2006, 13:30   #5  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Регистрация: 27.10.2005
извиняюсь за невнимательность
Старый 09.03.2006, 13:32   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
вообще бы нужны еще одни скобки
X++:
qbds1.addRange(fieldnum(table2, field1)).value('((t1.Field1) like (t2.Field1))');
Старый 10.03.2006, 13:17   #7  
Vadik Shiryakoff is offline
Vadik Shiryakoff
Участник
 
2 / 10 (1) +
Регистрация: 26.10.2005
Адрес: Kiev city
Пробовали, еще одни скобки не помогали - в этом случае выдается ошибка типа "Query extended range failure: Right parenthesis expected near pos 19."
Старый 13.03.2006, 12:05   #8  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Не знаю как выражение like (не пробовал и не исследовал), но если уж очень необходимо "развить" свой запрос, в условиях когда стандартным addRange уже "слов не хватает", вот работающий пример:

q.dataSourceNo(2).addRange(fieldNum(PriceDiscTable, RecId)).value(
strFmt("((" + fieldStr(PriceDiscTable, FromDate) + "<= %1) && ((" +
fieldStr(PriceDiscTable, ToDate) + ">= %1) || (" +
fieldStr(PriceDiscTable, ToDate) + "= %2) ))",
date2StrXpp(valueTransDate), date2StrXpp(DateNull() )));

Данный пример реализует следующее выражение:
(priceDiscTable.fromDate <= transDate && (priceDiscTable.toDate >= transDate || !priceDiscTable.toDate))

Обрати внимание, на то что в данном случае привязка начинает "плясать" от RecId. Поле RecId в данном случае выбрано как самое "нейтральное".
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
За это сообщение автора поблагодарили: decoder (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
palleagermark: Sample union query from AX 2009 Blog bot DAX Blogs 0 11.07.2008 20:05
Передача параметра в Запрос(Query) Zoe DAX: Программирование 5 07.07.2008 15:27
Ручной запрос: как указать Like? Arahnid DAX: Программирование 5 23.05.2007 18:36
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
query и like ... NetBus DAX: Программирование 1 22.11.2005 18:49
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.