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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2006, 16:05   #1  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Связи и Query
Как с помощью Query сделать следующий запрос:
PHP код:
select Table1
join Table2
where Table1
.Field1 != Table2.Field1 &&
          
Table1.Field2 == Table2.Field2 
Старый 27.01.2006, 16:12   #2  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
см. QueryBuildDataSource.addLink()
За это сообщение автора поблагодарили:  (-1).
Старый 27.01.2006, 16:33   #3  
ahtoh
Гость
 
n/a
ответ неверный, dn низачот
надо использовать addrange() примерно так, как в форме empltablelookup

Последний раз редактировалось ahtoh; 27.01.2006 в 16:36.
Старый 27.01.2006, 16:53   #4  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
упустил из виду знак "не равно"
Код:
Table1.Field1 != Table2.Field1
тогда действительно через расширенную фильтрацию в range
Старый 27.01.2006, 16:57   #5  
ahtoh
Гость
 
n/a
я где-то читал, что из-за того, что вместо ":=" написали "=" упал спутник и проект стоимостью несколько миллионов баксов накрылся таким образом
Старый 27.01.2006, 21:13   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Всем привет! Позвольте присоединиться. Тема крайне интересна (по крайней мере, для меня ).
Я имею такой SQL-запрос в Oracle к таблице Axapta - LedgerTrans (т.е. Бухгалтерские проводки):

SELECT
LedgerTrans_L.TransDate AS TDATE,
LedgerTrans_L.Voucher AS VOUCHER,
LedgerTrans_L.Txt AS TXT,
LedgerTrans_L.AccountNum AS L_ACCOUNT,
LedgerTrans_R.AccountNum AS R_ACCOUNT,
LedgerTrans_L.AmountMST AS L_AMOUNT,
LedgerTrans_R.AmountMST AS R_AMOUNT,
LedgerTrans_L.Crediting AS L_CREDITING,
LedgerTrans_R.Crediting AS R_CREDITING
FROM
LEDGERTRANS LedgerTrans_L,
LEDGERTRANS LedgerTrans_R
WHERE LedgerTrans_L.TransDate = '20.01.2006'
AND LedgerTrans_L.DataAreaId = LedgerTrans_R.DataAreaId
AND LedgerTrans_L.BondBatch_RU = LedgerTrans_R.BondBatch_RU
AND LedgerTrans_L.BondBatchTrans_RU = LedgerTrans_R.BondBatchTrans_RU
AND LedgerTrans_L.Crediting <> LedgerTrans_R.Crediting

который выводит примерно следующее:
TDATE __ VOUCHER TXT ________ L_ACCOUNT R_ACCOUNT L_AMOUNT R_AMOUNT L_CREDITING R_CREDITING
-------------------------------------------------------------------------------------------
20.01.06 3 _____ оборудование 60 ______ 10 ______ -4000 __ 4000 ___ 1 _________ 0
20.01.06 3 _____ оборудование 10 ______ 60 ______ 4000 ___ -4000 __ 0 _________ 1
20.01.06 6 _____ светильник _ 60 ______ 19 ______ -500 ___ 500 ____ 1 _________ 0
20.01.06 6 _____ светильник _ 19 ______ 60 ______ 500 ____ -500 ___ 0 _________ 1
20.01.06 7 _____ телефон ____ 60 ______ 19 ______ -2000 __ 2000 ___ 1 _________ 0
20.01.06 7 _____ телефон ____ 19 ______ 60 ______ 2000 ___ -2000 __ 0 _________ 1

ВОПРОС: как сей селект воплотить в Axapta в виде View или Query?
Самый непонятный мне момент как раз и связан с неравенством полей Crediting слева и справа.
Куда их заталкивать? В Ranges? В Relations? Как?
Старый 27.01.2006, 21:49   #7  
_AnK_ is offline
_AnK_
Участник
Аватар для _AnK_
Ex AND Project
 
160 / 31 (2) +++
Регистрация: 03.11.2005
Адрес: СПб
RLedgerSheetEngine метод query. Там такая же ситуация, только связка делается по неравенству RecId.
За это сообщение автора поблагодарили: Gustav (1).
Старый 27.01.2006, 23:11   #8  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Супер! Спасибо!

С Вашего позволения подведу радостный итог своего знакомства с расширенными диапазонами:

Итак, нашёл строку как учили:
qbr.value('(' + fieldStr(LedgerTrans, RecId) + '!=' + qBd.parentDataSource().name() + '.' + fieldStr(LedgerTrans, RecId) +')');


Создал по аналогии:
(Crediting!=LedgerTrans_L.Crediting) --- Именно LedgerTrans_L, а не LedgerTrans, потому что я переименовал датасорсы c _L и _R.


Вставил в отчет в Range ПОДЧИНЕННОГО датасорса,
получилось так:
Name : Crediting
Table: LedgerTrans
Field: Crediting
Value: (Crediting!=LedgerTrans_L.Crediting)

Запустил отчет - работает как надо!
Теги
запрос (query), ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
palleagermark: Sample union query from AX 2009 Blog bot DAX Blogs 0 11.07.2008 20:05
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
Установка условия ИЛИ (OR) в Query Zeratul DAX: Программирование 3 22.06.2006 14:28
Проблема с составлением Query axaLearner DAX: Программирование 10 01.12.2005 15:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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