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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.01.2009, 08:10   #1  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
:( переделать запрос sql
Здравствуйте!
Помогите плз. новичку!

столкнулся со следующей проблемой:

есть запрос,
select * from RAssetLocation join UserGroupList join RAssetTransferTable
where RAssetLocation.userGroupId == UserGroupList.GroupId &&
UserGroupList.UserId == currentUserId &&
(RAssetTransferTable.NewLocation == RAssetLocation.Location || RAssetTransferTable.OldLocation == RAssetLocation.Location)

мне необходимо добавить его к this.query() я делаю примерно следующее:

qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));
qbds = qbds.addDataSource(tablenum(RAssetLocation));
qbds.addLink(fieldNum(RAssetTransferTable,NewLocation),fieldNum(RAssetLocation,Location));
qbds.joinMode(JoinMode::InnerJoin);
qbds = qbds.addDataSource(tablenum(UserGroupList));
qbds.addLink(fieldNum(RAssetLocation,userGroupId),fieldNum(UserGroupList,groupId));
qbds.joinMode(JoinMode::InnerJoin);
qbds.addRange(fieldnum(UserGroupList, UserId)).value(currentUserId);

Но здесь идет связь по
RAssetTransferTable.NewLocation == RAssetLocation.Location,
а мне необходимо сделать:
(RAssetTransferTable.NewLocation == RAssetLocation.Location || RAssetTransferTable.OldLocation == RAssetLocation.Location)

Помогите пожалуйста...
Старый 16.01.2009, 08:18   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Возможности Ranges
Надеюсь ссылка поможет Возможности Ranges

update: еще можно посмотреть вот эту ссылку http://www.axaptapedia.com/Expressions_in_query_ranges

Последний раз редактировалось SRF; 16.01.2009 в 08:23.
Старый 16.01.2009, 10:18   #3  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
:(
Не помогло!

...
qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));
qbds.addDataSource(tablenum(RAssetLocation));
qbds.addRange( FieldNum( RAssetTransferTable, recId) ).value( "((RAssetTransferTable.NewLocation = RAssetLocation.Location || RAssetTransferTable.OldLocation = RAssetLocation.Location))" );
...

Ошибка расширенного диапазона запроса: RAssetLocation.Location не является корректной парой datasource.field рядом с 64.
Старый 16.01.2009, 10:33   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от hated8 Посмотреть сообщение
Не помогло!

...
qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));
qbds.addDataSource(tablenum(RAssetLocation));
qbds.addRange( FieldNum( RAssetTransferTable, recId) ).value( "((RAssetTransferTable.NewLocation = RAssetLocation.Location || RAssetTransferTable.OldLocation = RAssetLocation.Location))" );
...

Ошибка расширенного диапазона запроса: RAssetLocation.Location не является корректной парой datasource.field рядом с 64.
А "равно" разве не "==" пишется в аксапте?
Расширенные ренджи также буквально вчера обсуждались: Расширенный фильтр в запрос или как то так

+ Всегда можно сделать info(qbds.toString()) и посмотреть что за кверю вы там наваяли...
__________________
Zhirenkov Vitaly
Старый 16.01.2009, 11:18   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от ZVV Посмотреть сообщение
А "равно" разве не "==" пишется в аксапте?
Это, наверное, будет следующей обнаруженной ошибкой
А пока, судя по позиции "64", похоже, компилятор хочет, чтобы внутренние сравнения, которые соединяются по ||, взяли в скобки.
X++:
"((RAssetTransferTable.NewLocation==RAssetLocation.Location)|| 
(RAssetTransferTable.OldLocation==RAssetLocation.Location))"
Старый 16.01.2009, 11:21   #6  
DAX is offline
DAX
Участник
 
28 / 18 (1) ++
Регистрация: 03.12.2008
Цитата:
Сообщение от ZVV Посмотреть сообщение
А "равно" разве не "==" пишется в аксапте?
Расширенные ренджи также буквально вчера обсуждались: Расширенный фильтр в запрос или как то так

+ Всегда можно сделать info(qbds.toString()) и посмотреть что за кверю вы там наваяли...
я как то тестил, вроде именно в рендже было всёравно и так и так работало) вот нашел 1 рабочий пример, там тоже "=".

А по теме, не пробуя, мне кажется проблема в скобках

вместо "((RAssetTransferTable.NewLocation = RAssetLocation.Location || RAssetTransferTable.OldLocation = RAssetLocation.Location))"

надо
"((RAssetTransferTable.NewLocation = RAssetLocation.Location) || (RAssetTransferTable.OldLocation = RAssetLocation.Location))"
За это сообщение автора поблагодарили: Gustav (3).
Старый 16.01.2009, 11:25   #7  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
Фсё перепробоваал!!!
Фанарь!

У меня почему-то даже
qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));
qbds.addRange(fieldNum(RAssetTransferTable, recid)).value("((RAssetTransferTable.NewLocation == '1 01 01 00 12'))" );

возращает ошибку!

Последний раз редактировалось hated8; 16.01.2009 в 11:39.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как преобразовать запрос в SQL-инструкцию Oloops DAX: Программирование 7 07.07.2008 20:38
Поймать SQL запрос при формировании отчета Qaz Qwerty DAX: Программирование 7 12.06.2008 01:46
SQL мониторинг + прямой запрос к SQL Alex_KD DAX: Программирование 17 29.05.2007 03:58
SQL Запрос Александр Костоусов DAX: Программирование 5 24.09.2004 12:15
Собственный SQL запрос в FormDataSource Alexey DAX: База знаний и проекты 0 20.12.2001 00:35

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

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

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