|
![]() |
#1 |
Участник
|
![]()
Здравствуйте!
Помогите плз. новичку! столкнулся со следующей проблемой: есть запрос, 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) ![]() |
|
![]() |
#2 |
Участник
|
Возможности Ranges
Надеюсь ссылка поможет Возможности Ranges
update: еще можно посмотреть вот эту ссылку http://www.axaptapedia.com/Expressions_in_query_ranges Последний раз редактировалось SRF; 16.01.2009 в 08:23. |
|
![]() |
#3 |
Участник
|
![]()
Не помогло!
![]() ... 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. |
|
![]() |
#4 |
MCITP
|
![]() Цитата:
Сообщение от 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 |
|
![]() |
#5 |
Moderator
|
Это, наверное, будет следующей обнаруженной ошибкой
![]() А пока, судя по позиции "64", похоже, компилятор хочет, чтобы внутренние сравнения, которые соединяются по ||, взяли в скобки. X++: "((RAssetTransferTable.NewLocation==RAssetLocation.Location)||
(RAssetTransferTable.OldLocation==RAssetLocation.Location))" |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от ZVV
![]() А "равно" разве не "==" пишется в аксапте?
Расширенные ренджи также буквально вчера обсуждались: Расширенный фильтр в запрос или как то так + Всегда можно сделать info(qbds.toString()) и посмотреть что за кверю вы там наваяли... А по теме, не пробуя, мне кажется проблема в скобках вместо "((RAssetTransferTable.NewLocation = RAssetLocation.Location || RAssetTransferTable.OldLocation = RAssetLocation.Location))" надо "((RAssetTransferTable.NewLocation = RAssetLocation.Location) || (RAssetTransferTable.OldLocation = RAssetLocation.Location))" |
|
|
За это сообщение автора поблагодарили: Gustav (3). |
![]() |
#7 |
Участник
|
Фсё перепробоваал!!!
![]() Фанарь! У меня почему-то даже 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. |
|