27.01.2006, 16:05 | #1 |
Участник
|
Связи и Query
Как с помощью Query сделать следующий запрос:
PHP код:
|
|
27.01.2006, 16:12 | #2 |
Участник
|
см. QueryBuildDataSource.addLink()
|
|
|
За это сообщение автора поблагодарили: (-1). |
27.01.2006, 16:33 | #3 |
Гость
|
ответ неверный, dn низачот
надо использовать addrange() примерно так, как в форме empltablelookup Последний раз редактировалось ahtoh; 27.01.2006 в 16:36. |
|
27.01.2006, 16:53 | #4 |
Участник
|
упустил из виду знак "не равно"
Код: Table1.Field1 != Table2.Field1 |
|
27.01.2006, 16:57 | #5 |
Гость
|
я где-то читал, что из-за того, что вместо ":=" написали "=" упал спутник и проект стоимостью несколько миллионов баксов накрылся таким образом
|
|
27.01.2006, 21:13 | #6 |
Moderator
|
Всем привет! Позвольте присоединиться. Тема крайне интересна (по крайней мере, для меня ).
Я имею такой 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 |
Участник
|
RLedgerSheetEngine метод query. Там такая же ситуация, только связка делается по неравенству RecId.
|
|
|
За это сообщение автора поблагодарили: Gustav (1). |
27.01.2006, 23:11 | #8 |
Moderator
|
Супер! Спасибо!
С Вашего позволения подведу радостный итог своего знакомства с расширенными диапазонами: Итак, нашёл строку как учили: 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) Запустил отчет - работает как надо! |
|